我已在 Nexus 5 设备上安装了android-6.0.1_r72 AOSP Rom。 rom没有附带 Google Apps 。
我已尝试从following site安装,但在安装后我得到了
不幸的是,Google Play服务已停止
我必须安装 Google App 的特殊版本吗?
更新
我在logcat中发现了这个错误:
01-17 11:14:52.750 3525 5402 E AndroidRuntime:致命异常:GoogleLocationService
01-17 11:14:52.750 3525 5402 E AndroidRuntime:处理:com.google.android.gms.persistent,PID:3525
01-17 11:14:52.750 3525 5402 E AndroidRuntime:java.lang.SecurityException:" gps"位置提供程序需要ACCESS_FINE_LOCATION权限。
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.os.Parcel.readException(Parcel.java:1620)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.os.Parcel.readException(Parcel.java:1573)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.location.ILocationManager $ Stub $ Proxy.addGpsStatusListener(ILocationManager.java:741)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.location.LocationManager.addGpsStatusListener(LocationManager.java:1522)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:at aker.a(:com.google.android.gms:1064)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:at akbc.b(:com.google.android.gms:6342)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:at akbc.handleMessage(:com.google.android.gms:279)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:102)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.os.Looper.loop(Looper.java:148)
01-17 11:14:52.750 3525 5402 E AndroidRuntime:在android.os.HandlerThread.run(HandlerThread.java:61)
更新#2 :
我仍然收到错误,因此我在GApps git中打开了一个问题。
答案 0 :(得分:10)
你做错了三件事:
1.您通常需要安装从您想要运行的Android版本中提取的APK
2.不要从非谷歌网站下载谷歌APK
第3。要安装系统应用程序,您需要先将系统分区重新安装为读写。
以下是如何获取然后安装正版Google APK作为系统应用程序:
使用您的AOSP建筑物编号来获得匹配工厂图像
您为AOSP Codenames, Tags, and Build Numbers提供的链接包含您需要匹配的内部版本号。
在页面中搜索 android-6.0.1_r72 ,相应的内部版本号为 M4B30X 。
您可以在他们的Factory Images的帮助下,直接从Google的好人那里获得真正的APK,而不是使用来自随机网站的不受信任的APK(一个可怕的想法)。 在页面中搜索您的内部版本号 M4B30X 并下载image。 接下来,cd进入下载图像的文件夹,并检查SHA-256校验和:
$ cd Downloads
$ echo "10cfaa5c8ff1753af20283f5e5f938ddebbad094c4e22aadbd925ecdc806e8b3
hammerhead-m4b30x-factory-10cfaa5c.zip" | sha256sum -c
应该打印:hammerhead-m4b30x-factory-10cfaa5c.zip:好的 - 如果没有,请再次下载图像。
FLASH FACTORY IMAGE和PULL GENUINE GOOGLE APK
1.闪烁出厂图像并启动进入系统
2.激活开发人员选项并允许USB调试'
3.现在使用ADB拉取(获取)100%正版Google Play APK:
$ adb pull /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
$ adb pull /system/priv-app/Phonesky/Phonesky.apk
$ adb pull /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
FLASH AOSP HAMMERHEAD M4B30X和PUSH GENUINE GOOGLE APK
确保闪烁 userdebug 或 eng 变体。
将APK文件推送到您的SD卡:
$ adb push GoogleServicesFramework.apk /sdcard/
$ adb push Phonesky.apk /sdcard/
$ adb push PrebuiltGmsCore.apk /sdcard/
手动安装APK作为系统应用程序
$ sudo adb shell
找到系统分区: root @ hammerhead:/ #mount | grep" / system" 你应该回来: /dev/block/platform/msm_sdcc.1/by-name/system / system ext4 ro,seclabel,relatime,data = ordered 0 0
现在将该系统分区挂载为rw(读写)
root@hammerhead:/ # mount -o remount,rw -t ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system
root@hammerhead:/ # cd /system/priv-app
root@hammerhead:/ # mkdir GoogleServicesFramework
root@hammerhead:/ # mkdir Phonesky
root@hammerhead:/ # mkdir PrebuiltGmsCore
root@hammerhead:/ # cp /sdcard/GoogleServicesFramework.apk GoogleServicesFramework/GoogleServicesFramework.apk
root@hammerhead:/ # cp /sdcard/Phonesky.apk Phonesky/Phonesky.apk
root@hammerhead:/ # cp /sdcard/PrebuiltGmsCore.apk PrebuiltGmsCore/PrebuiltGmsCore.apk
root@hammerhead:/ # chmod 755 GoogleServicesFramework
root@hammerhead:/ # chmod 755 Phonesky
root@hammerhead:/ # chmod 755 PrebuiltGmsCore
root@hammerhead:/ # chmod 644 GoogleServicesFramework/GoogleServicesFramework.apk
root@hammerhead:/ # chmod 644 Phonesky/Phonesky.apk
root@hammerhead:/ # chmod 644 PrebuiltGmsCore/PrebuiltGmsCore.apk
配置AOSP
授予Google Apps权限
在手机上,进入设置>应用
在溢出菜单(齿轮按钮右上角)
选择显示系统
导航至 Google Play商店并允许其拥有所有权限
对 Google Services Framework 和 Google Play服务(PrebuiltGmsCore)执行相同的操作。
现在确保所有默认AOSP应用都已授予其各自的权限
默认情况下,AOSP会关闭许多权限
允许以下应用的所有权限:
Android键盘
浏览器
日历
相机
时钟
联系方式
电子邮件
画廊
Launcher3
消息
音乐
电话强>
*如果出于某种原因你不想禁用它,那就是看上去非常笨拙的搜索。
现在确保已连接Wifi和/或您的SIM卡已插入并提供信号
<强>重新启动。强>
当一切都被排序时,你应该有一些简短的错误,但如果错误继续,另一次重启应该修复它。
答案 1 :(得分:4)
andDevW's answer涵盖了详细信息。
添加另一种方法来完成第二步。而不是 FLASHING FACTORY IMAGE和PULL GENUINE GOOGLE APK ,
您可以使用simg2img将system.img文件转换为可安装的卷
simg2img /home/<user>/../aosp/../out/system.img system.raw
sudo mount -t ext4 -o loop system.raw /system
您可以在安装后导航system.raw图像,并且可以访问/ priv-app和其他目录以获取所需的apks,在/ system的已安装卷中。
您可以使用它来从Google的工厂映像版本中获取来自system.img的apks。
答案 2 :(得分:1)
这取决于您的AOSP中这些应用的目的。
我可能错了,但为了为自定义设备安装基于Google Play Service的应用,需要与Google签署协议并通过所有验证测试。
答案 3 :(得分:0)
您获得的错误与运行时权限有关,这是Android API级别23(Marshmallow以后)中引入的概念。在此之前,应用程序需要在安装过程中隐式提供的所有权限,即您同意通过安装它来为应用程序提供必要的权限。
谷歌彻底改变了这一点。从API级别23开始,不仅应用程序必须在清单中声明它需要的所有权限,而且如果这些权限中的任何一个被归类为危险,那么应用程序必须在运行时请求它。应用程序必须如何执行此操作 - https://developer.android.com/training/permissions/requesting.html我解释了所有这些只是为了给你一个背景。在您的情况下,问题是您尝试安装的应用程序未设计为在API级别23或更高级别上运行。当你安装它们时,它们没有被隐式地赋予一些权限,并且由于应用程序在运行时没有请求它们,最终它们最终没有做某些事情的必要许可(在你的情况下访问设备位置)。
长话短说,试着找一个专为Marshmallow和向上设计的应用程序版本。不幸的是,Google以某种程度限制向后兼容性的方式进行了此更改。所以你无法逃脱。查找较新版本