一些定制、第三方 ROM 在安装了 Google 框架后,仍然无法使用其网络定位功能。我在网上搜索了许多资料,整理如下。 本文假设你的设备已经 Root,并已经安装了 Google 框架。我测试用的 ROM 为一加氢 OS。
一、准备工具
需要准备的工具有 zip
、unzip
、apktool
、adb
、zipalign
,以及一个好使的文本编辑器。
二、提取需要的资源
取出 ROM
中的 framework-res.apk
,并反编译得到需要修改的文件:
adb pull /system/framework/framework-res.apk
apktool if framework-res.apk
apktool d framework-res.apk
三、修改文件
修改位置提供商相关设置,使用 Google 提供网络定位。
1、修改 framework-res/res/values/arrays.xml
,找到 config_locationProviderPackageNames
的位置,确保 Google 在列表中。如我的 ROM 默认只有 com.android.location.fused
和 com.amap.android.location
两项,这时应当加入 com.google.android.gms
,使得最终结果类似这样:
<string-array name="config_locationProviderPackageNames">
<item>com.google.android.gms</item>
<item>com.android.location.fused</item>
<item>com.amap.android.location</item>
</string-array>
2、修改 framework-res/res/values/bools.xml
,启用 config_enableNetworkLocationOverlay
和 config_enableFusedLocationOverlay
。如果原来的值是 false
,把它们改成 true
:
<bool name="config_enableNetworkLocationOverlay">true</bool>
<bool name="config_enableFusedLocationOverlay">true</bool>
3、修改 framework-res/res/values/strings.xml
,设置 config_networkLocationProviderPackageName
为 com.google.android.gms
。
<string name="config_networkLocationProviderPackageName">com.google.android.gms</string>
(我一并修改了 config_fusedLocationProviderPackageName
为 com.android.location.fused
,虽然可能是不必要的)
四、应用修改
1、重新编译,并从结果中提取出需要的部分:
apktool b framework-res
unzip -j framework-res/dist/framework-res.apk resources.arsc -d ./
2、将提取出的文件替换到原来的 framework-res.apk
中:
cp framework-res.apk framework-res-modified.apk
zip -0 framework-res-modified.apk resources.arsc
3、对资源进行 4 字节对齐处理:
zipalign 4 framework-res-modified.apk framework-res-aligned.apk
4、将修改后的 ROM 和更新脚本上传到手机: 这个更新脚本是我自己写的,主要处理了权限问题:
install-framework-res.sh:
#!/bin/sh
mount -o remount,rw /system
mv "$1" /system/framework-res.apk
chmod 644 /system/framework-res.apk
chown root:root /system/framework-res.apk
mv /system/framework-res.apk /system/framework/framework-res.apk
和修改后的 framework-res-aligned.apk
一起上传到手机:
adb push framework-res-aligned.apk install-framework-res.sh /sdcard/
5、运行脚本,替换 apk
文件:
adb shell
如果此时得到了 $
命令符,请先获得 root
:
su
然后运行脚本:
sh /sdcard/install-framework-res.sh /sdcard/framework-res-aligned.apk
6、重启到 Recovery
,清空 Cache & Dalvik Cache
,再次重启回到系统。
至此,你的手机应该重新拥有了网络定位功能,赶快打开一个除地图以外的需要定位的 App (比如 Ingress)测试吧!
https://www.wuxiancheng.com/repair-hongmi-google-maps-network-location.html http://en.miui.com/thread-70357-1-1.html
Last modification:May 13th, 2018 at 06:07 pm
© The copyright belongs to the author
Support
If you think my article is useful to you, please feel free to appreciate
×Close