2016-06-23 6 views
7

dex2jar 및 jdgui2와 같은 도구를 사용하면 APK의 내용을 검사하기가 매우 쉽습니다.코르도바 안드로이드 5.1.1 프로 가드 혼란으로 인한 APK 난독 화

우리는 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 플러그인입니다.

우리는 몇 가지 클래스를 수정하여 프로 가드없이 훌륭하게 작동합니다. "OK, 당신은 코르도바와 ProGuard를 사용하지 말아야, 또는 적어도, 그것을 사용하는 좋은 이유가 없습니다 : 여기

조 바우는 다음과 같은 주장 https://issues.apache.org/jira/browse/CB-9269 :

나는 다음과 같은"Proguard와 지원 누락 "발견 왜냐하면 실제로 ProGuard를 제대로 작동시키는 minifyEnabled와 함께 사용할 수 없기 때문입니다 .Cordova는 Reflection을 사용하기 때문에 proguard-rules.pro 파일없이 Cordova를 폭파시키는 좋은 방법입니다. " !

우리는 모든 클래스가 com.smartmobilesoftware에서 제외한 그대로 유지해야 난독 화를 말해서 그 문제 (-keep 클래스 com.smartmobilesoftware을 피하기 위해 노력 ** (. *;})

내가 이것은 우리의 코드 패널 컴퓨터 문제가 (하지만 코드가 난독없이 잘 작동), 플러그인, 또는 난독 자체가 있는지 확실하지 않습니다.

우리는 의미있는 오류를 볼 수 없습니다.

우리는 전에 코르도바로 만든 응용 프로그램을 출시 2.2.0은 ANT와 proguard를 사용하고 또 다른 플러그인은 잘 동작 했으므로 Cordove가 변경되었는지 궁금합니다. 프로 가드.

누구든지이 문제에 대한 의견을 개진 할 수 있습니까?

답변

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 몰러. 행운을 빌어 요.

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