android學習第七講:學習Android.mk編譯jar包,如何編譯APK,APK中如何導入jar包和庫文件,如何在Android.mk中添加判斷語句

這一期我們繼續探索Android.mk ,主要講的是如何編譯jar包,如何編譯APKAPK中如何導入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文件,.dexAndroid系統使用的文件格式,只能在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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章