2013-10-21 32 views
3

當我創建我的應用程序並從我的IDE(android studio)應用程序運行良好時,但是當我構建APK時,它崩潰了,但我無法弄清楚爲什麼?有錯誤日誌。我發現有分段錯誤(SIGSEGV),但是如何找出錯誤?爲什麼apk在使用proguard構建時無法正常工作?

10-21 10:14:00.323 29764-29764/? I/Vitamio﹕ LIB ROOT: /data/data/com.iptviq.mobile.android.skynettv/libs/ 
10-21 10:14:00.323 29764-29764/? D/dalvikvm﹕ Trying to load lib /data/data/com.iptviq.mobile.android.skynettv/libs/libstlport_shared.so 0x418308b0 
10-21 10:14:00.323 29764-29764/? D/dalvikvm﹕ Added shared lib /data/data/com.iptviq.mobile.android.skynettv/libs/libstlport_shared.so 0x418308b0 
10-21 10:14:00.323 29764-29764/? D/dalvikvm﹕ No JNI_OnLoad found in /data/data/com.iptviq.mobile.android.skynettv/libs/libstlport_shared.so 0x418308b0, skipping init 
10-21 10:14:00.323 29764-29764/? D/dalvikvm﹕ Trying to load lib /data/data/com.iptviq.mobile.android.skynettv/libs/libvplayer.so 0x418308b0 
10-21 10:14:00.323 29764-29764/? D/dalvikvm﹕ Added shared lib /data/data/com.iptviq.mobile.android.skynettv/libs/libvplayer.so 0x418308b0 
10-21 10:14:00.323 29764-29764/? W/dalvikvm﹕ Exception thrown (Ljava/lang/NoSuchMethodError;) while throwing internal exception (Ljava/lang/NoSuchMethodError;) 
10-21 10:14:00.323 29764-29764/? W/dalvikvm﹕ Exception thrown (Ljava/lang/NoSuchMethodError;) while throwing internal exception (Ljava/lang/NoSuchMethodError;) 
10-21 10:14:00.323 29764-29764/? A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1), thread 29764 (ndroid.skynettv) 

我的ProGuard:

-dontwarn org.xmlpull.** 
-keep class org.acra.ReportingInteractionMode { *; } 

-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.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 
-keep public class * implements java.io.Serializable 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.support.v4.app.ListFragment 

-dontobfuscate 
-dontoptimize 


-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 

-keep public class org.spongycastle.** { 
    <fields>; 
    <methods>; 
} 

-keep public class org.apache.** { 
    <fields>; 
    <methods>; 
} 

-ignorewarnings 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 


-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keepclassmembers class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    private 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(); 
} 

ProGuard的警告:

ProGuard: [SkynetMobile] Note: there were 4 duplicate class definitions. 
ProGuard: [SkynetMobile]  You should check if you need to specify additional program jars. 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [vitamio.jar:META-INF/MANIFEST.MF]) 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [gson-2.2.2.jar:META-INF/MANIFEST.MF]) 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [nineoldandroids-2.4.0.jar:META-INF/MANIFEST.MF]) 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [libGoogleAnalyticsServices.jar:META-INF/MANIFEST.MF]) 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [android-support-v4.jar:META-INF/MANIFEST.MF]) 
ProGuard: [SkynetMobile] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar:META-INF/MANIFEST.MF]) 

回答

2

右鍵單擊您的項目,轉到屬性,然後從左側面板中選擇android。然後檢查你的項目使用了什麼庫? 這些庫在您的proguard.cfg使用這樣的:

-keepclassmembers class * extends com.actionbarsherlock.ActionBarSherlock { 
<init>(android.app.Activity, int); 
} 

的Java庫文件正在使用在項目中使用就像在你proguard.cfg這個命令:

-libraryjars /libs/libmessaging.jar 
+1

謝謝,你幫我找出解決方案。我看到vitamio是bugy,所以將vitamio開始包名稱(-keep class io。** {*;})添加到proguard配置文件中,它工作正常! – Ragaisis

0

添加到您的proguard.cfg:

-ignorewarnings 

也許這可以幫助你

+0

都能跟得上。相同的情況:/實際上程序正在啓動,但在視頻加載時崩潰..但是,如果我從android工作室(通過USB)運行,它工作正常 – Ragaisis

+0

我認爲proguard編碼您在您的應用程序中使用的庫的一些。所以你必須找到它並阻止proguard對它進行編碼。 –

+0

@Ragaisis你在使用jar庫還是Android項目庫? –

相關問題