想要在Android源码环境下编译项目APK,那么就得在项目工程里面添加Android.bp的文件,以前都是用的.mk文件,现在发现bp其实更加的方便和实用
1.首先需要在源码环境通过git的方式将自己的项目上传到指定目录下,然后编写bp文件
2.编写需要编译apk的配置文件bp,将Android.bp放置在根目录下,libs也放置在根目录下
3.Android.bp文件编写的示例,该项目包括jar包,所以通过java_import的方式将jar包进行编译
java_import {
name: "logcatzz_jar", (logcat的jar包命名一定要注意不要使用logcat,不然会被系统打成其他名字的jar名,会导致找不到然后报错)
jars: ["libs/logcat.jar"],
}
android_app {
name: "项目名",
certificate: "platform",
platform_apis: true,
privileged: true, (会输出到priv-app的目录)
system_ext_specific: true,
optimize: {
enabled: false,
},
dxflags: ["--multi-dex"],
dex_preopt: {
enabled: false,
},
srcs: [
"app/src/main/java/**/*.java",
],resource_dirs: ["res",],
manifest: "AndroidManifest.xml",
libs: [
"logcatzz_jar",
],
static_libs: [
"androidx.appcompat_appcompat",
],
}
编写完bp文件后就可以开始编译项目的apk了,还是同样执行命令。
4.开始编译apk
$ source build/envsetup.sh
$ lunch userdebug (自己源码的userdebug目录,每个项目不一样,自己找)
$ mmm 项目的路径(或者在当前编译的项目目录下执行mm)
5.编译遇到的bug
1.显示样式主题属性的not found
需要在Android.bp中的static_libs中添加"androidx.appcompat_appcompat"
2.package报名的no such file
需要查看bp中配置的name名和项目中的stringname是否一致
3.jar包的missing dependencies 提示找不到依赖
可以去源码中android\out\soong\.intermediates然后自己的项目目录下
找jar包名是否跟Android.bp中的libs命名一致
4.提示代码中的方法symbol
首先需要确认代码中的方法是不是studio系统自己生成的,如果是自己生成的还得修改下,
否则会显示无法依赖这个方法。