错误:AOSP中缺少android支持约束布局,但prebuilts/sdk/current/extra有它



我的Android源repo已经有两个jar文件android-support-constraint-layout.jarandroid-support-constraint-layout-solver.jar,分别位于prebuilts/sdk/current/extras/constraint-layout/libs/prebuilts/sdk/current/extras/constraint-layout-solver/。现在,我有一个软件包/应用程序中的应用程序,其中有一个app/src/main/Android.mk:

LOCAL_STATIC_ANDROID_LIBRARIES := 
...
android-support-constraint-layout 
android-support-constraint-layout-solver

尽管如此,我在编译Android后还是得到了以下错误:

error: FirstApp (APPS android-x86) missing android-support-constraint-layout (JAVA_LIBRARIES android-x86)
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
error: FirstApp (APPS android-x86) missing android-support-constraint-layout-solver (JAVA_LIBRARIES android-x86)

除了第一个方法外,此链接中的任何方法都无法在AOSP中添加约束布局。

我在AOSP for Android Oreo(v8.1(的一个包中添加了约束布局。

从maven存储库下载constraint-layout(.aar(和constraint-layout-solver(.jar(:https://mvnrepository.com/artifact/com.android.support.constraint/constraint-layout/1.0.2,https://mvnrepository.com/artifact/com.android.support.constraint/constraint-layout-solver/1.0.2将它们放在应用程序主页(packages/apps/AnotherFirstApp/(的libs/文件夹中。

Android.mk:中

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := AnotherFirstApp
LOCAL_MODULE_TAGS := optional
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PROGUARD_FLAG_FILES := ../../../frameworks/support/design/proguard-rules.pro

ifeq ($(TARGET_BUILD_APPS),)
support_library_root_dir := frameworks/support
else
support_library_root_dir := prebuilts/sdk/current/support
endif
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res 
$(support_library_root_dir)/design/res 
$(support_library_root_dir)/v7/cardview/res 
$(support_library_root_dir)/v7/recyclerview/res 
$(support_library_root_dir)/v7/appcompat/res
LOCAL_AAPT_FLAGS := 
--auto-add-overlay 
--extra-packages android.support.design 
--extra-packages android.support.v7.cardview 
--extra-packages android.support.constraint 
--extra-packages android.support.v7.recyclerview 
--extra-packages android.support.v7.appcompat
LOCAL_STATIC_JAVA_LIBRARIES := 
android-support-design 
android-support-v7-recyclerview 
android-support-v4 
android-support-v7-cardview 
android-support-v7-appcompat 
constraint-layout-solver 
LOCAL_STATIC_JAVA_AAR_LIBRARIES := 
constraint-layout
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := 
constraint-layout:libs/constraint-layout-1.0.2.aar 
constraint-layout-solver:libs/constraint-layout-solver-1.0.2.jar 
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))

现在,没有问题了。该应用程序构建和运行良好。可能存在一个问题,因为没有以共享jar之类的方式添加约束求解器,以防其他应用程序也在尝试使用此jar。这需要通过在frameworkexternal中添加这个jar来处理。

我得到了以下博客的帮助:

  1. https://sites.google.com/site/sbobovyc/home/Programming/a/creating-system-app
  2. http://saurabhsharma123k.blogspot.com/2017/03/add-and-use-external-library-or-jar.html
  3. https://kevinaboos.wordpress.com/2016/10/29/adding-an-external-library-or-jarfile-to-android-frameworks/
  4. https://github.com/BrahmaOS/brahmaos-packages-apps-GoodWeather/blob/master/Android.mk

最新更新