编译生成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