Android.bp编译之有源码apk

本文介绍了在Android源码环境下编译预置APK的过程,包括文件目录结构、Android.bp文件的编写,特别是对依赖库的处理和编译测试步骤。重点讲解了如何配置Android.bp以确保正确编译和应用原生库。
摘要由CSDN通过智能技术生成

前言

预置apk必学内容,带有源码的app工程在安卓源码下如何编译


一、文件目录及层次结构

packages\apps\MyApp
          res
          src
          Android.bp
          AndroidManifest.xml

比如我的app源码
在这里插入图片描述
只需将app下的res目录、src目录和AndroidManifest.xml文件拷贝下来即可

二、Android.bp编写

在参考同目录下其他app的bp书写方式下,修改依赖,最终编写如下

android_app {     //构建apk
name: “MyApp”,    //模块名称
srcs: [“src/**/*.java”],   /源码路径
resource_dirs: [“res”],   //资源文件的目录路径
platform_apis: true,   //设置该标记后会使用sdk的hide的api來编译。编译的APK中使用了系统级API,必须设定该值
certificate: “platform”,   //指定签名证书
privileged: true,     //指定模块是否是特权模块。特权模块具有更高的权限和访问级别
static_libs: [        //静态库依赖
“androidx-constraintlayout_constraintlayout”,
“androidx.navigation_navigation-fragment”,
“androidx.navigation_navigation-ui”,
“com.google.android.material_material”,
],
optimize: {       //压缩配置
enabled: false,     //enabled 是否开启,obfuscate 是否开启混淆,proguard_flags_files 混淆规则配置文件
},
dex_preopt: {     //指定是否对 DEX 文件进行预优化
enabled: false,     
},
product_variables: {     //用于定义产品变量,可以在构建过程中根据不同的产品进行配置
pdk: {     //在给定的示例中,定义了一个名为 pdk 的产品变量,其中包含了一个名为 enabled 的布/尔类型的属性。
enabled: false,   //这个示例中,pdk 变量的 enabled 属性被设置为 false,表示在这种产品的情况下,pdk 变量是被禁用的
},
},
}

其中,static_libs的依赖库十分重要
app源码下的依赖都为安卓原生已有的库
在这里插入图片描述
添加到static_libs时还需要做版本号等去掉微操作

“androidx-constraintlayout_constraintlayout”,
“androidx.navigation_navigation-fragment”,
“androidx.navigation_navigation-ui”,
“com.google.android.material_material”,

如果有其他的非安卓原生库还需要将库编译出来加进去嵌套即可。

三、编译测试

source build/envsetup.sh
lunch
make MyApp
在这里插入图片描述
预置到对应的版本,找到对应版本的mk文件添加:
PRODUCT_PACKAGES += MyApp
全编时,会自动将自己的app进行预置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值