Я создаю приложение, использующее библиотеку POI Apache. Когда я отлаживать приложение (скомпилировать его без запуска Proguard) все работает прекрасно, однако после экспорта APK, когда я запустить приложение и открыть файл Excel, я получаю следующее исключение:Настройки ProGuard для Apache POI
RuntimeException - Caused by: java.lang.ExceptionInInitializerError at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:301)
Вот мой файл настроек proguard:
-injars bin/classes
-injars libs/android-support-v13.jar
-outjars bin/classes-processed.jar
-libraryjars /usr/bin/adt/sdk/platforms/android-19/android.jar
-libraryjars libs/poi-3.10.1.jar
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-dontwarn org.apache.poi.**
-dontwarn com.google.**
-dontwarn android.support.**
-keep public class * extends android.app.Activity
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.android.vending.billing.**
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
Какова правильная конфигурация для Apache POI в Proguard? Я использую POI, чтобы читать только старый (Excel 97) формат, поэтому мне не нужны все остальные банки.
http://stackoverflow.com/questions/25469560/android-proguard-issues-for-release/ 25470047 # 25470047 выполните те же предупреждения keep/ign для org.apache.poi. –
Это работает, когда я не использую обфускацию, однако я хочу, чтобы обфускация – mittelmania
Учитывая, что Apache POI является открытым исходным кодом, и поэтому код доступен всем для всех, почему вы хотели бы запутать скомпилированные классы POI? – Gagravarr