赞
踩
产考资源
源码下载官方参考地址: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
下载过程遇到的问题
解决办法有两种:
- 采用清华镜像源代替,详情请点击这里,总之执行如下命令即可:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b 请替换对应的android版本号- 如果有vpn,设置git下载代理:
git config --global http.proxy "代理ip地址:端口号"
,重试即可。
解决办法: 请点击这里安装GunPG
编译过程遇到的问题
缺少对应版本的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/目录下,重新编译即可。
解决办法:在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再次编译即可。
mac默认磁盘是不区分大小写,android源码编译需要区分大小写,这个问题在使用git提交有大写字母的文件名时可能会遇到。解决办法有多种,本文选取最简单的一种:用磁盘工具新建一个对大小写敏感的宗卷,然后把源码拷贝到该目录重新执行编译即可。建立宗卷如图:
变量重复定义,查询资料原来是NDK_ROOT在环境变量中已经定义过了,和源码冲突,终端执行命令:unset NDK_ROOT,重新编译即可。
aidl_language_l
的错误,如: lex out/soong/.inter…/system/tools/aidl/aidl_language_l.cpp ninja: build stopped: subcommand failed.解决办法,在源码目录依次输入命令 :
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
_Nullable
'的错误 如:nullability specifier ‘_Nullable’ cannot be applied to non-pointer type ‘uuid’解决办法:macOS新版 sdk 的一些api接口发生变化,请点击这里下载低版本sdk版本即可(笔者降低到是10.12),sdk安装方法可参照上述编译问题1。
解决办法编译信息中有提示:Ensuring Jack server is installed and started,首先启动jack server,命令为:jack-admin start-server,如果启动不成功则检查是否安装。
-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
有两种办法
- 找到frameworks/av/media/libstagefright/include/DataUriSource.h,拷贝该文件并替换文件内容和文件名为DataURISource。
- 进入frameworks/av/media/libstagefright/include目录添加DataURISource.h文件。
解决办法和问题9类似:
cd external/iptables/extensions/…/include/linux/netfilter
找到xt_dscp.h制作副本,替换文件名为xt_DSCP.h(只替换文件名)
解决办法:安装xz,步骤如下:
下载xz-utils,下载完成后解压,并进入该文件目录,进行安装,xz安装步骤如下:
sh configure
make
make check
make install
mak installcheck
至此xz安装完成。
功夫不负有心人,最后截一幅编译成功的图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。