Android源码环境下编译项目APK,以及编写Android.bp的操作步骤

想要在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系统自己生成的,如果是自己生成的还得修改下,
否则会显示无法依赖这个方法。

猜你喜欢

转载自blog.csdn.net/qq_37870139/article/details/131485588
今日推荐