我有一個現有的Android應用程序,我想在使用Android.mk的AOSP(android源代碼樹)中構建。該應用使用AOSP源樹(AFAIK)中未包含的約束佈局。 我該如何滿足這種依賴關係?其他支持庫包括諸如recyclerview,v4等,但沒有限制佈局。如何將約束佈局庫包含在AOSP項目中
我應該下載lib aar嗎?如果是,我該如何添加/包含它? 或者我應該得到源代碼(在哪裏下載?)並在源代碼樹的某個地方構建它?
在此先感謝您的幫助。
我有一個現有的Android應用程序,我想在使用Android.mk的AOSP(android源代碼樹)中構建。該應用使用AOSP源樹(AFAIK)中未包含的約束佈局。 我該如何滿足這種依賴關係?其他支持庫包括諸如recyclerview,v4等,但沒有限制佈局。如何將約束佈局庫包含在AOSP項目中
我應該下載lib aar嗎?如果是,我該如何添加/包含它? 或者我應該得到源代碼(在哪裏下載?)並在源代碼樹的某個地方構建它?
在此先感謝您的幫助。
有幾種方法可以解決您的問題。
1.添加預建的apk
你沒有把你的源代碼在AOSP樹。 您可以將您的.apk
文件添加到packages/apps/YourApp
或vendor/yourname/packages/apps/YourApp
或your_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
缺點:您必須通過mma
或mm -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.mk
:https://wladimir-tm4pda.github.io/porting/build_cookbook.html
謝謝!選項#3像魔術一樣工作! – kotsen