Проект библиотеки Android не использует правильные ресурсы для варианта отладки - PullRequest
0 голосов
/ 26 января 2019

Моя проблема во многом описана в следующих вопросах: Варианты сборки в Gradle для проекта библиотеки в Android

То есть я делаю модуль библиотеки с отладкой иВыпуск типов сборки, и каждый тип сборки имеет свои собственные ресурсы (например, в strings.xml).Однако ресурсы релиза всегда выбираются даже при сборке варианта отладки.

Практически все, что я читаю, указывает на то, что это было исправлено в Android Studio 3.0, но у меня версия 3.3, и проблема по-прежнему возникает,Одно из предложений, которое я видел, это использовать releaseCompile и debugCompile.Они устарели, поэтому я использовал замены:

debugImplementation project(path: ':myLibrary', configuration: 'debug')
releaseImplementation project(path: ':myLibrary', configuration: 'release')

Это приводит к следующим ошибкам:

ERROR: Unable to resolve dependency for ':app@myAppDebug/compileClasspath': Could not resolve project :myLibrary.
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@myAppDebugAndroidTest/compileClasspath': Could not resolve project :myLibrary.
Affected Modules: app

ERROR: Unable to resolve dependency for ':app@myAppDebugUnitTest/compileClasspath': Could not resolve project :myLibrary.
Affected Modules: app

Я четыре раза проверил орфографию, и она соответствует имени библиотеки.Я делал это раньше, что приводило к некорректному поведению, описанному выше:

implementation project(':myLibrary')

Из файла сборки библиотеки:

android {
    publishNonDefault true
    ...
    buildTypes {
        debug {}
        release {
            minifyEnabled false
            zipAlignEnabled true
            signingConfig signingConfigs.releaseConfig
            //proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    ...

У меня также есть тип сборки "qa", который у меня естьне обсуждается, но у меня нет оснований полагать, что это актуально, поскольку в настоящее время я не пытаюсь создать этот тип.Любые предложения или что-то еще, что я должен добавить к вопросу?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы можете изменить, какой varaint публикуется из вашей библиотеки, добавив следующую строку в ваш библиотечный проект:

android { defaultPublishConfig "debug" }

0 голосов
/ 29 января 2019

типы сборки debug и release по умолчанию варианты сборки ; ссылка на configuration может работать только на productFlavors (как подсказывает библиотека Android документация ).

publishNonDefault и defaultPublishConfig полезны только для внешней публикации .

согласно , выпуск 68778928 :

Библиотеки всегда публикуют все свои варианты , теперь , поэтому свойство DSL не действует.

один из возможных обходных путей - добавить уже построенные артефакты на classifier:

artifacts {
    archives file: file('build/outputs/aar/my-library-debug.aar'), classifier: 'debug'
    archives file: file('build/outputs/aar/my-library-release.aar'), classifier: 'release'
 }
...