Хобрук: Ваш путь к мастерству в программировании

Выпуск Android Studio подписанный apk: app:transformClassesAndResourcesWithProguardForRelease java.io.IOException

Я только что обновился до Android Studio 2.1.1 и пытаюсь создать apk, подписанный выпуском, но не смог с ошибкой ниже. Как я могу это решить?

':app:transformClassesAndResourcesWithProguardForRelease'.
    > java.io.IOException: Please correct the above warnings first.

это build.gradle (модуль: приложение)

полная версия: https://gist.github.com/anonymous/65bb2edf94ea58c50de8e0ff107555ce

...
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.company.project"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 13
        versionName "1.5"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        checkReleaseBuilds false
    }
}

подробнее о дампе сообщения об ошибке https://gist.github.com/anonymous/9d822c530011b48dab1da60267f9b471

ОБНОВИТЬ:

содержимое сайта proguard-rules.pro

содержимое /Users/xxxx/Library/Android/sdk/tools/proguard/proguard-android.txt https://gist.github.com/anonymous/d5cdfbfd7c1bfe74d594993feb35bd62

содержимое /Users/xxxx/Library/Android/sdk/tools/proguard/proguard-project.txt https://gist.github.com/anonymous/d04cd0299029d4fdd648fb782f2e3021



Ответы:


1

Поскольку вы не добавили правила proguard в свой файл proguard-android.txt, я предлагаю вам добавить все необходимые правила, чтобы сделать выпуск apk из вашего проекта.

Для retrofit вам необходимо добавить следующие правила:

-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

Вам также нужно добавить другие правила, например,

-keepattributes *Annotation*
-keep class com.google.android.gms.internal.*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgent
-keep public class * extends android.preference.Preference
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.DialogFragment

-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }

-keepclassmembers class * implements android.os.Parcelable {
    static *** CREATOR;
}
# The Maps API uses serialization.
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

Это характерно для большинства проектов, и я использовал его для своего проекта. Пожалуйста, проверьте все правило перед его использованием.

26.05.2016
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..