С такими инструментами, как dex2jar и jdgui2, очень легко проверить содержимое APK.
Мы пытаемся использовать 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 с Cordova, или, по крайней мере, нет веских причин для его использования, поскольку вы не можете использовать его с minifyEnabled, что на самом деле заставляет ProGuard работать правильно. Поскольку Cordova повсеместно использует Reflection, это хороший способ взорвать Cordova без файла proguard-rules.pro».
Мы попытались избежать этой проблемы, сказав proguard, что ВСЕ классы следует оставить нетронутыми, кроме классов в com.smartmobilesoftware (-keep class !com.smartmobilesoftware.** ( *; })
Я не уверен, что это проблема с нашим кодом (но код отлично работает без proguard), плагином или самим proguard.
Значимых ошибок мы не видим.
Мы выпускали приложения перед сборкой с помощью Cordova 2.2.0, в которой использовались ANT, proguard и еще один подключаемый модуль, который работал нормально. Поэтому нам интересно, изменился ли Cordove в отношении proguard.
Кто-нибудь может пролить свет на этот вопрос?