Android.mk ,主要讲的是如何编译 jar 包,如何编译 APK , APK 中如何导入 jar 包和库文件,如何在 Android.mk 中添加判断语句
APK,
APK 的主要程序代码:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := LocalPackage
include $(BUILD_PACKAGE)
:编译生成 apk
:编译生成 apk 的名字
apk 的小例子:
. build/envsetup.sh , 然后选择我们的 lunch ,我们来那我们的原生系统应用来举个例子,我们来看一下 pankage/apps/ 下都有哪些原生应用 ls pankage/apps/ 然后我们来看一下这个 Calculator 的代码
vi pankage/apps/Calculator/Android.mk
就是调用我们当前目录下的所有 java 的文件
指定的是我们当前 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)
编译生成静态 jar 包
: 编译生成共享 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)
静态 jaeger 包 )
(动态 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)
:预编译
:指定编译生成文件类型
下面我们来看一下预编译生成文件的类型
Android.mk 中添加判断语句
文件,将 ifeq 的判断语句添加进去
vi external/test/Android.mk
当时呢,我们在这里尝试了两种方式,现在我们通过判断的方式来确定使用哪种方式
下面我们将判断的语句添加进去
touch src/main.cpp 然后 mm
这样虽然编译通过了,但是我们不知道编译的是静态库还是动态库,我们再来添加点错误代码来看一下,
行出的错还是在 25 行出的错,执行 mm 编译命令
行出的错,所以当我们的 USED_SHARE=true 的话,我们程序走的就是动态库,然后我们将 true 改成 false ,我们再来执行编译 mm
ifeq 时就可以判断我们的编译过程