Атрибуты limitintlayout в aar не распознаются при сборке - PullRequest
1 голос
/ 08 апреля 2019

Я создал библиотеку, которая зависит от ограничения ограничений.Эта библиотека включена в новый проект через файл aar.Проект выдает следующую ошибку для всех используемых атрибутов appNS.

home / vishal / .gradle / caches / transforms-1 / files-1.1 / my_library.aar / 9012247ff26b45ffb7af7d608db342c5 / res / layout / activity_main.xml: 70: AAPT: ошибка: атрибут layout_constraintBottom_toTopOf (он же com.example.sampleapp: layout_constraintBottom_toTopOf) не найден.

Библиотека компиляции SDK: 28, версия поддержки: 28.0.0

ConstraintLayoutдобавляется как реализация в библиотеке.Библиотека aar включена в проект следующим образом:

dependencies {
    implementation fileTree(include: ['*.aar'], dir: 'libs')
    implementation files('libs/my_library.aar')
}

Я попытался преобразовать библиотеку и проект в androidX, но проблема сохраняется.

Примечание:

Для тестирования сценария с существующими библиотеками [Обновление]: Я добавил макет ограничения в библиотеку скретч-карт [https://github.com/Veeshal/scratchCardLayout] вместе с действием и его макетом, реализующим ограничениераскладка.Импортировал его как файл aar.Я не получил никакой ошибки при сборке.Для проверки создайте пример проекта и добавьте сгенерированный файл AAR из модуля scratchcardlayout в общий репозиторий github.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    .....

    <!-- Optional Design -->
    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone">

        ....

    </android.support.constraint.ConstraintLayout>

    <!-- Selected Design -->
    <android.support.constraint.ConstraintLayout
        android:id="@+id/cl_cropping_layer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:visibility="visible"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent">

        ....

    </android.support.constraint.ConstraintLayout>

    .....

</android.support.constraint.ConstraintLayout>

1 Ответ

0 голосов
/ 08 апреля 2019

Нельзя просто добавить локальную AAR зависимость как JAR зависимость.

Требуется настроить локальное flatDir хранилище в корневом проекте build.gradle:

allprojects {
    repositories {
        ...
        flatDir {
            dirs "libs"
        }
    }
}

Тогда можно ссылаться на AAR почти так же, как на любую другую зависимость; обратите внимание на @aar:

implementation "com.acme:somelibrary:1.0.0@aar"

И, скорее всего, вам также придется использовать api вместо implementation (в модуле библиотеки)

... для того, чтобы выставить ConstraintLayout «потребителю библиотеки» (который является модулем приложения).

...