首页 > 系统 > Android > 正文

记Android源码编译遇到的两个坑

2019-11-07 23:39:06
字体:
来源:转载
供稿:网友

经过从下载到编译的二十多个小时…终于成功的img编译出来了。先写一下遇到的两个坑,有空再写一下过程。

环境

Ubuntu 16.04JDK1.6Android_4.4.2

坑一

/content/common/android/hash_set.cc 报错,错误信息大概是这样的(来自百度):
In file included from externalromium_org/content/common/android/hash_set.cc:5:0:out/target/PRoduct/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:10:26: error: extra tokens at end of #ifndef directive [-Werror]out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:11:26: error: missing whitespace after the macro name [-Werror]out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:24:20: error: expected initializer before '<' tokenout/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:26:17: error: expected initializer before '<' tokenout/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected '{' before '<' tokenout/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected unqualified-id before '<' tokenexternalromium_org/content/common/android/hash_set.cc:30:1: error: expected '}' at end of inputcc1plus: all warnings being treated as errorsmake: *** [out/target/product/xxx/obj/STATIC_LIBRARIES/content_content_common_gyp_intermediates/content/common/android/hash_set.o] 错误 1

原因是javap的版本,Android4.4.2需要用JDK1.6编译,除了要设置java、javac的版本之外还要设置javap的版本,方可解决这个错误。

sudo update-alternatives --install /usr/bin/javap javap /home/jdk1.6.0_45/bin/javap 300sudo update-alternatives --config javap

修改版本之后最好重新运行一下source build/envsetup.sh和lunch

坑二

Checking API: checkapi-last 报错,错误信息大概是这样的(来自百度):
prebuilts/sdk/api/19.txt:23573: error 8: Removed public class android.test.ActivityInstrumentationTestCaseprebuilts/sdk/api/19.txt:23580: error 8: Removed public class android.test.ActivityInstrumentationTestCase2prebuilts/sdk/api/19.txt:23588: error 8: Removed public class android.test.ActivityTestCaseprebuilts/sdk/api/19.txt:23595: error 8: Removed public class android.test.ActivityUnitTestCaseprebuilts/sdk/api/19.txt:23620: error 8: Removed public class android.test.AndroidTestRunnerprebuilts/sdk/api/19.txt:23641: error 8: Removed public class android.test.applicationTestCaseprebuilts/sdk/api/19.txt:23650: error 8: Removed public class android.test.AssertionFailedErrorprebuilts/sdk/api/19.txt:23655: error 8: Removed public class android.test.ComparisonFailureprebuilts/sdk/api/19.txt:23675: error 8: Removed public class android.test.InstrumentationTestRunnerprebuilts/sdk/api/19.txt:23701: error 8: Removed public class android.test.IsolatedContextprebuilts/sdk/api/19.txt:23706: error 8: Removed public class android.test.LoaderTestCaseprebuilts/sdk/api/19.txt:23711: error 8: Removed public class android.test.MoreAssertsprebuilts/sdk/api/19.txt:23763: error 8: Removed public class android.test.ProviderTestCaseprebuilts/sdk/api/19.txt:23771: error 8: Removed public class android.test.ProviderTestCase2prebuilts/sdk/api/19.txt:23779: error 8: Removed public class android.test.RenamingDelegatingContextprebuilts/sdk/api/19.txt:23788: error 8: Removed public class android.test.ServiceTestCaseprebuilts/sdk/api/19.txt:23801: error 8: Removed public class android.test.SingleLaunchActivityTestCaseprebuilts/sdk/api/19.txt:23807: error 8: Removed public class android.test.SyncBaseInstrumentationprebuilts/sdk/api/19.txt:23813: error 8: Removed public class android.test.TestSuiteProviderprebuilts/sdk/api/19.txt:23817: error 8: Removed public class android.test.TouchUtilsprebuilts/sdk/api/19.txt:23855: error 8: Removed public class android.test.ViewAssertsprebuilts/sdk/api/19.txt:23878: error 7: Removed package android.test.mockprebuilts/sdk/api/19.txt:24123: error 7: Removed package android.test.suitebuilderprebuilts/sdk/api/19.txt:32792: error 7: Removed package com.android.internal.util

不要问我为什么错误信息都是来自百度..反正就是一大堆的api/19.txt:*****: error *: Removed xxxxxxxxxxxxxx。 原因未知,解决方法如下: 1. 先运行

make update-api搜索文件current.txt(不要问我为什么要用搜索,因为我没记住路径),打开那个创建/修改时间离现在最近的文件,全选 - 复制。打开prebuilts/sdk/api/19.txt(你的Android系统版本号),全选 - 粘贴。make,成功(不用clean,可以继续编译…到这里已经离成功很近了)。若还报错,请检查的java、javac、javadoc、javap版本。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表