Я создал библиотеку, которая имеет зависимость от ограничения ограничений. Эта библиотека включена в новый проект через файл aar. Проект выдает следующую ошибку для всех используемых атрибутов appNS.
home/vishal/.gradle/caches/transforms-1/files-1.1/my_library.aar/9012247ff26b45ffb7af7d608db342c5/res/layout/activity_main.xml: 70: AAPT: ошибка: атрибут layout_constraintBottom_tointoptof_.shop (пример): найденный.
Библиотека компиляции SDK: 28, версия поддержки: 28.0.0
ConstraintLayout добавлен как реализация в библиотеку. Библиотека AAR включена в проект следующим образом:
dependencies {
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation files('libs/my_library.aar')
}
Я попытался преобразовать библиотеку и проект в androidX, но проблема сохраняется.
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>
Чтобы протестировать сценарий с существующими библиотеками [Обновление]: я добавил макет ограничения в библиотеку скретч-карт [ https://github.com/Veeshal/scratchCardLayout ] вместе с действием и его макетом, реализующим макет ограничения. Импортировал его как файл aar. Я не получил никакой ошибки при сборке. Чтобы проверить, создайте пример проекта и добавьте сгенерированный файл AAR из модуля scratchcardlayout в общий репозиторий github.
Нельзя просто добавить локальную зависимость AAR
так же, как зависимость JAR
.
Требуется настроить локальный репозиторий flatDir
в корневом проекте build.gradle
:
allprojects {
repositories {
...
flatDir {
dirs "libs"
}
}
}
Тогда можно ссылаться на AAR
почти так же, как на любую другую зависимость; обратите внимание на @aar
:
implementation "com.acme:somelibrary:1.0.0@aar"
И, скорее всего, вам также придется использовать api
вместо implementation
(в модуле библиотеки)
... для того, чтобы выставить ConstraintLayout
"потребителю библиотеки" (который является модулем приложения).
exclude
ConstraintLayout
изimplementation
и явно добавить его непосредственно вdependencies
модуля приложения. зависимости, как вы разместили их выше, в каждом случае неверны и могут иметь небольшой эффект ... тем не менее, нижняя половина моего ответа применима.