修复Android ROM的Google网络定位

前言

一些定制、第三方 ROM 在安装了 Google 框架后,仍然无法使用其网络定位功能。我在网上搜索了许多资料,整理如下。 本文假设你的设备已经 Root,并已经安装了 Google 框架。我测试用的 ROM 为一加氢 OS。

一、准备工具

需要准备的工具有 zipunzipapktooladbzipalign,以及一个好使的文本编辑器。

二、提取需要的资源

取出 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.fusedcom.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_fusedLocationProviderPackageNamecom.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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信技能树

生信主管应该了解的十个Linux知识点

linux的发行版非常多,其实本质上差别不大,哪怕是mac的OS应该是也是同样的管理操作模式。以下针对于ubuntu适用,当然ubuntu本身也有版本的区别,目...

33140
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

41900
来自专栏流星博客

在百度云BCH中WordPress实现伪静态和SSL

原文来自流星博客:https://www.liues.cn/lx-449.html

21340
来自专栏大魏分享(微信公众号:david-share)

红帽技术干货速递系列之1:RHV4实验环境快速部署指南

大卫说: 本文是大卫同事马林根据实验完成的RHV4.0 step by step的安装步骤。这对于我们在PoC环境中部署RHV有很大的帮助。大卫也欢迎读者朋友们...

41940
来自专栏weixuqin 的专栏

Python3 + django2.0 + apache2 + ubuntu14部署网站上线

32830
来自专栏张善友的专栏

iis7 发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏...

41580
来自专栏乐百川的学习频道

做一个运行Python文件的Atom插件

最近在学习Python,自然也安装了Atom编辑器的一些Python插件。有一个插件名字叫做atom-python-run,作用很简单,就是按F5运行当前Pyt...

30970
来自专栏个人随笔

Idea 破解 (个人整理)

89260
来自专栏散尽浮华

[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的...

1.4K90
来自专栏SDNLAB

OpenStack Spice协议配置

Enable SPICE HTML5 Console Access in OpenStack Mikata 环境: CentOS7环境系统 + OpenStac...

62460

扫码关注云+社区

领取腾讯云代金券