Если я создаю приложение в отладке, он отлично работает. Однако, когда я создаю для выпуска с помощью proguard, я получаю несколько ошибок, а затем сборка выходит из строя. Сводка ошибок:Релиз версии с проблемами с proguard - GSON
Warning:there were 445 unresolved references to classes or interfaces.
Warning:there were 13 instances of library classes depending on program classes.
Я изменил файл proguard-rules.txt, как показано ниже. Это позволило построить для успеха, но когда я устанавливаю приложение, загрузка Amazon не работает (работает в отладочной версии).
-keep class org.xmlpull.v1.**
-keep class org.apache.http.**
-keep class org.ietf.jgss.**
-keep class com.amazonaws.services.**
-keep class org.w3c.dom.bootstrap.**
-dontwarn org.xmlpull.v1.**
-dontwarn org.apache.http.**
-dontwarn org.ietf.jgss.**
-dontwarn com.amazonaws.services.**
-dontwarn org.w3c.dom.bootstrap.**
Любые предложения относительно того, как я могу исправить это, пожалуйста?
Update:
свели к вопросу GSON/JSONPARSER. Для версии выпуска JSONPARSER не конвертирует скачанный json в класс, как он есть, в debug. Также были добавлены правила защиты GSON (см. Обновление 2), но проблема не устранена.
-keep class org.apache.commons.logging.** { *; }
-keep class com.amazonaws.services.sqs.QueueUrlHandler { *; }
-keep class com.amazonaws.javax.xml.transform.sax.* { public *; }
-keep class com.amazonaws.javax.xml.stream.** { *; }
-keep class com.amazonaws.services.**.model.*Exception* { *; }
-keep class com.amazonaws.internal.** { *; }
-keep class org.codehaus.** { *; }
-keep class org.joda.convert.* { *; }
-keepattributes Signature,*Annotation*,EnclosingMethod
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class com.amazonaws.** { *; }
-dontwarn com.amazonaws.auth.policy.conditions.S3ConditionFactory
-dontwarn org.joda.time.**
-dontwarn com.fasterxml.jackson.databind.**
-dontwarn javax.xml.stream.events.**
-dontwarn org.codehaus.jackson.**
-dontwarn org.apache.commons.logging.impl.**
-dontwarn org.apache.http.conn.scheme.**
-dontwarn org.apache.http.annotation.**
-dontwarn org.ietf.jgss.**
-dontwarn org.w3c.dom.bootstrap.**
-dontwarn org.xmlpull.v1.**
-dontwarn com.amazonaws.services.**
-libraryjars libs/aws-android-sdk-1.7.1.1-core.jar
-libraryjars libs/aws-android-sdk-1.7.1.1-s3.jar
-libraryjars libs/gson-2.2.4.jar
-libraryjars libs/ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar
Обновление 2
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
Попробуйте проверить файл https://github.com/aws/aws-sdk-android-v2/blob/master/Proguard.html. Он содержит предложенные строки для proguard. – bogumil
Также, если у вас есть файлы jar в папке libs, следующая строка может помочь: '-libraryjars ./libs/ [filename] .jar' – bogumil
@bogumil thanks. попробовал то, что вы предложили, но проблема сохраняется. См. Обновление моего вопроса. – RunLoop