这一期我们继续探索 Android.mk ,主要讲的是如何编译 jar 包,如何编译 APK , APK 中如何导入 jar 包和库文件,如何在 Android.mk 中添加判断语句 首先我们看一下如何编译生成 APK, http://tiyubisai.com/video_news/news_135531.html 下面我们来看一下编译生成 APK 的主要程序代码: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := LocalPackage include $(BUILD_PACKAGE) BUILD_PACKAGE :编译生成 apk LOCAL_PACKAGE_NAME :编译生成 apk 的名字 下面我来给大家演示一个如何生成 apk 的小例子: 首先我们需要配置我们的环境变量 . build/envsetup.sh , 然后选择我们的 lunch ,我们来那我们的原生系统应用来举个例子,我们来看一下 pankage/apps/ 下都有哪些原生应用 ls pankage/apps/ 然后我们来看一下这个 Calculator 的代码 vi pankage/apps/Calculator/Android.mk LOCAL_SRC_FILES 就是调用我们当前目录下的所有 java 的文件 LOCAL_SDK_VERSION 指定的是我们当前 SDK 的版本 下面我们来编译一下这个文件,首先我们需要更新一下我们的原文件下的任何一个文件 Touch pankage/apps/Calculator/src/com/android/calculator2/Calculator.java 然后我们来编译我们的 app , mmm pankage/apps/Calculator/ 在编译过程中共生成了两个 apk 文件,这就是如何生成 apk 文件 下面我们来看一下如何编译生成 jar 包 首先我们看一下生成 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 包 include $(BUILD_JAVA_LIBRARY) : 编译生成共享 jar 包 我们来看一下 jar 包的分类: [size=10.5000pt](1)静态 jar 包: include $(BUILD_STATIC_JAVA_LIBRARY) 使用 .class 文件打包而成的 JAR 文件,可以在任何 java 虚拟机运行 [size=10.5000pt](2)动态 jar 包: include $(BUILD_JAVA_LIBRARY) 在静态 jar 包基础之上使用 .dex 打包而成的 jar 文件, .dex 是 Android 系统使用的文件格式,只能在 Android 上使用 我们来看一下如何在 apk 中引用我们的 jar 包 ; LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := statia-library ( 静态 jaeger 包 ) LOCAL_JAVA_LIBRARIES := share-library (动态 jar 包) LOCAL_SRC_FILES :=$(call all-subdir-java-files) LOCAL_PACKAGE_NAME := LocalPackage include $(BUILD_PACKAGE) 预编译 jar 包: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_MODULE := com.test.share LOCAL_SRC_FILES := com.test.static include $(BUILD_PREBUILT) BUILD_PREBUILT :预编译 LOCAL_MODULE_CLASS :指定编译生成文件类型 下面我们来看一下预编译生成文件的类型 最后我们看一下如何在 Android.mk 中添加判断语句 我们找到上一期我们的Android.mk 文件,将 ifeq 的判断语句添加进去 vi external/test/Android.mk 当时呢,我们在这里尝试了两种方式,现在我们通过判断的方式来确定使用哪种方式 下面我们将判断的语句添加进去 然后我们进行编译 先来 touch src/main.cpp 然后 mm 这样虽然编译通过了,但是我们不知道编译的是静态库还是动态库,我们再来添加点错误代码来看一下, 我们在这里添加上错误信息,然后编译,看看是在23 行出的错还是在 25 行出的错,执行 mm 编译命令 可以看到是在23 行出的错,所以当我们的 USED_SHARE=true 的话,我们程序走的就是动态库,然后我们将 true 改成 false ,我们再来执行编译 mm 这就说明当我们使用 ifeq 时就可以判断我们的编译过程 http://blog.csdn.net/chengfeng135/article/details/49618449 http://blog.csdn.net/chengfeng135/ |
版权声明:本文为q1064342494原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。