2016-06-23 10 views
7

Con strumenti come dex2jar e jdgui2 è molto semplice ispezionare il contenuto dell'APK.Cordova android 5.1.1 offuscazione APK con confusione proguard

Stiamo cercando di utilizzare Proguard nel nostro progetto Cordova per "proteggere" alcune classi che contengono informazioni che vogliamo mantenere segrete (Principalmente le chiavi per decodificare alcuni contenuti che cerchiamo di proteggere per il nostro cliente).

Non possiamo farlo bene. L'app si arresta in modo anomalo o non viene offuscata.

Abbiamo aggiunto al nostro build.gradle:

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

nostro proguard.pro contiene:

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

smartmobilesoftware è un plugin inAppPurchases.

In quel pacchetto abbiamo modificato alcune classi, che funzionano alla grande senza proguard.

ho trovato la seguente "supporto Proguard mancante": https://issues.apache.org/jira/browse/CB-9269

Qui Joe Bowser afferma quanto segue: "OK, non si dovrebbe usare ProGuard con Cordova, o per lo meno, non c'è alcuna buona ragione per usarlo, dal momento che non è possibile utilizzarlo con minifyEnabled, che è ciò che rende ProGuard in grado di funzionare correttamente. Poiché Cordova utilizza Reflection dappertutto, questo è un buon modo per far esplodere Cordova senza un file proguard-rules.pro. "

abbiamo cercato di evitare tale questione dicendo Proguard che tutte le classi dovrebbero essere lasciati intatti, tranne quelle nella com.smartmobilesoftware (classe -keep com.smartmobilesoftware ** (*;!.})

Sono non so se questo è un problema witih nostro codice (ma il codice funziona bene senza Proguard), il plug-in, o Proguard stesso.

non vediamo errori significativi.

Abbiamo rilasciato applicazioni prima costruite con Cordova 2.2.0, che ha usato ANT e proguard e un altro plugin, che ha funzionato bene, quindi ci chiediamo se Cordove sia cambiato rispetto a Proguard.

Qualcuno può far luce su questo problema?

risposta

3

Sembra che il codice nel pacchetto com.smartmobilesoftware implementa un plug-in Cordova. In questo caso è necessario mantenere almeno un paio di più classi, altrimenti Cordova non sarà adeguatamente li trovi in ​​fase di esecuzione (per una recente rilascio Cordova):

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

Grazie per la risposta. Non ho ancora potuto controllare, ma la taglia stava scadendo, quindi l'ho data a te. :-) Risponderò qui se il tuo suggerimento funziona. –

2

applicazione Cordova andrà in crash dopo l'offuscamento a causa dell'attività principale e le lezioni di cordova saranno offuscate. Quindi in fase di runtime non è stato possibile creare la visualizzazione Web e l'applicazione si arresterà in modo anomalo.

To resolve this you have to add : 

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

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

@Erwin Moller Per questo problema potrebbe essere necessario al sicuro il meno possibile filtrare i file da offuscamento ecco si può provare qui sotto regole Proguard e provarlo troppo correre. Buona fortuna

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