AndroidX внезапно вызывает сбой сборки для NativeScript - PullRequest
4 голосов
/ 18 июня 2019

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

Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
        is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
        Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:18:2-31:16 to override.

Я попытался применить предложение (вместе с соответствующим атрибутом XML пространства имен), но, к сожалению,это выдает сообщение в виде multiple errors, see logs, но я не знаю, где журналы.

Я прочитал и прочитал это, и я понимаю, что это проблема с попыткой иметь AndroidX итеперь устаревшие библиотеки поддержки в то же время.Однако я не изменил ни одну из своих зависимостей до того, как это внезапно прекратило сборку - только очистил мои платформы для принудительной полной перестройки.

Я не знаю, какие плагины конфликтуют, и я также понимаю, что Jetifier должен исправить это, за исключением того, что NativeScript, кажется, не дает мне возможности изменять gradle.properties любым постоянным способом (который мне известен), и в настоящее время последняя версия NativeScript (которая сбивает с толку, потому что NativeScript - это 5.4.1, базовые модули TNS - это 5.4.2, а платформа, добавленная в моем package.json, похоже, 5.4.0), похоже, не использует Jetifier, а последняя сборка AndroidX на NPMкажется, немного устарел.

Итак, как мне восстановить и запустить мое приложение сейчас?Помогите! * * 1023

Ответы [ 5 ]

5 голосов
/ 18 июня 2019

Итак, я исправил это, переместив мои зависимости поддержки в before-plugins.gradle, который теперь выглядит следующим образом:

project.ext {
  googlePlayServicesVersion = "15.0.0"
}

dependencies {
  compile 'com.squareup.picasso:picasso:2.71828'
  def googlePlayServicesVersion = project.googlePlayServicesVersion
  compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
  compile "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
  def supportVer = "28.0.0"
  compile "com.android.support:support-v4:$supportVer"
  compile "com.android.support:appcompat-v7:$supportVer"
  compile "com.android.support:design:$supportVer"
}

И для хорошей меры, вот мой app.gradle:

android {
  defaultConfig {
    // Fix for: The number of method references in a .dex file cannot exceed 64K.
    // (see: https://developer.android.com/tools/building/multidex.html)
    multiDexEnabled true
    minSdkVersion 17
    generatedDensities = []
  }
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

def settingsGradlePath

if(project.hasProperty("appResourcesPath")){
    settingsGradlePath = "$project.appResourcesPath/Android/settings.gradle";
} else {
    settingsGradlePath = "$rootDir/../../app/App_Resources/Android/settings.gradle";
}

def settingsGradleFile = new File(settingsGradlePath);

if(settingsGradleFile.exists())
{
    apply from: settingsGradleFile;
}
0 голосов
/ 19 июня 2019

Возникла та же ошибка, проверьте версию библиотеки, для меня проблема с Firebase.

before-plugins.gradle

project.ext {
    googlePlayServicesVersion = "15.0.1"
    googleFirebaseServicesVersion = "18.0.0"
}

dependencies {

    def googlePlayServicesVersion = project.googlePlayServicesVersion
    compile "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
    compile "com.google.firebase:firebase-messaging:$googleFirebaseServicesVersion"
}
0 голосов
/ 19 июня 2019

Я только обновил GooglePlayservices до 15.0.0 и добавил это в AndroidManifest внутри <application>.

 <application>
     ...
              <uses-library android:name="org.apache.http.legacy" 
               android:required="false"/>
     ...            

    <application/>
0 голосов
/ 19 июня 2019

Я исправил это, взглянув на приложение ./gradlew app: dependencies, и исправил любой пакет, который, по-видимому, использует обновленную зависимость, использующую androidx в предыдущей версии.

enter image description here

Итак, вы можете видеть здесь, что tagmanager был разрешен как 17, потому что зависимость использует '+', поэтому вместо этого я исправил это значение до 16.0.8

implementation (project(':react-native-device-info')) {
    exclude group: 'com.google.android.gms', module: 'play-services-gcm'
}

implementation (project(':react-native-google-analytics-bridge')){
    exclude group: 'com.google.android.gms', module: 'play-services-analytics'
    exclude group: 'com.google.android.gms', module: 'play-services-tagmanager-v4-impl'
}
implementation (project(':react-native-admob')) {
    exclude group: 'com.google.android.gms', module: 'play-services-ads'
}

implementation ('com.google.android.gms:play-services-gcm:16.1.0') {
    force = true
}

implementation ('com.google.android.gms:play-services-ads:17.2.0') {
    force = true
}

implementation ('com.google.android.gms:play-services-analytics:16.0.8') {
    force = true
}

implementation ('com.google.android.gms:play-services-tagmanager-v4-impl:16.0.8') {
    force = true
}
0 голосов
/ 19 июня 2019

Форсирование следующих зависимостей сделало это для меня.

dependencies {

    compile 'com.google.android.gms:play-services-analytics:16.0.4'

    implementation('com.google.android.gms:play-services-analytics:16.0.6'){

    force = true

  }

  implementation('com.google.android.gms:play-services-base:16.1.0'){

    force = true

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...