如何在 AOSP 构建期间使用约束布局而不包含外部 .aar 和 .jar
How to use constraint-layout during AOSP build without including external .aar and .jar
我正在尝试通过构建为 AOSP 源代码中的模块来构建基于 java 的 android 应用程序。我的应用程序使用 android.support.constraint.ConstraintLayout
。但是,我没有找到在 Android.mk
.
中包含约束布局依赖项的直接方法
我已将我的项目放在 AOSP_ROOT/packages/apps
下并尝试使用此 Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := MyApp
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.constraint
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-v4 \
android-support-constraint-layout-solver
LOCAL_STATIC_JAVA_AAR_LIBRARIES := \
android-support-constraint-layout
include $(BUILD_PACKAGE)
但是,这会出现构建错误:
ninja: error: 'out/target/common/obj/JAVA_LIBRARIES/android-support-constraint-layout_intermediates/aar/classes.jar', needed by 'out/target/common/obj/APPS/MyApp_intermediates/AndroidManifest.xml', missing and no known rule to make it
20:57:54 ninja failed with: exit status 1
据我了解 - 它正在搜索可以从 .aar
文件构建的 classes.jar
,但它丢失了。然而,这里的答案解决了这个问题:
但是,问题是,该答案建议在我的项目 libs
目录中添加外部 constraint-layout.aar
和 constraint-layout-solver.jar
。
我的问题是,是否可以使用 AOSP 中的内置库在我的项目中添加 constraint-layout
支持,而无需向我的项目添加外部 .aar
和 .jar
?
无论如何,我找到了解决办法。无需将 constraint-layout
作为额外库包含在项目 libs
中。
为了解决这个问题,我们需要在Android.mk
中添加一行:
LOCAL_USE_AAPT2 := true
并且还使用 LOCAL_STATIC_ANDROID_LIBRARIES
而不是 LOCAL_STATIC_JAVA_AAR_LIBRARIES
。
这是工作 Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := MyApp
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_USE_AAPT2 := true
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.constraint
LOCAL_STATIC_ANDROID_LIBRARIES:= \
android-support-constraint-layout
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-v4 \
android-support-constraint-layout-solver
include $(BUILD_PACKAGE)
我正在尝试通过构建为 AOSP 源代码中的模块来构建基于 java 的 android 应用程序。我的应用程序使用 android.support.constraint.ConstraintLayout
。但是,我没有找到在 Android.mk
.
我已将我的项目放在 AOSP_ROOT/packages/apps
下并尝试使用此 Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := MyApp
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.constraint
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-v4 \
android-support-constraint-layout-solver
LOCAL_STATIC_JAVA_AAR_LIBRARIES := \
android-support-constraint-layout
include $(BUILD_PACKAGE)
但是,这会出现构建错误:
ninja: error: 'out/target/common/obj/JAVA_LIBRARIES/android-support-constraint-layout_intermediates/aar/classes.jar', needed by 'out/target/common/obj/APPS/MyApp_intermediates/AndroidManifest.xml', missing and no known rule to make it 20:57:54 ninja failed with: exit status 1
据我了解 - 它正在搜索可以从 .aar
文件构建的 classes.jar
,但它丢失了。然而,这里的答案解决了这个问题:
但是,问题是,该答案建议在我的项目 libs
目录中添加外部 constraint-layout.aar
和 constraint-layout-solver.jar
。
我的问题是,是否可以使用 AOSP 中的内置库在我的项目中添加 constraint-layout
支持,而无需向我的项目添加外部 .aar
和 .jar
?
无论如何,我找到了解决办法。无需将 constraint-layout
作为额外库包含在项目 libs
中。
为了解决这个问题,我们需要在Android.mk
中添加一行:
LOCAL_USE_AAPT2 := true
并且还使用 LOCAL_STATIC_ANDROID_LIBRARIES
而不是 LOCAL_STATIC_JAVA_AAR_LIBRARIES
。
这是工作 Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := MyApp
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_USE_AAPT2 := true
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.constraint
LOCAL_STATIC_ANDROID_LIBRARIES:= \
android-support-constraint-layout
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-v4 \
android-support-constraint-layout-solver
include $(BUILD_PACKAGE)