今天把aosp的代码编译并且刷机,然后导入到AS中,历经波折,总算搞定,遇到一系列问题,在此小结一下。
本机配置如下:
1、mac版本
OSX Yosimite 10.10.5 (14F27)
2、java版本
1.7.0_79
3、xcode
Version 7.0 (7A220)
4、手机
nexus 5x
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 120g ~/android.dmg
创建好了磁盘,用spot查一下android.dmg,看看在哪里?哦,在fish目录下,~代表的就是/Users/fish这个位置。
//1、切换到刚才创建的磁盘
$ cd /Volumes/untitled
//2、安装repo,这里要保证bin目录的存在,如果不存在那就mkdir一下
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
//3、输入google账号密码
$ git config --global user.name "F chefish"
$ git config --global user.email "我的密码"
//4、创建文件夹
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
//下载,这里与官方不太一样,因为我没有配置环境变量
$ /Users/fish/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r45
$ /Users/fish/bin/repo sync
$ source build/envsetup.sh
$ lunch
//lunch之后,要选择,lunch的对象,我是5x,所以选择,userdebug-bullhead这个版本
$ make -j4
我第一次跟着官方文档,傻乎乎的选择了aosp_arm-eng版本,这其实是给模拟器用的。
//进入fastboot模式
$ adb reboot bootloader
//解锁(如已经解锁就没必要了)
$ fastboot oem unlock oem
//刷机(会有个界面一直显示android字,不要慌,过一会就好了)
$ fastboot flashall -w
刷机大约5分钟
$ mmm development/tools/idegen/
$ sh ./development/tools/idegen/idegen.sh
第一行是,生成IDE工具文件,运行完将生成idegen.jar文件
具体的错误如下所示:
myhost:android-4.4.4_r2.0.1 carl$ lunch aosp_x86-engbuild/core/combo/HOST_darwin-x86.mk:65:*****************************************************build/core/combo/HOST_darwin-x86.mk:66: * Can not find SDK 10.6 at/Developer/SDKs/MacOSX10.6.sdk build/core/combo/HOST_darwin-x86.mk:67:*****************************************************build/core/combo/HOST_darwin-x86.mk:68:*** Stop.. Stop.
具体错误的原因是,在编译脚本中会检查当前的Xcode sdk的版本是否是兼容的,这可能是因为你mac上的xcode版本比较新,在Android源代码中还没有添加上.理论上说应该用Android代码对应的XcodeSDK版本来编译,不然可能会有兼容性的问题。
具体的方法如下所示:
你可以到Xcode的sdk路径下(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs)查看当前系统的SDK版本是多少。比如我的SDK版本是MacOSX10.11.sdk,接下来编辑build/core/combo/mac_version.mk中的mac_sdk_versions_supported所在的行添加10.11就行了。在运行下lunch命令,是不是就好了。
out/target/common/obj/JAVA_LIBRARIES/android-support-v4-api23_intermediates/classes.jar
target Static Jar: android-support-v4-api23(out/target/common/obj/JAVA_LIBRARIES/android-support-v4-api23_intermediates/javalib.jar)
target Java: android-support-v4(out/target/common/obj/JAVA_LIBRARIES/android-support-v4_intermediates/classes)
frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:190:错误: 无法访问RemoteControlClient
return mController != null ?mController.getRemoteControlClient() : null;
^
找不到android.media.RemoteControlClient的类文件
frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:240:错误: 无法访问OnPlaybackPositionUpdateListener
mController.refreshState(mCallbacks.onIsPlaying(),
^
找不到android.media.RemoteControlClient$OnPlaybackPositionUpdateListener的类文件
暂时不知道什么原因
解决方法:删除代码,重新下载,(woca)。
http://stackoverflow.com/questions/29315961/aosp-compiled-image-for-nexus-9-doesnt-boot
http://www.cnblogs.com/kissazi2/p/5244438.html