Ошибка: отсутствует AOSP-поддержка-ограничение-компоновка в AOSP, но есть в prebuilts / sdk / current / extras - PullRequest
1 голос
/ 25 октября 2019

В моем репозитории 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/. Теперь у меня есть приложение в пакетах / 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)

За исключениемВо-первых, ни один из методов в по этой ссылке не работает для добавления макета ограничения в AOSP.

1 Ответ

0 голосов
/ 06 ноября 2019

Я добавил компоновку ограничений в один из пакетов в AOSP для Android-Oreo (v8.1).

Загрузите constraint-layout (.aar) и constraint-layout-solver (.jar)из репозитория maven: 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 Поместите их в папку libs/ в домашнем приложении (packages/apps/AnotherFirstApp/).

В 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.

Я получил помощь в следующих блогах:

  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
...