android - Cocos2d-JS 游戏上的 Playscape SDK 1.14 因混淆而崩溃

标签 android proguard cocos2d-js playscape

我们已更新到 Playscape SDK 1.14,当我们尝试构建发布版 APK 时,它会在尝试使用 proguard 混淆我们的库时崩溃。

这是我们使用的 proguard.cfg:

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-keep public class !com.pupgam.** { *; }
-dontpreverify
-dontoptimize
-verbose

-keep public class com.pupgam.ads.AdListener { *; }
-keep public class com.pupgam.ads.VideoListener { *; }
-keep public class com.pupgam.notifications.OnceService { *; }
-keep public class com.pupgam.crossyskyguriko.CrossySkyMainActivity { *; }
-keep public class com.pupgam.manager.IabManager { *; }

-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
    static <methods>;
}

-keepclassmembers,allowobfuscation class * {
    @javax.inject.* *;
    @dagger.* *;
    <init>();
}

-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 **$$ModuleAdapter
-keep class **$$InjectAdapter
-keep class **$$StaticInjection

-keepattributes Signature

-keepattributes *Annotation*

-keep class com.playscape.** { *; }
-keep class com.mominis.** { *; }
-keep class mobpartner.** { *; }
-keep class mominis.** { *; }
-keep class com.android.** { *; }
-keep class com.android.volley.* {*;}
-keep class com.google.vending.* {*;}
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class com.amazon.** { *; }
-keep class com.startapp.** { *; }
-keep class com.millennialmedia.** { *; }
-keep class com.chartboost.** { *; }
-keep class com.jirbo.** { *; }
-keep class com.google.** { *; }
-keep class com.facebook.** { *; }
-keep class com.vungle.** { *; }

-dontnote android.support.**
-dontnote com.adience.sdk.SdkBootReceiver
-dontnote com.adience.sdk.av
-dontnote com.google.android.gms.maps.internal.u
-dontnote com.google.gson.internal.UnsafeAllocator
-dontnote com.millennialmedia.google.gson.internal.UnsafeAllocator
-dontnote com.startapp.android.publish.gson.internal.UnsafeAllocator
-dontnote com.vungle.publisher.cm

-dontnote com.google.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
-dontnote com.millennialmedia.android.VideoPlayer
-dontnote com.mopub.mobileads.MoPubActivity
-dontnote com.mopub.mobileads.MraidActivity
-dontnote com.mopub.mobileads.MraidBrowser
-dontnote com.mopub.mobileads.MraidVideoPlayerActivity
-dontnote com.playscape.utils.gcm.GCMBroadcastReceiver
-dontnote com.playscape.utils.kernel.NotificationActionListener
-dontnote com.vungle.sdk.VungleIntentService
-dontnote mominis.gameconsole.activities.RedirectToMarketActivity
-dontnote mominis.gameconsole.services.impl.SocialService

-keep class com.google.vending.licensing.ILicensingService
-keep class com.android.vending.licensing.ILicensingService
-keep class com.millennialmedia.android.VideoPlayer
-keep class com.mopub.mobileads.MoPubActivity
-keep class com.mopub.mobileads.MraidActivity
-keep class com.mopub.mobileads.MraidBrowser
-keep class com.mopub.mobileads.MraidVideoPlayerActivity
-keep class com.playscape.utils.gcm.GCMBroadcastReceiver
-keep class com.playscape.utils.kernel.NotificationActionListener
-keep class com.vungle.sdk.VungleIntentService
-keep class mominis.gameconsole.activities.RedirectToMarketActivity
-keep class mominis.gameconsole.services.impl.SocialService

-dontwarn com.millennialmedia.android.**

-dontwarn com.facebook.**
-dontwarn com.amazon.**
-dontwarn com.adience.sdk.e.y
-dontwarn com.playscape.gcm.services.impl.ClientSettings
-dontwarn com.playscape.utils.StrictModeDisabler

-dontwarn com.playscape.iap_utils.IPurchaseEventHandler$IPurchaseEventListener
-dontwarn mominis.common.MoDiMapper
-dontwarn com.playscape.lifecycle.ActivityLifeCycle
-dontwarn com.playscape.iap_utils.IPurchaseEventHandler
-dontwarn com.playscape.iap.AndroidRemoteLoggerAspect
-dontwarn com.playscape.lifecycle.ActivityAspect
-dontwarn com.playscape.playscapeapp.AutomatedEventLoger
-dontwarn com.playscape.playscapeapp.PlayscapeStartup
-dontwarn com.playscape.publishingkit.Playscape
-dontwarn com.playscape.publishingkit.PlayscapeActivityLifeCycle
-dontwarn com.playscape.publishingkit.PlayscapeDemoActivity
-dontwarn com.playscape.lifecycle.AppAspect
-dontwarn com.playscape.playscapeapp.AutomatedEventLoger$1
-dontwarn com.playscape.playscapeapp.PlayscapeStartup$AppMapper
-dontwarn com.playscape.playscapeapp.PlayscapeStartup$AppMapper

-dontnote com.playscape.playscapeapp.PlayscapeStartup
-dontnote com.playscape.publishingkit.Playscape

-keep class com.amatellanes.android.MainActivity
-dontwarn com.vungle.publisher.location.GoogleLocationClientDetailedLocationProvider
-dontnote com.google.gson.internal.$Gson$Types$ParameterizedTypeImpl
-dontnote com.millennialmedia.google.gson.internal.$Gson$Types$ParameterizedTypeImpl
-dontnote com.startapp.android.publish.gson.internal.$Gson$Types$ParameterizedTypeImpl
-dontnote org.aspectj.internal.lang.reflect.AjTypeImpl
-dontnote org.aspectj.internal.lang.reflect.StringToType$1
-dontnote com.google.android.gms.maps.internal.x

我们使用默认的 proguard-project.txt 并与我们当前的配置合并,我们想要混淆所有类,除了:

-keep public class com.pupgam.ads.AdListener { *; }
-keep public class com.pupgam.ads.VideoListener { *; }
-keep public class com.pupgam.notifications.OnceService { *; }
-keep public class com.pupgam.crossyskyguriko.CrossySkyMainActivity { *; }
-keep public class com.pupgam.manager.IabManager { *; }

根据custom_rules.xml执行proguard时报异常:

BUILD FAILED
/Users/it4up/Desktop/CrossySky/frameworks/runtime-src/proj.android/custom_rules.xml:556: The following error occurred while executing this line:
/Users/it4up/Desktop/CrossySky/frameworks/runtime-src/proj.android/custom_rules.xml:558: The following error occurred while executing this line:
/Users/it4up/Desktop/CrossySky/frameworks/runtime-src/proj.android/custom_rules.xml:570: The following error occurred while executing this line:
/Users/it4up/Desktop/CrossySky/frameworks/runtime-src/proj.android/custom_rules.xml:538: The following error occurred while executing this line:
/Users/it4up/Desktop/CrossySky/frameworks/runtime-src/proj.android/custom_rules.xml:497: Please correct the above warnings first.

最佳答案

您的混淆器配置文件应包含以下标志:

  • -keepattributes 签名;
  • -dontwarn。指定根本不警告 Unresolved 引用和其他重要问题;
  • -dontnote。指定不打印有关配置中潜在错误或遗漏的注释。

另外,只需为您想要保留而不混淆的类添加 -keep class 即可。 您可以熟悉here

关于android - Cocos2d-JS 游戏上的 Playscape SDK 1.14 因混淆而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32468157/

相关文章:

Android - CustomCursorAdapter 和 ListView 中的 getView()?

android - 是否可以根据Android版本指定不同的权限?

android - 为什么在我以前不需要时开始使用 -libraryjars?

Proguard 混淆后 Android 应用程序崩溃

javascript - 在 Cocos2d-JS 中使用 Google Play 服务

ANDROID:收到通知后,我想用新数据刷新 listView

android - 更新屏幕尺寸表

android - 如何将 Proguard 混淆模块导入 Android Studio?

android - Cocos2d-js:项目需要那么大吗?

cocos2d-js - 如何使用自定义 ttf 显示标签?