我有一个现有的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