调试模式还可以,但发布模式会出错吗?

时间:2018-06-28 10:38:42

标签: android debugging release

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

  

按需配置是一个孵化功能。 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截至日期   :app:preReleaseBuild截止日期:app:compileReleaseAidl截止日期   :app:compileReleaseRenderscript更新日期:app:checkReleaseManifest   截止日期:app:generateReleaseBuildConfig截止日期   :app:prepareLintJar截至日期:app:mainApkListPersistenceRelease   UP-TO-DATE:app:generateReleaseResValues UP-TO-DATE   :app:generateRelease获取最新资源   :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

2 个答案:

答案 0 :(得分:0)

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

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

这就是为什么在调试版本中禁用PNG处理(如果可能的话压缩图像文件),而在发行版本中启用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
        }
    }
}

答案 1 :(得分:0)

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