2016-06-23 309 views
7

使用像dex2jar和jdgui2這樣的工具很容易檢查APK的內容。Cordova android 5.1.1 APK混淆與proguard混淆

我們正在嘗試在我們的Cordova項目中使用Proguard來「保護」一些包含我們想保密的信息的類(主要解密我們試圖爲我們的客戶端保護的某些內容)。

我們不能說得對。該應用程序崩潰,或者它沒有被混淆。

我們加入到我們的build.gradle:

buildTypes { 
    release { 
     signingConfig signingConfigs.release 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
} 

我們proguard.pro包含:

-keep class !com.smartmobilesoftware.** (*; } 

smartmobilesoftware是inAppPurchases插件。

在那個軟件包中,我們修改了幾個類,這些類在沒有proguard的情況下效果很好。

我發現下面的「Proguard的支持失蹤」:https://issues.apache.org/jira/browse/CB-9269

這裏喬·庫巴稱以下內容:「好吧,你不應該使用ProGuard和科爾多瓦,或者至少,沒有很好的理由來使用它,因爲你不能將它與minifyEnabled一起使用,這實際上使得ProGuard能夠正常工作。由於Cordova使用反射遍佈整個地方,這是在沒有proguard-rules.pro文件的情況下炸燬Cordova的好方法。

我們試圖避免告訴ProGuard的這個問題,所有的類應該原封不動除了在com.smartmobilesoftware的那些(-keep類com.smartmobilesoftware **(*;!})

我不知道這是witih我們的代碼有問題(但代碼工作正常,無proguard的),該插件,或proguard的本身。

我們沒有看到任何有意義的錯誤。

我們發佈了科爾多瓦建造之前的應用程序2.2.0,它使用了ANT和proguard,以及另一個插件,它運行良好。所以我們想知道Cordove是否改變了ProGuard的。

任何人都可以闡明這個問題?

回答

3

它看起來像包com.smartmobilesoftware中的代碼實現了Cordova插件。在這種情況下,你需要保持至少幾類,否則科爾多瓦將不能正常運行時找到它們(對於最近的科爾多瓦釋放):混淆後

-keep class * extends org.apache.cordova.CordovaPlugin 
+0

謝謝你的迴應。我還沒有檢查,但賞金到期了,所以我給你。 :-)如果您的建議有效,我會在這裏回覆。 –

2

科爾多瓦的應用程序會崩潰,因爲主要活動和科爾多瓦類將會混淆。所以在運行時無法創建webview並且應用程序會崩潰。

To resolve this you have to add : 

-keep class org.apache.cordova.** { 
    *; 
} 

-keep public class * extends org.apache.cordova.CordovaPlugin 
0

@Erwin穆勒對於這個問題,您可能需要安全儘可能少的文件過濾器從混淆所以在這裏,你可以試試下面proguard的規則,並嘗試過運行。祝你好運

-keep class org.apache.cordova.engine.** { *; } 
-keep public class * extends org.apache.cordova.CordovaPlugin