Error: missing android-support-constraint-layout in AOSP but prebuilts/sdk/current/extras has it
Error: missing android-support-constraint-layout in AOSP but prebuilts/sdk/current/extras has it
我的 Android 源代码库已经有两个 jar 文件 android-support-constraint-layout.jar
和 android-support-constraint-layout-solver.jar
,分别位于 prebuilts/sdk/current/extras/constraint-layout/libs/
和 prebuilts/sdk/current/extras/constraint-layout-solver/
。现在,我在 packages/app 中有一个应用程序,其中有一个 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)
除了第一个, 中的 none 方法用于在 AOSP 中添加约束布局。
我在 Android-Oreo (v8.1) 的 AOSP 包之一中添加了约束布局。
从 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。这需要通过在 framework
或 external
.
中添加此 jar 来处理
我从以下博客获得帮助:
- https://sites.google.com/site/sbobovyc/home/Programming/a/creating-system-app
- http://saurabhsharma123k.blogspot.com/2017/03/add-and-use-external-library-or-jar.html
- https://kevinaboos.wordpress.com/2016/10/29/adding-an-external-library-or-jarfile-to-android-frameworks/
- https://github.com/BrahmaOS/brahmaos-packages-apps-GoodWeather/blob/master/Android.mk
我的 Android 源代码库已经有两个 jar 文件 android-support-constraint-layout.jar
和 android-support-constraint-layout-solver.jar
,分别位于 prebuilts/sdk/current/extras/constraint-layout/libs/
和 prebuilts/sdk/current/extras/constraint-layout-solver/
。现在,我在 packages/app 中有一个应用程序,其中有一个 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)
除了第一个,
我在 Android-Oreo (v8.1) 的 AOSP 包之一中添加了约束布局。
从 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。这需要通过在 framework
或 external
.
我从以下博客获得帮助:
- https://sites.google.com/site/sbobovyc/home/Programming/a/creating-system-app
- http://saurabhsharma123k.blogspot.com/2017/03/add-and-use-external-library-or-jar.html
- https://kevinaboos.wordpress.com/2016/10/29/adding-an-external-library-or-jarfile-to-android-frameworks/
- https://github.com/BrahmaOS/brahmaos-packages-apps-GoodWeather/blob/master/Android.mk