Android支持回声46.0.0与Android Studio 2.3

随着Android Studio通知popup,我今天更新了支持库到46.0.0。

我去了下面的错误:

错误:执行任务':app:processDevDebugManifest'失败。

清单合并失败:属性meta-data#android.support.VERSION value =(25.3.0)from [com.android.support:support-v13:25.3.0] AndroidManifest.xml:27:9-31也是目前在[com.android.support:preference-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38值=(26.0.0-alpha1)。 build议:在AndroidManifest.xml:25:5-27:34的元素中添加'tools:replace =“android:value”'来覆盖。

我更新了所有依赖关系,使用25.3.0版本的修订版本26.0.0 Alpha 1,但事实certificate我需要将compileSdk从25增加到26.如果您有AS 2.3,则不能这样做,您需要获取不稳定的alpha / beta版本来自金丝雀。

此链接显示更改: https : //developer.android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1

关于迁移到新的Android O,这是链接: https : //developer.android.com/preview/migration.html

看来使用AS稳定版本将不会使用新的存储库。

我怎样才能回到Android Studio储存库版本45,而不是新的46?

**更新:合并的清单显示其中一个生成的库清单包含

<meta-data android:name="android.support.VERSION" android:value="26.0.0-alpha1" /> 

但是由于这是一个生成的文件编辑是无用的,这就是为什么现在我坚持45回合,直到新的AS在稳定的构build

有什么问题

有些库依赖于Android支持库的版本“X或更新”,所以Gradle依赖关系parsing捕获最新的可用忽略你的东西实际上有一个在你的dependencies块中指定的精确版本。

这不是你想要的。 您希望所有支持相同版本和主要版本的支持库必须与编译SDK版本匹配。

什么是解决scheme

幸运的是,你可以强制一个特定的支持库版本。

把这个放在你的应用程序模块 build.gradle

 configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.0' } } } } 

当然,用你正在使用的任何东西replace版本。

dependecies块中支持库的版本值现在不相关。

如果你有疑问

这是一个有据可查的方法 ,它的工作。

你能帮什么忙

查找依赖于一系列支持库版本的库

 gradlew dependencies --configuration compile -p <module name> | grep , 

并让这些图书馆的作者知道他们应该依靠他们的图书馆可以完成的最古老的支持库

这旨在完全避免这个问题。

他们是一个解决scheme:

  1. 转到项目资源pipe理器视图
  2. 到底是他们的外部图书馆
  3. 查看哪个库正在使用26.0.0-alpha6
  4. 现在在步骤3中在库的基础上写在app.gradle

防爆。 在我的情况下:

 configurations.all { resolutionStrategy.force 'com.android.support:appcompat-v7:25.3.0' resolutionStrategy.force 'com.android.support:support-v13:25.3.0' } 

这将迫使项目使用提到的库。

我认为最好的解决scheme是将Android支持库恢复到版本45。

要做到这一点,打开此链接(更改版本以适合您的需求)

https://dl-ssl.google.com/android/repository/android_m2repository_r45.zip

下载时,解压并将m2repository复制到android-sdk-root-folder \ extras \ android。 确保在解压缩之前删除现有的m2repository以避免问题。

步骤1

要逃避Gradle检查不兼容的com.android.support版本,一个快速的解决scheme是在应用程序模块build.gradle添加以下代码。

 dependencies { //noinspection GradleCompatible } 

这是一个暂时的解决scheme,不能解决潜在的问题! 它有助于继续开发您的应用程序,只需最less的修改

第2步

将其添加到主清单文件AndroidManifest.xml

 <meta-data tools:replace="android:value" android:name="android.support.VERSION" android:value="25.3.1" /> 

此支持存储库的下一个更新之一可用时将被删除。

第3步

在应用程序模块build.gradle文件的末尾添加以下代码:

 configurations.all { resolutionStrategy.eachDependency { details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.1' } } } } 

注意 :build议确保您的Gradle库已更新并兼容,以避免运行时错误。

这是一个暂时的解决scheme,不能解决潜在的问题! 它帮助我以最小的修改继续开发软件。 只需将其添加到主清单:

 <meta-data tools:replace="android:value" android:name="android.support.VERSION" android:value="25.3.0" /> 

此条目可能希望通过支持存储库的下一个更新之一再次删除。

解决scheme:标记的解决scheme为我工作,通过添加以下4我的10 build.gradle文件:

 configurations.all { resolutionStrategy.eachDependency { details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.0' } } } } 

只要做到这一切: –

编译“com.android.support:appcompat-v7:25.3.1”

这里v7:25.3.1是我刚刚把你的urs当前版本。

在应用程序gradle文件中