【问题标题】:Debug mode its ok but release mode error?调试模式没问题,但发布模式错误?
【发布时间】:2018-06-28 10:38:42
【问题描述】:

我的应用程序已编译并在调试模式下正常工作。但是在发布模式下编译屏幕图像时会出错,如下所示

按需配置是一项孵化功能。 NDK 缺少一个 “平台”目录。如果您使用的是 NDK,请验证 ndk.dir 是否已设置 到一个有效的 NDK 目录。目前设置为 C:\Users\pel\AppData\Local\Android\Sdk\ndk-bundle。如果你不是 使用 NDK,从 ANDROID_NDK_HOME 或取消设置 NDK 变量 local.properties 删除此警告。

在查看时找不到 google-services.json [src/nullnull/debug, src/debug/nullnull, src/nullnull, src/debug, src/nullnullDebug] registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) 找不到 google-services.json 同时查看 [src/nullnull/release, src/release/nullnull, src/nullnull, src/release, src/nullnullRelease] registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) :app:preBuild UP-TO-DATE :app:preReleaseBuild 最新 :app:compileReleaseAidl 最新 :app:compileReleaseRenderscript UP-TO-DATE :app:checkReleaseManifest 最新:app:generateReleaseBuildConfig 最新 :app:prepareLintJar UP-TO-DATE :app:mainApkListPersistenceRelease 最新:app:generateReleaseResValues 最新 :app:generateReleaseResources 最新 :app:processReleaseGoogleServices 解析 json 文件: D:\SEDAT\PROJELER\ANDROIDPROJELER\egiticioyunlar\app\google-services.json :app:mergeReleaseResources D:\pel\PROJELER\ANDROIDPROJELER\egiticioyunlar\app\src\main\res\drawable\ic_stat_ic_notification.png: 错误:无法读取 PNG 签名:文件不以 PNG 开头 签名。错误:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception:AAPT2 错误: 检查日志以获取详细信息:app:mergeReleaseResources FAILED

【问题讨论】:

  • 请复制并粘贴错误日志,而不是截图。
  • 这些日志没用,你看到/ab的图标了吗?点击它并重新阅读日志
  • 错误告诉你该怎么做
  • 您需要 logcat 内容。我不知道我在读什么错误:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

标签: android debugging release


【解决方案1】:

tldr:
路径“D:\pel\PROJELER\ANDROIDPROJELER\egiticioyunlar\ app\src\main\res\drawable\ic_stat_ic_notification.png" 已损坏。确保使用有效的 PNG 文件。

原因:
调试和发布模式之间的差异来自于每个构建的不同需求。调试构建需要更快,因为它们经常执行。发布版本需要生成优化(更小)的 APK,因为这是将交付给用户的产品。

这就是为什么在调试版本中禁用 PNG 处理(如果可能,压缩图像文件),但在发布版本中启用的原因。 PNG 处理会彻底检查文件的内容,因此如果文件有问题,则会在发布构建期间引发错误。

在调试构建期间,PNG 处理被禁用。 PNG 仍在编译(处理),但未优化,因此并非所有内容都可以像在发布版本中那样经常被捕获。

如果您愿意,您也可以为调试构建启用 PNG 处理,但我不建议这样做,因为它会极大地影响构建时间(资源处理速度最多降低 30%)。同样,您可以为发布版本禁用 PNG 处理,但这反过来会使 APK 变得非常大,我也强烈反对这样做。

android {
    buildTypes {
        release {
            // Disables PNG crunching for the release build type. Don't do this.
            crunchPngs false
        }
        debug {
            // Enabled PNG crunching for the debug build type. Don't do this.
            crunchPngs true
        }
    }
}

【讨论】:

    【解决方案2】:

    我在主目录中创建了一个名为“debug”和“release”的二进制文件。我将“google-services.json”文件放入其中,编译无误。

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2011-07-07
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多