fedroa16 编译android 4.0.1
16lz
2021-01-26
1. JDK 6
这个需要到sun的网站下载一个安装即可:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
下载完之后chmod再运行安装2. 最新的android源码要求make的版本为3.81, make3.82的版本貌似有些兼容性的问题,试了下需要做些手脚才能顺利地downgrade回旧的版本
运行命令
- sudoyumdowngrademake--releasever=13
结果出现错误提示
- ====================================================================================================================================================
- PackageArchVersionRepositorySize
- ===================================================================================================================================================
- Downgrading:
- makei6861:3.81-19.fc13updates385k
- TransactionSummary
- ====================================================================================================================================================
- Downgrade1Package
- Totalsize:385k
- Isthisok[y/N]:y
- DownloadingPackages:
- warning:rpmts_HdrFromFdno:HeaderV3RSA/SHA256Signature,keyIDe8e40fde:NOKEY
- Retrievingkeyfromfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-i386
- TheGPGkeyslistedforthe"Fedora13-i386-Updates"repositoryarealreadyinstalledbuttheyarenotcorrectforthispackage.
- CheckthatthecorrectkeyURLsareconfiguredforthisrepository.
这是因为gpg key是fedora16版本的,降级回13的话需要用到13的key,上网搜索了下找到了之后放到/etc/pki/rpm-gpg/覆盖RPM-GPG-KEY-fedora-i386之后再重新运行上面的命令即可(记得备份原文件,降级完成后要把文件还原的,要不然系统升级会有问题)。
最后为了防止系统每次自动把make更新回3.82,我们在/etc/yum.conf里再添加一行来过滤掉make的自动升级
- exclude=make
3. 缺失的系统工具
我的fedora16安装的时候选择的是softwaredevelopment的配置安装的,编译的时候出错需要安装的工具包括
- sudoyuminstallgperf
4. 编译过程中的错误
a)perl错误
- Can'tlocateSwitch.pmin@INC(@INCcontains:/usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib/perl5/usr/share/perl5.)atexternal/webkit/Source/WebCore/make-hash-tools.plline23.
- BEGINfailed--compilationabortedatexternal/webkit/Source/WebCore/make-hash-tools.plline23.
- make:***[out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp]Error2
- make:***Waitingforunfinishedjobs....
- targetGenerated:libwebcore<=external/webkit/Source/WebCore/platform/ColorData.gperf
- Can'tlocateSwitch.pmin@INC(@INCcontains:/usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib/perl5/usr/share/perl5.)atexternal/webkit/Source/WebCore/make-hash-tools.plline23.
- BEGINfailed--compilationabortedatexternal/webkit/Source/WebCore/make-hash-tools.plline23.
- make:***[out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/platform/ColorData.cpp]Error2
- targetGenerated:libwebcore<=external/webkit/Source/WebCore/html/parser/HTMLEntityNames.in
- 进入external/webkit的目录,打下面的patch
- diff--gita/Source/WebCore/make-hash-tools.plb/Source/WebCore/make-hash-tools.pl
- index37639eb..2968beb100644
- ---a/Source/WebCore/make-hash-tools.pl
- +++b/Source/WebCore/make-hash-tools.pl
- @@-20,7+20,8@@
- #Boston,MA02110-1301,USA.
- usestrict;
- -useSwitch;
- +#useSwitch;
- +usefeatureqw(switch);
- useFile::Basename;
- my$outdir=$ARGV[0];
- @@-28,9+29,9@@shift;
- my$option=basename($ARGV[0],".gperf");
- -switch($option){
- +given($option){
- -case"DocTypeStrings"{
- +when("DocTypeStrings"){
- my$docTypeStringsGenerated="$outdir/DocTypeStrings.cpp";
- my$docTypeStringsGperf=$ARGV[0];
- @@-40,7+41,7@@case"DocTypeStrings"{
- }#case"DocTypeStrings"
- -case"ColorData"{
- +when("ColorData"){
- my$colorDataGenerated="$outdir/ColorData.cpp";
- my$colorDataGperf=$ARGV[0];
b) mutable错误
- external/oprofile/libpp/format_output.h:94:22:error:reference‘counts’cannotbedeclared‘mutable’[-fpermissive]
解决方法:
external/oprofile里打patch或者自己手动修改文件
- diff--gita/libpp/format_output.hb/libpp/format_output.h
- indexb6c4592..4efdbb1100644
- ---a/libpp/format_output.h
- +++b/libpp/format_output.h
- @@-91,7+91,8@@protected:
- symbol_entryconst&symbol;
- sample_entryconst&sample;
- size_tpclass;
- -mutablecounts_t&counts;
- +//mutablecounts_t&counts;
- +counts_t&counts;
- extra_imagesconst&extra;
- doublediff;
- };
c) gtest错误
- external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11:error:‘ptrdiff_t’doesnotnameatype
external/gtest里打patch或者自己手动修改
- diff--gita/include/gtest/internal/gtest-param-util.hb/include/gtest/internal/gtest-param-util.h
- index5559ab4..b964c45100644
- ---a/include/gtest/internal/gtest-param-util.h
- +++b/include/gtest/internal/gtest-param-util.h
- @@-37,6+37,7@@
- #include<iterator>
- #include<utility>
- #include<vector>
- +#include<cstddef>
- #include<gtest/internal/gtest-port.h>
d) werror错误
- frameworks/compile/slang/slang_rs_export_foreach.cpp:247:23:error:variable‘ParamName’setbutnotused[-Werror=unused-but-set-variable]
解决:
进frameworks/compile/slang打patch或者手动修改
- diff--gita/Android.mkb/Android.mk
- indexfce3637..aff5b7d100644
- ---a/Android.mk
- +++b/Android.mk
- @@-19,7+19,8@@ifeq($(TARGET_BUILD_APPS),)
- LOCAL_PATH:=$(callmy-dir)
- -local_cflags_for_slang:=-Wno-sign-promo-Wall-Wno-unused-parameter-Werror
- +#local_cflags_for_slang:=-Wno-sign-promo-Wall-Wno-unused-parameter-Werror
- +local_cflags_for_slang:=-Wno-sign-promo-Wall-Wno-unused-parameter
- ifneq($(TARGET_BUILD_VARIANT),eng)
- local_cflags_for_slang+=-D__DISABLE_ASSERTS
- endif
e) libx11错误
- /usr/bin/ld:out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/main.o:undefinedreferencetosymbol'XInitThreads'
解决:
进development打patch或者手动修改
- diff--gita/tools/emulator/opengl/host/renderer/Android.mkb/tools/emulator/opengl/host/renderer/Android.mk
- index55fcb80..5e4d0bb100644
- ---a/tools/emulator/opengl/host/renderer/Android.mk
- +++b/tools/emulator/opengl/host/renderer/Android.mk
- @@-5,6+5,7@@$(callemugl-begin-host-executable,emulator_renderer)
- $(callemugl-import,libOpenglRender)
- LOCAL_SRC_FILES:=main.cpp
- LOCAL_CFLAGS+=-O0-g
- +LOCAL_LDLIBS+=-lX11
- #ifeq($(HOST_OS),windows)
- #LOCAL_LDLIBS+=-lws2_32
更多相关文章
- 启动android project时报resources.ap_ does not exist
- 对Menu Button 说再见
- -Android数据库SQLiteDatabase的使用
- 安卓设备修改屏幕像素密度以及查看屏幕分辨率
- 【odroid-xu3】 ODROID-XU3软件环境搭建记录
- Android(安卓)studio -SVN 使用笔记
- Error generating final archive: Debug Certificate expired on
- Andriod(三):配置文件build.gradle与AndroidManifest.xml
- android4.4修改低电压提醒