gpt4 book ai didi

java - 导入模块后 list 合并失败

转载 作者:太空狗 更新时间:2023-10-29 14:35:33 28 4
gpt4 key购买 nike

您好,我正在开发一个 sdk,当我将这些 SDK 添加到应用程序项目中时,出现以下错误:

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.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:22:5-125:19 to override.

build.gradle 如下

应用构建.gradle

dependencies {
implementation project(':sdkA')
implementation project(':sdkB')

implementation 'org.webrtc:google-webrtc:1.0.28032'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
implementation 'com.android.support:preference-v14:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:gridlayout-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'io.michaelrocks:libphonenumber-android:8.4.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.google.android:flexbox:1.0.0'
implementation 'com.github.woxthebox:draglistview:1.6.3'
implementation 'com.balysv:material-ripple:1.0.2'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'

implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
transitive = true
}

// Google Lifecycle Components
implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

sdkA的build.gradle

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'org.webrtc:google-webrtc:1.0.28032'

implementation('io.socket:socket.io-client:1.0.0') {
exclude group: 'org.json', module: 'json'
}

implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
transitive = true
}


implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'



// Google Lifecycle Components
implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

implementation 'androidx.appcompat:appcompat:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

sdkB的build.gradle

dependencies {
implementation "com.android.support:appcompat-v7:27.1.1"
implementation "com.android.support:recyclerview-v7:27.1.1"
}

如何解决?

谢谢

最佳答案

好的,在过去一天左右的时间里,我一直在自己解决这个问题。噩梦。

但我现在至少在我一直从事的项目中可以使用它,该项目非常大并且有很多额外的 android 依赖项。

请参阅本期,其中 Mike Hardy 提供了很大帮助。 https://github.com/mikehardy/jetifier/issues/27

我建议在 0.60.0 发布之前避免使用 AndroidX。

问题的根源我们大多数人的问题根源是 + gradle 依赖项中的范围选择器。

如 react-native-google-analytics-bridge 中的示例所示:

    compile "com.google.android.gms:play-services-analytics:${safeExtGet('googlePlayServicesVersion', '+')}"
compile "com.google.android.gms:play-services-tagmanager-v4-impl:${safeExtGet('googlePlayServicesVersion', '+')}"

对于我们大多数人来说,我们不会在顶级 android/build.gradle 中设置 googlePlayServicesVersion 值

所以我们要指定 googlePlayServicesVersion = "16.+" + 因为还有其他各种可用的谷歌服务包,而且它们的版本号不尽相同。这将捕获 16.X.X 而不会超过。 17.X.X 持有进一步的问题。

我们还想将 supportLibVersion 设置为 28.0.0,它由 android 支持库使用:com.android.support:appcompat-v7 最常见。

解决方案

android/build.gradle

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 21
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
googlePlayServicesVersion = "16.+"
}
...

AndroidManifest.xml顶行: <manifest
xmlns:tools="http://schemas.android.com/tools"

应用标签: tools:replace="android:appComponentFactory"
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

确保你的 gradle-wrapper.properties 使用 4.10.1

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

最后确保您没有使用 android X。

gradle.properties:

android.enableJetifier=false
android.useAndroidX=false

附加步骤(您可能需要这个)

如果失败,那也不起作用,请尝试添加 jetifier。我们将使用它来运行您的 node_modules 并确保一切都在使用非 androidx 库。

npm i jetifier --save-devyarn add jetifier --dev

然后添加到安装后脚本

"scripts": {
"postinstall": "jetify -r"
}

关于java - 导入模块后 list 合并失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com