我用到這個(gè)的原因就是上述的第三點(diǎn),完全不知道這個(gè)eclipse發(fā)了什么神經(jīng),明明是正確代碼卻總是報(bào)錯(cuò)。于是乎將其放在Android源碼里,只留下res和src目錄,以及AndroidManifest.xml文件。由于這個(gè)工程還用到了兩個(gè)jar文件,所以也將它們拷貝過來。然后編輯Android.mk文件(這里主要就是講這個(gè)mk文件如何編寫),就可以看到目錄下是如此的:
Analytics_Android_SDK_2.0.jar AndroidManifest.xml Android.mk jcifs-1.3.15.jar res src
那么,如何編輯Android.mk呢?首先看我這個(gè)Android.mk的寫法:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional#debug
LOCAL_STATIC_JAVA_LIBRARIES := libanalytics \
libjcifsLOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := FileExpert
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libanalytics:Analytics_Android_SDK_2.0.jar \
libjcifs:jcifs-1.3.15.jar
include $(BUILD_MULTI_PREBUILT)
解釋一下,其中LOCAL_MODULE_TAGS := optional是說可以配置的,要在core.mk配置,如果你是想將其預(yù)裝到系統(tǒng)里,最好去配置一下,或者直接:=debug好了。如果不是的話,只是想單獨(dú)編譯一下這個(gè)apk,那隨你怎么寫了,我這里寫的就是optional,并且沒有在其它build目錄下的mk文件里添加內(nèi)容,因?yàn)槲抑恍枰幾g這一個(gè)apk。
LOCAL_STATIC_JAVA_LIBRARIES是這個(gè)apk也依賴的庫。在eclipse里都好說,只要改一下build path就可以了。但是在Android源碼里就沒有這么好了,得自己加上去。這里,我用到的兩個(gè)jar庫都是Analytics_Android_SDK_2.0.jar和jcifs-1.3.15.jar,這里兩個(gè)libanalytics和libjcifs的名字隨你怎么取好了,但是關(guān)鍵取好之后要記得,還用得著它們呢??催@個(gè)mk文件的倒數(shù)兩三行LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libanalytics:Analytics_Android_SDK_2.0.jar libjcifs:jcifs-1.3.15.jar,這里就指定了這兩個(gè)庫跟剛才兩個(gè)名字的關(guān)聯(lián)關(guān)系了。后面的include $(BUILD_MULTI_PREBUILT)可別忘記了,這里就跟另一個(gè)文件有關(guān)了。
在build/core/user_tags.mk里,這個(gè)build目錄是android源碼總目錄下面的build目錄,幾乎所有的編譯規(guī)則都在這個(gè)目錄下。修改user_tags.mk文件里的GRANDFATHERED_USER_MODULES變量,在末尾處添加上面寫的兩個(gè)lib,我這里的這個(gè)文件原來的末尾是zipalign,所以添加兩個(gè)之后就是這樣的:
zipalign \
libanalytics \
libjcifs
這個(gè)就對應(yīng)著上面寫的那個(gè)名字,所以說上面寫過的東西都要記得。Android.mk文嘉的其它部分就按上面的寫好了,只是LOCAL_PACKAGE_NAME := FileExpert要換成你想要的,按照這個(gè)編譯出來,最后就是FileExpert.apk文件了。
至此,Android.mk文件編輯好,回到Android源碼總目錄,叫Android-src好了。在Android-src目錄下,執(zhí)行命令:
. build/envsetup.sh
執(zhí)行這個(gè)命令主要是設(shè)置一下當(dāng)前shell的環(huán)境變量。然后進(jìn)入到你apk的源碼目錄,如我這里放到Android-src/packages/apps/FileExpert,所以我就到這個(gè)目錄下執(zhí)行這個(gè)命令
mm TARGET_PRODUCT=product_name
這個(gè)TARGET_PRODUCT=product_name隨你了,如果你原來編譯系統(tǒng)直接用的是make命令,那么這個(gè)TARGET_PRODUCT=product_name也可以省下了,直接執(zhí)行mm就可以了。
編譯完后,你就可以去Android-src/out/target/product/product_name/system/app目錄下找你的apk文件了。