【问题标题】:minSdk version in manifest prevents gradle sync with Android Studio 3.2清单中的 minSdk 版本阻止与 Android Studio 3.2 的 gradle 同步
【发布时间】:2018-11-14 17:50:02
【问题描述】:

不应在 android manifest 中声明 minSdk 版本 文件。您可以将版本从清单移动到 defaultConfig 在 build.gradle 文件中。

如果您在清单中指定了 minSdk 版本,则从 Android Studio 3.2 开始,构建会失败。尽管有这个警告,有没有办法忽略这个警告并成功构建?

【问题讨论】:

  • 为什么不把它放在 build.gradle 中,它应该在哪里?
  • 如果你将minSDK版本从manifest移动到build.gradle就不会有问题
  • 如果您仍然想要使用其他构建系统的选项。

标签: android android-studio


【解决方案1】:

我在使用 Android Make 和 Gradle 构建的应用时遇到了同样的问题。在这种情况下,无法从清单文件中删除 minSdk,因为 Android Make 将默认为 API 级别 1。

这里有一些技巧可以解决这个问题。

sourceSets {
    main {
        manifest.srcFile getModifiedManifestFile()

...

def getModifiedManifestFile() {
    File originalManifest = file(new File("./", "src/main/AndroidManifest.xml"))
    String newFileContents = originalManifest.getText('UTF-8').replace("<uses-sdk\n" +
        "        android:minSdkVersion=\"26\"\n" +
        "        android:targetSdkVersion=\"28\" />", "")
    File tmpManifest = file(new File("./", "src/main/TempAndroidManifest.xml"))
    tmpManifest.write(newFileContents)
    tmpManifest.deleteOnExit()
    return tmpManifest
}

只需替换正则表达式,使其与您的文件匹配,同步即可通过。还将临时文件添加到 .gitignore 文件中。

编辑:原始解决方案在 OS temp 文件夹中创建了文件,但 Android Studio 的运行配置不接受该文件 - 该文件需要位于项目目录中。

【讨论】:

  • 我是 Gradle 新手。我让 Unity 为我创建了一个 Gradle 模板,但我不知道如何将此解决方案合并到我的模板文件中。你有没有机会帮我解决这个@fejd?
  • @m4rkk 抱歉,我不熟悉 Unity 模板文件,但它会生成 build.gradle 文件吗?这是一次性操作还是 Unity 使 build.gradle 文件与模板保持同步?如果它只发生一次,并且 Unity 没有覆盖该文件,那么也许您可以手动编辑 build.gradle 文件以包含此解决方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多