2016-06-23 2 views
7

С такими инструментами, как dex2jar и jdgui2, очень легко проверить содержимое APK.Cordova android 5.1.1 APK obfuscation с беспорядком proguard

Мы пытаемся использовать Proguard в нашем проекте Cordova для «защиты» нескольких классов, содержащих информацию, которую мы хотим сохранить в секрете (главным образом ключи для расшифровки некоторого контента, который мы пытаемся защитить для нашего клиента).

Мы не можем понять это правильно. Приложение вылетает, или оно не запутывается.

Мы добавили к нашему 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 использует Reflection повсюду, это хороший способ взорвать Cordova без файла proguard-rules.pro ».

Мы пытались избежать этого вопроса, говоря 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

Кордова приложение будет врезаться после запутывания из основной деятельности и классы cordova будут запутаны. Таким образом, во время выполнения не удалось создать веб-просмотр, и приложение выйдет из строя.

To resolve this you have to add : 

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

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

@Erwin Moller Для этого вопроса вам может понадобиться сейф как можно меньше фильтра файлов из запутывания так что здесь вы можете попробовать ниже правил Proguard и попробовать его тоже работать. Удача

-keep class org.apache.cordova.engine.** { *; } 
-keep public class * extends org.apache.cordova.CordovaPlugin 
Смежные вопросы