(三) Android.mk 编译生成apk 编译生成jar apk依赖jar包 预编译jar包

编译生成apk

LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)          
     
LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := godv
 
include $(BUILD_PACKAGE)

编译生成jar

LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)          
     
LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_MODULE := com.test.myjar
 
include $(BUILD_STATIC_JAVA_LIBRARY)
include $(BUILD_JAVA_LIBRARY)

include $(BUILD_STATIC_JAVA_LIBRARY)    静态jar包  就是jar包可以在任何java虚拟机上运行
include $(BUILD_JAVA_LIBRARY)                  动态jar包  在静态jar包基础上使用.dex打包生成的文件    .dex 是android系统使用的文件


apk依赖jar包

LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)

#依赖静态jar包
LOCAL_STATIC_JAVA_LIBRARIES := static-library
#依赖动态jar包
LOCAL_JAVA_LIBRARIES := share-library          
     
LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := godv
 
include $(BUILD_PACKAGE)

预编译jar包(这里转载一下解释)原文链接:https://blog.csdn.net/haiping1224746757/article/details/109533572

        在实际的开发中,并不会像Android一样将所有的源码集中在一起编译,有很多apk文件,jar都是预先编译好的,编译系统是需要将这些二进制文件复制到生成的image文件中。
常用的方法是通过PRODUCT_COPY_FILES变量将这些文件直接复制到生成的image文件中。但是有些apk或jar包,需要实用系统的签名才能正常运行,这样用复制的方式就不行了。另外一些动态库文件可能是源码中的某些模块所依赖的,用复制的方法也无法建立依赖关系,这将导致这些模块编译失败。Android可以通过定义预编译模块的方法来解决上面的问题。
定义一个预编译模块和定义一个普通的编译模块格式相似。不同是LOCAL_SRC_FILES变成不是源文件了,而是二进制文件。同时可以通过LOCAL_MODULE_CLASS来指定模块的类型,最后include的是BUILD_PREBUILT变量定义编译文件。

LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_MODULE := com.godv.share

LOCAL_SRC_FILES := com.godv.static
 
include $(BUILD_PREBUILT)

   其中LOCAL_MODULE_CLASS指定编译生成的文件类型

LOCAL_MODULE_CLASS :=

#类型1 dex归档文件
JAVA_LIBRARIES

#类型2 apk文件
APPS

#类型3 动态库文件
SHARED_LIBRARIES
 
#类型4 二进制文件
EXECUTABLES

#类型5 其他格式文件
ETC

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值