如何修复红米Note上的Google地图网络定位

在红米上安装了Google服务框架和应用以后,发现地图里无法进行网络(基站/WiFi)定位,或者只在极少数情况下能定位成功一两次,但在高德地图里就可以成功定位。另外用GPS定位都没有问题。下面把我的解决方案。

支持:红米手机1S 和 红米Note

警告:需要root你的手机,以及修改系统文件。这些可能导致你的手机变砖以及失去保修。本人不对任何可能造成的损失负责任。请三思而后行,以下步骤需要大量命令行操作。

一、需要的准备工作:

  1. 备份你的手机数据!!
  2. root你的手机。不会的自已找,就不重复了
  3. 安装root的文件管理器,一般用RE或ES文件浏览器。
  4. 下载APKTool,另外要运行apktool,还需要安装JDKJRE
  5. 4.x版适用的google apps

二、反编译和回编译:

  1. 在手机的[开发人员设置]中打开adb调试支持,手机连接电脑后把framework-res.apk复制到电脑,用RE也可以文件浏览器:
    C:\>adb pull /system/framework/framework-res.apk
  2. 用apktool反编译framework-res.apk:
    C:\>apktool if framework-res.apk
    C:\>apktool d framework-res.apk framework
  3. 用Notepad++编辑器打开 framework/res/values/arrays.xml,找到<string-array name="config_locationProviderPackageNames">所在的行,增加一行(注意Google粗体内容):
    <string-array name="config_locationProviderPackageNames">
    <item>com.android.location.fused</item>
    <item>com.baidu.map.location</item>
        <item>com.google.android.location</item>
    </string-array>

    修改好后,保存。
  4. 用apktool重新回编译framework资源:
    C:\>apktool b framework
  5. 在framework/dist/目录下有编译完成的新apk,从里面解压出resources.arsc文件。只需要这一个文件。
  6. 用压缩文件工具把resources.arsc添加到原始的framework-res.apk里,把压缩选项设置成“只保存”,不加压缩。
  7. 用zipalign工具确保新的apk的文件对齐,为了确保运行效率(4个字节是一个性能很好的值):
    C:\>zipalign 4 framework-res.apk framework-res-ok.apk

二、修改过程:

  1. 把google apps包里解压出来的NetworkLocation.apk和编译好的framework-res-ok.apk复制到手机的SD卡,并改名为 framework-res.apk 。
  2. 删除 /system/apps/BaiduNetworkLocation.apk 文件。
  3. 用RE把这上面两个apk移动到 /system/ 目录,并把两个文件的权限都修改成 rw-r--r-- (用户可以读写,组和其他用户只读) 。
  4. 把NetworkLocation.apk从 /system/ 目录移动/system/apps/ 目录 。
  5. 把新的framework-res.apk从 /system/ 目录移动到 /system/framework/ 目录,覆盖的framework-res.apk,大功告成!

四、重启手机

手机重启后,系统会出现一个对话框,询问你是或否同意Google收集匿名的位置信息,这就表示Google的网络定位(NetworkLocation.apk)已经正常工作了。打开Google地图,你会发现熟悉的(基站/WiFi)定位又回来啦!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: