美文网首页
Android编译出错记录

Android编译出错记录

作者: xiongmao_123 | 来源:发表于2021-02-08 17:55 被阅读0次

    有个项目在某台电脑中运行的好好的,Android Studio版本是4.1.2。结果换台电脑就报各种莫名其妙的错误。
    控制台提示:

    • What went wrong:
      Execution failed for task ':app:stripOppoDebugDebugSymbols'.
      Specified NDK version [1] does not have enough precision. Use major.minor.micro in version.

    说的是指定的NDK版本精度不够,要使用 major.minor.micro 这种格式的。这就纳闷了,我的项目也没使用NDK呀,也没指定NDK呀,怎么突然来这么个错误呢?

    网上查询了一番,无果。通过网上只言片语及加上自己的身经百战,我猜想是 gradle版本和gradle插件版本太高了。

    查看下这个两者的版本号:

    distributionUrl=https://services.gradle.org/distributions/gradle-6.5-all.zip
    classpath "com.android.tools.build:gradle:4.1.1"

    嗯,那就先降低版本吧,改成 gradle-6.1.1, plugin gradle 4.0.0,试下:

    distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip
    classpath "com.android.tools.build:gradle:4.0.0"

    嗯,有收获,提示大同小异,但提示信息有个明显变化,之前是说 NDK version[1],现在是给出了具体的版本号 version 21.0.6113669

    Execution failed for task ':app:stripOppoDebugDebugSymbols'.
    No version of NDK matched the requested version 21.0.6113669. Versions available locally: 1

    说明这个思路是对的。然后按这个再去搜索下。

    果然,解决方案多了起来,但都是说加上ndkVersion版本和下载对应的ndk,提供的方案是这样的:

    android {
        ndkVersion "x.x.x"
    }
    

    然后下载对应的NDK,File->Settings->System Settings->Android SDK
    勾选Show Package Details,然后选择对应的。
    或者:
    File->Project Stucture->SDK Location->Android NDK location中点击Download链接

    我猜想,如果按网上的,加上这么一行,然后下载对应的NDK应该可以编译通过。但是!一个NDK相关下载至少要1G多,更何况我的项目千真万确没使用NDK呀。

    尝试看看其他的方法。网上提供了一个重要的信息,说的是Android Studio升级到3.6.0之后就出现问题了,那就应该看看这个版本对于编译方面有什么改动。来到官网,下面这个链接:
    https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn#3-6-0

    里边它这样说道:

    默认 NDK 版本
    现在,如果您下载了多个版本的 NDK,Android Gradle 插件会选择一个默认版本来编译源代码文件。以前,该插件选择的是最新下载的 NDK 版本。使用模块的 build.gradle 文件中的 android.ndkVersion 属性可替换插件选择的默认版本

    这个意思是说,可以通过一个配置选项来替换ndk的默认版本。嗯,这是一个变动,但不能确定什么。

    还可以看到另一个重要的信息,如下:

    新的默认打包工具
    在构建应用的调试版本时,该插件会使用一个新的打包工具 zipflinger 来构建 APK。这一新工具应该能够提高构建速度。如果新的打包工具无法正常运行,请报告错误。您可以通过在 gradle.properties 文件中添加以下代码来恢复使用旧的打包工具:
    android.useNewApkCreator=false

    哦,用了新的打包工具来构建apk,可能会存在错误,如果无法正常运行,可以尝试使用关闭这个选项,好,在 gradle.properties 文件中增加下载一行:
    android.useNewApkCreator=false

    尝试编译下,OK了。如果你这样尝试不行,摊手。反正我顺利编译成功。

    更新---------------2021/02/11----------
    其中一台电脑的Android Studio版本是4.1.1,然后我编译项目,没有android.useNewApkCreator=false 这么一句,但是编译过了。然后,我把Android Studio升级到4.1.2,同样去掉这么一句,但是!却编译成功了。

    另外,同样是Android Studio 4.1.2版本,但是我注意到有个小细节不一样。底部Git版本控制中,有个版本有local change,有个版本没有;没有的那个版本在左侧有个新的面板 Commit,其中有 local change

    相关文章

      网友评论

          本文标题:Android编译出错记录

          本文链接:https://www.haomeiwen.com/subject/wjlfxltx.html