Режим отладки это нормально, но ошибка режима выпуска? - PullRequest
0 голосов
/ 28 июня 2018

мое приложение скомпилировано и работает нормально в режиме отладки. Но в режиме релиза выдает ошибку при компиляции изображения экрана, как показано ниже

Конфигурация по требованию является инкубационной функцией. НДК отсутствует каталог "платформы". Если вы используете NDK, убедитесь, что ndk.dir установлен в действительный каталог NDK. В настоящее время установлено C: \ Users \ PEL \ AppData \ Local \ Android \ Sdk \ NDK-расслоением. Если вы не используя NDK, удалите переменную NDK из ANDROID_NDK_HOME или 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 UP-TO-DATE: app: compileReleaseAidl UP-TO-DATE : app: compileReleaseRenderscript ОБНОВЛЕНИЕ: app: checkReleaseManifest UP-TO-DATE: приложение: generateReleaseBuildConfig UP-TO-DATE : app: prepareLintJar ОБНОВЛЕНИЕ: app: mainApkListPersistenceRelease UP-TO-DATE: приложение: generateReleaseResValues ​​UP-TO-DATE : app: generateReleaseResources ОБНОВЛЕНИЕ : app: processReleaseGoogleServices Разбор файла JSON: D: \ SEDAT \ PROJELER \ ANDROIDPROJELER \ egiticioyunlar \ приложение \ Google-services.json : приложение: mergeReleaseResources D: \ PEL \ PROJELER \ ANDROIDPROJELER \ egiticioyunlar \ приложение \ SRC \ главная \ Рез \ вытяжке \ ic_stat_ic_notification.png: ошибка: не удалось прочитать подпись PNG: файл не начинается с PNG подпись. Ошибка: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: ошибка AAPT2: проверьте логи для деталей: приложение: mergeReleaseResources FAILED

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Я создал двоичный файл с именами «debug» и «release» в главном каталоге. Я поместил в него файл "google-services.json", и он был скомпилирован без ошибок.

0 голосов
/ 28 июня 2018

tldr
Файл PNG по пути "D: \ pel \ PROJELER \ ANDROIDPROJELER \ egiticioyunlar \" Приложение \ src \ main \ res \ drawable \ ic_stat_ic_notification.png "повреждено. Убедитесь, что вы используете действительные файлы PNG.

Почему:
Разница между режимами отладки и выпуска зависит от разных потребностей каждой сборки. Сборка отладки должна быть быстрее, поскольку они выполняются очень часто. Сборка релиза должна создавать оптимизированные (меньшие) APK, поскольку это продукт, который будет доставлен пользователю.

Вот почему сжатие PNG (сжатие файлов изображений, если возможно) отключено для отладочных сборок, но включено для сборок выпуска. PNG crunching тщательно просматривает содержимое файла, и поэтому, если с файлом что-то не так, во время сборки выпуска будет возникать ошибка.

Во время отладочной сборки сжатие PNG отключено. PNG по-прежнему компилируется (обрабатывается), но не оптимизируется, и поэтому не все может быть поймано так часто, как в сборке выпуска.

Если вы хотите, вы можете включить PNG crunching и для отладочных сборок, но я бы не рекомендовал его, так как это сильно влияет на время сборки (до 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
        }
    }
}
...