android - 如何从 Android AOSP 代码库构建单个模块
问题描述
我正在使用 aws 的 AOSP 构建环境,它本质上是 EC2 上的 AOSP 结帐(我的猜测)。
在 AOSP 根级别,我可以运行>m以成功构建所有内容。
在模块级别,我可以运行>mma以成功构建具有所有依赖项的模块。
但是,如果我要在模块文件夹中运行>mm,它会失败。
例如,如果我尝试构建联系人应用程序,
ubuntu@ip-172-31-37-80:~/aosp/oreo/packages/apps/Contacts$ mm
make: Entering directory '/home/ubuntu/aosp/oreo'
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=8.0.0
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.15.0-1056-aws-x86_64-with-Ubuntu-18.04-bionic
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=OPD1.170816.025
OUT_DIR=out
============================================
[38/38] bootstrap out/soong/.minibootstrap/build.ninja.in
[1/2] out/soong/.bootstrap/bin/minibp out/soong/.minibootstrap/build.ninja.in
[4/4] out/soong/.bootstrap/bin/minibp out/soong/.bootstrap/build.ninja
[791/792] glob test/vts/utils/native/trace_processor/Android.bp
[47/47] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
out/build-aosp_arm-packages_apps_Contacts_Android.mk.ninja is missing, regenerating...
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
test/vts/tools/build/tasks/vts_package.mk:222: warning: FindEmulator: cd: vendor/google_vts/testcases: No such file or directory
[ 99% 1301/1302] glob vendor/*/*/Android.bp
ninja: error: 'out/host/linux-x86/bin/aapt', needed by 'out/target/product/generic/obj/APPS/Contacts_intermediates/package.apk', missing and no known rule to make it
01:29:34 ninja failed with: exit status 1
build/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
make: Leaving directory '/home/ubuntu/aosp/oreo'
#### make failed to build some targets (25 seconds) ####
我的想法是只从应用程序级文件夹构建那些 java 源代码以提高速度。这可能吗?
谢谢!
问候,
二维码
=======更新=======
如果我运行>mma,然后>mm。构建正在通过,但它实际上没有编译任何东西(因为已经构建了 java 文件?)。
如果我运行 >mma,然后 >mm clean,然后 >mm,则 mm 无法构建。
解决方案
您可以构建一个包含所有依赖项的单个模块m <module>
。
例子:
m Contacts
关于您收到的错误消息:我有时会收到这些类型的错误消息,因为存储库没有正确签出,因此文件丢失。的来源aapt
位于frameworks/base/
存储库中。您应该检查 git status 是否有效以及该frameworks/base/tools/aapt
目录是否存在。
推荐阅读
- android - 任何课程的 kotlin 课程
- sql - How to Update of multiple lines with join in PostgreSQL
- z3 - z3: Horn clauses / Fixedpoints over inductive datatypes
- c++ - 将指针传递给 C++ 中的方法导致奇怪的输出
- assembly - How to compare negative numbers to positive numbers in MIPs assembly
- r - 使用 pheatmap 按行注释对数据进行排序?
- wordpress - 将 OAuth2 或 JWT 用于带有 Wordpress 后端(REST API)的移动应用程序
- c++ - Libvirt virDomainGetInfo() results in segmentation fault
- javascript - React: How to clear text in an element?
- google-cloud-platform - 如何访问保存到我的 google drive api 项目的文件