2014-12-31 205 views
0

我有問題試圖混淆我的apk - 與this SO question報告相同的問題。我應用了該問題的接受答案,然後創建了我的apk。Android - twitter4j Proguard錯誤

但是,當我運行我的應用程序時,它會在第一個啓動畫面顯示之前崩潰。

如何調試這個和/或是否有任何可能從我的proguard的-project.txt文件丟失?? ...

# To enable ProGuard in your project, edit project.properties 
# to define the proguard.config property as described in that file. 
# 
# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in ${sdk.dir}/tools/proguard/proguard-android.txt 
# You can edit the include path and order by changing the ProGuard 
# include property in project.properties. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

-dontwarn twitter4j.** 

NB - 我還使用android- support-v4.jaracra-4.5.0.jar庫在我的應用程序。

+1

「它崩潰之前,第一個啓動畫面顯示」 - 堆棧跟蹤? – stkent

+0

如何通過Eclipse在我的設備上運行混淆apk? –

回答

2

看起來像有一些問題。在最後分類。如果它幫助其他人,這裏是我的完整proguard-project.txt文件:

# To enable ProGuard in your project, edit project.properties 
# to define the proguard.config property as described in that file. 
# 
# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in ${sdk.dir}/tools/proguard/proguard-android.txt 
# You can edit the include path and order by changing the ProGuard 
# include property in project.properties. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

# 
# My classes - start 
# 

-keep public class com.example.SplashActivity 
-keep public class com.example.FragmentActivityWithListener 
-keep public class com.example.AbstractHelpActivity 
-keep public class com.example.GetContentFromWebTask$CompletedListener 

# 
# My classes - end 
# 


# 
# Twitter library - start 
# 

-dontwarn twitter4j.** 
-keep class twitter4j.** { *; } 

# 
# Twitter library - end 
# 



# 
# Google Play Service library - start 
# 

-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 

# 
# Google Play Service library - end 
# 



# 
# Ads - start 
# 

-keep public class com.google.android.gms.ads.** { 
    public *; 
} 

-keep public class com.google.ads.** { 
    public *; 
} 

# 
# Ads - end 
# 


# 
# ACRA - start 
# 

#ACRA specifics 
# Restore some Source file names and restore approximate line numbers in the stack traces, 
# otherwise the stack traces are pretty useless 
-keepattributes SourceFile,LineNumberTable 

# ACRA needs "annotations" so add this... 
# Note: This may already be defined in the default "proguard-android-optimize.txt" 
# file in the SDK. If it is, then you don't need to duplicate it. See your 
# "project.properties" file to get the path to the default "proguard-android-optimize.txt". 
-keepattributes *Annotation* 

# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'. 
# Note: if you are removing log messages elsewhere in this file then this isn't necessary 
-keep class org.acra.ACRA { 
    *; 
} 

# keep this around for some enums that ACRA needs 
-keep class org.acra.ReportingInteractionMode { 
    *; 
} 

-keepnames class org.acra.sender.HttpSender$** { 
    *; 
} 

-keepnames class org.acra.ReportField { 
    *; 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter { 
    public void addCustomData(java.lang.String,java.lang.String); 
    public void putCustomData(java.lang.String,java.lang.String); 
    public void removeCustomData(java.lang.String); 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter { 
    public void handleSilentException(java.lang.Throwable); 
} 

# 
# ACRA - end 
# 


# 
# Facebook - start 
# 
-keep class com.facebook.** { *; } 
-keepattributes Signature 
# 
# Facebook - end 
# 
+0

類應該總是在「公共」? – natsumiyu

1

-keep class twitter4j.** { *; }加到您的proguard-project.txt文件中。

+0

謝謝,但這沒有什麼區別。 –