在AOSP Build

时间:2017-01-17 11:09:31

标签: android android-source

我已在 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中打开了一个问题。

4 个答案:

答案 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文件转换为可安装的卷

  1. 使用simg2img将.img文件转换为.raw文件
  2. simg2img /home/<user>/../aosp/../out/system.img system.raw
    
    1. 将原始文件挂载为ext4外部文件系统卷
    2. 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以某种程度限制向后兼容性的方式进行了此更改。所以你无法逃脱。查找较新版本