安卓底层开发学习经验第七期

这一期我们继续探索 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)
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 时就可以判断我们的编译过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值