Android.mk编译目标(编译包、二进制文件、预编译)
2016-05-19 09:54
676 查看
1.常用
我们经常使用Android.mk来编译一个apk,jar包等。BUILD_PACKAGE(既可以编apk,也可以编资源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true)
BUILD_JAVA_LIBRARY(java共享库)
BUILD_STATIC_JAVA_LIBRARY(java静态库)
BUILD_EXECUTABLE(执行文件)
BUILD_SHARED_LIBRARY(native共享库)
BUILD_STATIC_LIBRARY(native静态库)
2.预编译模块
在实际的开发中,并不会像Android一样将所有的源码集中在一起编译,有很多apk文件,jar都是预先编译好的,编译系统是需要将这些二进制文件复制到生成的image文件中。常用的方法是通过PRODUCT_COPY_FILES变量将这些文件直接复制到生成的image文件中。但是有些apk或jar包,需要实用系统的签名才能正常运行,这样用复制的方式就不行了。另外一些动态库文件可能是源码中的某些模块所依赖的,用复制的方法也无法建立依赖关系,这将导致这些模块编译失败。Android可以通过定义预编译模块的方法来解决上面的问题。
定义一个预编译模块和定义一个普通的编译模块格式相似。不同是LOCAL_SRC_FILES变成不是源文件了,而是二进制文件。同时可以通过LOCAL_MODULE_CLASS来指定模块的类型,最后include的是BUILD_PREBUILT变量定义编译文件。
编译apk文件
include $(CLEAR_VARS) LOCAL_MODULE := ThemeManager.apk LOCAL_SRC_FIELS := app/$(LOCAL_MODULE) LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := APPS LOCAL_CERTIFICATE := platform include & (BUILD_PREBUILT)
编译jar包
include $(CLEAR_VARS) LOCAL_MODULE := libfirewall.jar LOCAL_SRC_FIELS := app/$(LOCAL_MODULE) LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := JAVA_LIBRAYIES LOCAL_CERTIFICATE := platform include & (BUILD_PREBUILT)
定义动态库文件目标
include $(CLEAR_VARS)
LOCAL_MODULE := libglobaltheme_jni.so
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := lib/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRAYIES
include & (BUILD_PREBUILT)
编译可执行文件
include $(CLEAR_VARS)
LOCAL_MODULE := bootanimation
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := bin/bootanimation
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include & (BUILD_PREBUILT)
相关文章推荐
- Android——View的事件分发机制(学习Android开发艺术探索)
- android studio之jni(上)生成so文件
- Android studio 多渠道打包
- Android Studio右键选项中没有Git?
- Android 蓝牙,wlan调试命令
- 如何解决Android出现的异常“java.lang.NoSuchMethodError: android.widget.LinearLayout.setBackground”?
- android studio2.1创建项目的两个坑
- Android中的坐标
- Android WebView 与JS的数据交互
- 不需要任何权限获得Android设备的唯一ID,权限android设备id
- Android调试02
- 【Android】导入第三方库时,关于so文件的一些思考
- Android Studio如何查看branch列表及切换branch
- 四:资讯列表实现(借助PullToRefres实现上拉和下拉刷新) (下)
- Android点九图注意事项
- Anddroid 图片模糊处理——RenderScript :简单而快速的图像处理
- 在Android上打造属于自己的Rxjava框架(三)操作符变换
- 解决 Android Studio 运行卡的问题
- android AsyncTask介绍
- Android逆向之分析某锁机恶意软件