修复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 条评论
登录 后参与评论

相关文章

来自专栏无原型不设计

【Mockplus教程】安装Mockplus

MAC上安装Mockplus 1 下载 进入摩客官网桌面端下载页面,选择MAC版本下载; 2 安装 下载完成后,打开dmg包,将Mockplus图标拖...

3479
来自专栏逸鹏说道

Ubuntu离线安装VSCode(附带前期准备工作)

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 在说正式步骤前先把准备工作做到位: 1...

2976
来自专栏狐狸

Chrome的插件扩展程序安装目录是什么?在哪个文件夹?

1.windows xp中chrome插件默认安装目录位置: C:\Documents and Settings\用户名\Local Settings\App...

1234
来自专栏FreeBuf

新型渗透思路:两种密码重置之综合利用

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区...

632
来自专栏c#开发者

android studio 更新 Gradle错误解决方法

Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Proje...

2717
来自专栏跟着阿笨一起玩NET

将Log4net的配置配置到的独立文件中

本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780

442
来自专栏华仔的技术笔记

iOS 支付宝 ’openssl/asn1.h' file not found 的问题解决办法

3415
来自专栏我的博客

Can´t create table ´admin_table´ (errno: 13)错误解决

今天将数据库导出,然后打算导入到虚拟机的数据库中,结果提示了Can´t create table ´photo´ (errno: 13) 。 然而当我正在郁闷的...

2608
来自专栏漏斗社区

工具 | w3af系列 入门篇(二)

上期斗哥已经为大家介绍了w3af扫描器的安装。本期,我们将学习如何使用w3af进行扫描。开始扫描任务在本文第四部分,如果你第一次使用w3af,建议从第一部分开始...

3376
来自专栏python3

socket作业——ftp登录程序

3.登录成功之后,调用客户端,将用户名和密码(第一层摘要算法加密),使用TCP发送给服务器

641

扫码关注云+社区