如果你的應用要上架googleplay,則必須使用加密。 android SDK中已經內建了proguard。 是以,整個流程就容易多了。
在proj.android下的project.properties檔案中,加入一行 proguard.config=proguard.cfg
然後,将{android-sdk-root}\tools\proguard\proguard-android.txt 拷貝過來,改名為proguard.cfg。(這裡還有一個帶 optimize的,具體操作直接看這個檔案裡面的說明就可以了。)
如果你的項目內建了第三方JAR庫,則像下面這樣無腦添加如下選項,保證你沒問題
一、添加外部引用
-libraryjars ./libs/tapjoyconnectlibrary.jar
-libraryjars ./libs/chartboost.jar
-libraryjars ./libs/crashlytics.jar
-libraryjars ./libs/in-app-purchasing-2.0.1.jar
二、指定不混淆且不提示下面的包錯誤(這是第三方包,我們要保護的是自己的代碼,是以,沒必要混淆它)
-keep class com.tapjoy.** { *; }
-keep class com.amazon.** { *; }
-dontwarn com.amazon.**
-dontwarn com.tapjoy.**
注:如果你的SDK有明确告訴你哪些系統庫不能忽略,則你需要手工指定。比如tapjoy明确了要添加下面的代碼。
-keep class com.tapjoy.** { *; }
-keepattributes JavascriptInterface
-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;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
三、-keep class org.cocos2dx.lib.** {*;}
這個加了,才能防止org.cocos2dx.lib的代碼不被proguard移除。因為proguard會幫你删掉未引用的代碼。、
而你的org.cocos2dx.lib是被JNI調用的,proguard查不到你對他的引用,是以預設情況下,會被移除。是以你隻能手工指定一下了。 否則啟動不了遊戲。
四、加上自己的JNI代碼。
和org.cococs2dx.lib一樣,如果你自己提供了需要C++調用的JNI類,你得自己手工指定保留。比如
-keep class com.dreamhunters.JNI {*;}