在android源碼編譯中導入第三方jar包

參考了http://fanwei51880.blog.163.com/blog/static/32406740201152014035893/  fanwei51仁兄的文章

源碼編譯,我們可以只留下app的src,res目錄和androidmanifest.xml文件,在app的根目錄添加一個android.mk文件,還有我們需要導入的jar包,我這裏是libjsoup-1.7.1.jar;

1.我們先寫好Android.mk文件;

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional  
LOCAL_STATIC_JAVA_LIBRARIES := libjsoup
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := FileExpert

include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libjsoup:libjsoup-1.7.1.jar
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH)) 

 LOCAL_STATIC_JAVA_LIBRARIES指明我們apk依賴的庫,libjsoup是依賴庫的別名。

    LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libjsoup:libjsoup-1.7.1.jar ,  在這裏定義了我們上面使用的libjsoup,規則是  “庫別名:jar包在app下的路徑”,比如這裏的libjsoup.jar就是在app的根目錄下面;

2.接着  要修改一下user_tags.mk文件;

    user_tags.mk有兩個 一個在build/core下面(這個是google的),一個在vendor/xxx/product_name下面(這個是方案廠商的),建議修改vendor下的;

    向user_tags.mk文件裏的GRANDFATHERED_USER_MODULES變量追加libjsoup,加在文件末尾就行了,記住是 +=  而不是 = ;還有libjsoup前面是tab鍵,不是空格;

# OTA server modules
GRANDFATHERED_USER_MODULES += \
        libjsoup

  

        Android.mk文嘉的其它部分就按上面的寫好了,只是LOCAL_PACKAGE_NAME := FileExpert要換成你想要的,按照這個編譯出來,最後就是FileExpert.apk文件了。

  至此,Android.mk文件編輯好,回到Android源碼總目錄,叫Android-src好了。在Android-src目錄下,執行命令:

. build/envsetup.sh

  執行這個命令主要是設置一下當前shell的環境變量。

        然後a: 在Android-src目錄下  make FileExpert

        或者b: 進入到你apk的源碼目錄,如我這裏放到Android-src/packages/apps/FileExpert,所以我就到這個目錄下執行這個命令

mm TARGET_PRODUCT=product_name

  這個TARGET_PRODUCT=product_name隨你了,如果你原來編譯系統直接用的是make命令,那麼這個TARGET_PRODUCT=product_name也可以省下了,直接執行mm就可以了。

  編譯完後,你就可以去Android-src/out/target/product/product_name/system/app目錄下找你的apk文件了。

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