关于Android.mk文件内容的理解说明

很多做系统项目的开发人员都会涉及到编写Android.mk文件,一般我们都是从其他地方拷贝过来改改也能使用对吧,现在对里面的内容作下详细说明吧

编写编译脚本的一般内容如下:
LOCAL_PATH := $(call my_dir) // my_dir返回当前Android.mk文件所在目录,给LOCAL_PATH赋值,而且是必须要的
include $(CLEAR_VARS)  //CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量,因为这些变 量都是宏定义,是全局的
LOCAL_MODULE := Test  //编译后以此来命名apk
LOCAL_CLASS := APPS
LOCAL_MODULE_TAGS := optional //optional代表在任何版本下都编译,可选项还有(user,eng,tests)
LOCAL_MODULE_PATH := $(TARGET_OUT)/app //指定模块安装在那个目录下,TARGET_OUT是指out/target/product/xxx/sy stem/目录
LOCAL_MODULE_STEM := $(LOCAL_MODULE).apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED // PRESIGNED代表已经签过名了,无需系统再签名,可选项还有(platform,shared,med ia等)
LOCAL_SRC_FILES := Test_*.apk  //*是通配符,代表以Test_开始的所有apk文件,这是在搜索要拿去编译的apk文件
include $(BUILD_PREBUILT) //PREBUILT代表无源码是已经编译成了apk,可选项还有(BUILD_SHARED_LIBRARY,BUILD_STA TIC_LIBRARY,PACKAGE)


   补充说明:
(1) 如果想把预制的apk应用放到/system/app/目录下,只要按上面的脚本语法写即可,这是普通系统app,不可卸载
(2) 如果想把预制的apk应用放到/system/priv-app/目录下,则需要在上面的脚本语法上添加

LOCAL_PRIVILEGED_MODULE := true变量即可,这是系统核心app,不可卸载

(3) 如果想把预制的apk应用放到/data/app目录下并且卸载后恢复出厂不可恢复,那么需要添加

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)变量即可
(4) 如果想把预制的apk应用放到/data/app目录下并且卸载后恢复出厂可以恢复,那么需要添加

LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
(5) 如果担心32位的lib库文件运行到64位的Android系统环境时会报"未找到lib库"的问题,那么添加

LOCAL_MULTLIB := 32/64/first/both变量即可,这些都是可选值
(6) 如果想指定lib库的类型,那么需要添加LOCAL_MODULE_TARGET_ARCH := arm/arm x86/arm64变量即可,这些都是可选
    
       
(7) apk文件lib/目录中so库文件,那么需要添加LOCAL_PREBUILT_JNI_LIBS := \    // @标识符会将apk中的so库文件    抽离出来并拷贝到编译生成的apk对应目录下
@lib/armeabi-v7a/xxx.so \
@lib/armeabi-v7a/xxx.so
(8) 如果解压了apk压缩文件并将so库文件拷贝到编译脚本同级目录下,那么就不需要@标识符了,其实apk文件中有了so库
    文件,那么没必要考虑这么多了,直接编译apk即可
(9) 如果子目录也有文件需要编译,那么使用include $(call all-makefiles-under,$(LOCAL_PATH))这一句即可包含子
    目录所有的Android.mk

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值