make sdk
输出jar路径:
Package SDK Stubs: out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar
Package SDK: out/host/linux-x86/sdk/android-sdk_eng.hl_linux-x86.zip
1.
2.
3.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-dbg
sudo update-alternatives --config java
sudo update-alternatives --config javac
注:最终openjdk-8的安装路径是:/usr/lib/jvm
注:jre只是java running environment ,jdk是java开发工具包
export ANDROID_PRODUCT_OUT=out
A_LIBRARIES/framework_intermediates/dex-dir/classes.dex.rsp
Out of memory error (version 1.2-rc4 ‘Carnac’ (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by [email protected])).
GC overhead limit exceeded.
Try increasing heap size with java option ‘-Xmx’.
could not locate source file: ${OUT_DIR}/target/common/obj/PACKAGING/android-support-multidex_intermediates/android-support-multidex.jar
make sdk的时候,出现这个错误。因为我的输出路径是绝对的(/opt/out),所以应该改为相对的就行了。这个问题调试了一天.我不知道google干嘛了,
查看build/tools/atree/atree.cpp,跟踪源码得知对于sdk.atree文件每一行,左边的那一个项都默认加上一个头部来测试是否存在该文件.
files.cpp关键函数:
int locate(FileRecord* rec, const vector<string>& search){
...
//遍历所有头部
for (vector<string>::const_iterator it=search.begin();
it!=search.end(); it++) {
string full = path_append(*it, rec->sourceName);//默认加头部
struct stat st;
err = stat(full.c_str(), &st);
//找到目标文件
if (err == 0) {
rec->sourceBase = *it;
rec->sourcePath = full;
rec->sourceMod = st.st_mtime;
rec->sourceSize = st.st_size;
rec->sourceIsDir = S_ISDIR(st.st_mode);
return 0;
}
}
//都找不到就GG
fprintf(stderr, "%s:%d: couldn't locate source file: %s\n",
rec->listFile.c_str(), rec->listLine, rec->sourceName.c_str());
return 1;
}
sdk.atree:
...
development/tools/emulator/skins/QVGA platforms/${PLATFORM_NAME}/skins/QVGA
development/tools/emulator/skins/WQVGA432 platforms/${PLATFORM_NAME}/skins/WQVGA432
development/tools/emulator/skins/WQVGA400 platforms/${PLATFORM_NAME}/skins/WQVGA400
development/tools/emulator/skins/HVGA platforms/${PLATFORM_NAME}/skins/HVGA
${OUT_DIR}/target/common/obj/.../android-support-customtabs.jar extras/android/support/customtabs/libs/android-support-customtabs.jar
...
意思是把文件(HEAD+development/tools/emulator/skins/QVGA),放到out目录/platforms/ PLATFORMNAME/skins/QVGA问题来了(HEAD+ {OUT_DIR}/target/common/…),这..就悲剧了.假如我的out目录是/opt/out..绝对路径那么就肯定会错啦.要么你的out目录就是相对的就行了
HEAD+/opt/out…
PRODUCT_NAME 最终用户将看到的完整产品名,会出现在“关于手机”信息中。
PRODUCT_MODEL 产品的型号,这也是最终用户将看到的。
PRODUCT_LOCALES 该产品支持的地区,以空格分格,例如:en_GB de_DE es_ES fr_CA。
PRODUCT_PACKAGES 该产品版本中包含的 APK 应用程序,以空格分格,例如:Calendar Contacts。
PRODUCT_DEVICE 该产品的工业设计的名称。
PRODUCT_MANUFACTURER 制造商的名称。
PRODUCT_BRAND 该产品专门定义的商标(如果有的话)。
PRODUCT_PROPERTY_OVERRIDES 对于商品属性的定义。
PRODUCT_COPY_FILES 编译该产品时需要拷贝的文件,以“源路径 : 目标路径”的形式。
PRODUCT_OTA_PUBLIC_KEYS 对于该产品的 OTA 公开 key 的列表。
PRODUCT_POLICY 产品使用的策略。
PRODUCT_PACKAGE_OVERLAYS 指出是否要使用默认的资源或添加产品特定定义来覆盖。
PRODUCT_CONTRIBUTORS_FILE HTML 文件,其中包含项目的贡献者。
PRODUCT_TAGS 该产品的标签,以空格分格。
通过AndroidStudio可以方便快捷阅读源码。
out/host/linux-x86/framework/idegen.jar
是否存在。 mmm development/tools/idegen
. development/tools/idegen/idegen.sh
,就会出现android.ipr,android.iml两个文件Unsupported version number [51.0] for class format
由于jar是jdk1.7编译的,在jdk1.6无法使用
LOCAL_SRC_FILES += \
src/com/rsbc/launcher/libs/media/IMediaPlaybackService.aidl
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
butterknife-bc:libs/butterknife8-0-1.jar \
gson-bc:libs/gson-2.5.jar \
okhttp-bc:libs/okhttp-2.3.0.jar \
photoview-bc:libs/photoview.jar \
android-support-v4f:libs/android-support-v4.jar
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4f butterknife-bc gson-bc okhttp-bc photoview-bc
1.通过修改framework/base/core/res/res/values/dimens.xml,把navigation_bar_height和navigation_bar_langscape修改为0
2.重新编译,先到framework/base/core/res执行mm命令,再到framework/base执行mm
添加系统服务可以在frameworks/base/services/java/com/android/server/SystemServer文件中添加
参考udev规则
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0502”, MODE=”0666”
推荐地址学习
1.Andorid系统介绍
Nexus5编译集锦