2017-09-25 82 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