2017-09-25 154 views
1

我有一個現有的Android應用程序,我想在使用Android.mk的AOSP(android源代碼樹)中構建。該應用使用AOSP源樹(AFAIK)中未包含的約束佈局。 我該如何滿足這種依賴關係?其他支持庫包括諸如recyclerview,v4等,但沒有限制佈局。如何將約束佈局庫包含在AOSP項目中

我應該下載lib aar嗎?如果是,我該如何添加/包含它? 或者我應該得到源代碼(在哪裏下載?)並在源代碼樹的某個地方構建它?

在此先感謝您的幫助。

回答

2

有幾種方法可以解決您的問題。

1.添加預建的apk

你沒有把你的源代碼在AOSP樹。 您可以將您的.apk文件添加到packages/apps/YourAppvendor/yourname/packages/apps/YourAppyour_dir_name/packages/apps/YourApp中,然後創建一個Android.mk文件供構建系統確定您的應用程序。 你Android.mk將是這樣的:

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

LOCAL_MODULE := YourApplication # your .apk name 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk 
LOCAL_MODULE_CLASS := APPS 
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) 

include $(BUILD_PREBUILT) 

優點:你可以用gradle構建您的項目。

2.添加源代碼AOSP

如果你仍然想你的源代碼放置到packages/apps,並建立它在那裏,你可以把一個ConstrainsLayout在項目的libs/目錄,並添加到您的Android.mk像:

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

    # List of static libraries to include in the package 
    LOCAL_STATIC_JAVA_LIBRARIES := constraint-layout 

    # Build all java files in the java subdirectory 
    LOCAL_SRC_FILES := $(call all-subdir-java-files) 

    # Name of the APK 
    LOCAL_PACKAGE_NAME := YourApplication 

    # Tell it to build an APK 
    include $(BUILD_PACKAGE) 

如果你不會得到它的工作(我不符合這個問題,but he did):

​​

其他的東西,最後

include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libconstraint-layout:libs/constraint-layout.aar 

缺點:您必須通過mmamm -B要麼用make來構建你的代碼,或有gradle作爲發展的第二個構建系統。第二個選項將起作用,但要建立一個完整版本,並且要在內建out/目錄,則必須使用make來構建它。

3.添加ConstraintLayout

如果你想有幾個應用程序,它使用一個約束佈局,可以將其添加爲新的庫模塊作爲預編譯.aar。 可分別位於'vendor/yourname/libs'或'your_dir_name/libs'中。 它類似於添加預構建的.apk(我沒有添加任何這樣的.aar,所以這沒有經過我的測試,可以包含錯誤!):

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

LOCAL_MODULE := constraint-layout 
LOCAL_SRC_FILES := $(LOCAL_MODULE).aar 
LOCAL_MODULE_SUFFIX := .aar 

include $(BUILD_PREBUILT) 

而在這之後,在應用程序的Android.mk你將不得不補充:

LOCAL_STATIC_JAVA_LIBRARIES := constraint-layout 

或者,您可以在ConstraintLayout.aar添加到prebuilds/,因爲它最終將在那裏一天。

這是一個很好的話題有關Android.mkhttps://wladimir-tm4pda.github.io/porting/build_cookbook.html

+0

謝謝!選項#3像魔術一樣工作! – kotsen