产考资源
源码下载官方参考地址:
https://source.android.com/source/downloading.html
源码版本官方产考地址:
https://source.android.com/source/build-numbers.html#source-code-tags-and-builds
清华镜像源下载产考地址:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP
下载过程遇到的问题
1. fatal: Cannot get
https://gerrit.googlesource.com/git-repo/clone.bundle
解决办法有两种:
- 采用清华镜像源代替,详情
请点击这里
,总之执行如下命令即可:
repo init -u
https://aosp.tuna.tsinghua.edu.cn/platform/manifest
-b
请替换对应的android版本号
- 如果有vpn,设置git下载代理:
git config --global http.proxy "代理ip地址:端口号"
,重试即可。
2. gpg (GnuPG) is not available
解决办法:
请点击这里安装GunPG
编译过程遇到的问题
1. internal error: Could not find a supported mac sdk: [“10.10” “10.11” “10.12”]
缺少对应版本的sdk,这里给出两种解决办法:
- 查找mac sdk版本,执行命令:ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
如图:
然后build/soong目录按文件内容搜索”10.10″,找到了文件bulid/soong/cc/config/x86_darwin_host.go文件,只需修改对应内容即可,如图:
请点击这里
下载对应sdk,解压并复制到
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/目录下,重新编译即可。
2. build/core/config.mk:663: error: Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/…/lib/tools.jar, please check if your JDK was installed correctly.
解决办法:在config.mk中找到663行发现如图代码:
这段代码主要是通过find-jdk-tools-jar.sh脚本来寻找jdk路径并赋给HOST_JDK_TOOLS_JAR,打开find-jdk-tools-jar.sh文件后发现如下代码:
对比错误日志信息可以看出图中代码执行的是else分支(错误日志中的…/lib/tools.jar提示和else分支echo输出对应),那么最终查出没有ANDROID_JAVA_HOME环境变量,设置即可,步骤如下:
在~/.bash.profile中添加如下代码:
export ANDROID_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk.xxx.jdk/Contents/Home
export PATH=$ANDROID_JAVA_HOME:$PATH
然后,重启terminal再次编译即可。
3. error: Case-insensitive filesystems not supported.
mac默认磁盘是不区分大小写,android源码编译需要区分大小写,这个问题在使用git提交有大写字母的文件名时可能会遇到。解决办法有多种,本文选取最简单的一种:用磁盘工具新建一个对大小写敏感的宗卷,然后把源码拷贝到该目录重新执行编译即可。建立宗卷如图:
4. error:external/googletest/googletest: MODULE.TARGET.STATIC_LIBRARIES.libgtest already defined by external/googletest/googletest
变量重复定义,查询资料原来是NDK_ROOT在环境变量中已经定义过了,和源码冲突,终端执行命令:unset NDK_ROOT,重新编译即可。
5. 带有
aidl_language_l
的错误,如: lex out/soong/.inter…/system/tools/aidl/aidl_language_l.cpp ninja: build stopped: subcommand failed.
aidl_language_l
解决办法,在源码目录依次输入命令 :
source build/envsetup.sh
lunch full-eng
cd external/bison
git cherry-pick c0c852bd6fe462b148475476d9124fd740eba160
mm
cd . ./. ./
cp out/host/darwin-x86/bin/bison prebuilts/misc/darwin-x86/bison/
make -j4
6. 带有’
_Nullable
‘的错误 如:nullability specifier ‘_Nullable’ cannot be applied to non-pointer type ‘uuid’
_Nullable
解决办法:macOS新版 sdk 的一些api接口发生变化,
请点击这里
下载低版本sdk版本即可(笔者降低到是10.12),sdk安装方法可参照上述编译问题1。
7. Communication error with Jack server (52). Try ‘jack-diagnose’
解决办法编译信息中有提示:Ensuring Jack server is installed and started,首先启动jack server,命令为:jack-admin start-server,如果启动不成功则检查是否安装。
8. Out of memory error (version 1.3-rc6 ‘Douarn’ (441800 22a11d4b264ae70e366aed3025ef47362d1522bb by
android-jack-team@google.com
)).GC overhead limit exceeded.Try increasing heap size with java option ‘
-Xmx<size>
’.
-Xmx<size>
解决办法在错误信息中有提示:分配内存不足,要增加内存,具体增加多少根据自己电脑内存合理分配,比如设置内存为4g 即为 -Xmx4g,具体操作方法如下:
停止jack-admin: jack-admin kill-server
找到并打开jack-admin文件:out/host/darwin-x86/bin/jack-admin
将jack-admin文件中 JACK_SERVER_COMMAND=”java 修改为
JACK_SERVER_COMMAND="java -Xmx4g
重启jack-admin: jack-admin start-server
重新编译:make -j4
9.frameworks/av/media/libstagefright/DataSource.cpp:29:10: fatal error: ‘media/stagefright/DataURISource.h’ file not found
有两种办法
- 找到frameworks/av/media/libstagefright/include/DataUriSource.h,拷贝该文件并替换文件内容和文件名为DataURISource。
- 进入frameworks/av/media/libstagefright/include目录添加
DataURISource.h文件
。
10.external/iptables/extensions/…/include/linux/netfilter_ipv4/ipt_ECN.h:13:10
解决办法和问题9类似:
cd external/iptables/extensions/…/include/linux/netfilter
找到xt_dscp.h制作副本,替换文件名为xt_DSCP.h(只替换文件名)
11. /bin/bash: xz: command not found. ninja: build stopped: subcommand failed.
解决办法:安装xz,步骤如下:
下载xz-utils
,下载完成后解压,并进入该文件目录,进行安装,xz安装步骤如下:
sh configure
make
make check
make install
mak installcheck
至此xz安装完成。
功夫不负有心人,最后截一幅编译成功的图