2016-11-02 2 views
0

Google Rest API v3를 사용하여 Android 앱을 Google 드라이브에 연결하고 있습니다. Proguard없이 실행하면 (minifyEnabled = false) 모두 정상입니다. 그러나 proguard를 활성화하면 잘못된 REST API 메소드가 호출됩니다. Drive.Files.get().을 호출 할 때 드라이브 루트 별칭 "root"에서 실행하면 Drive.Files.list(). execute에 대한 결과가 표시됩니다. "minifyEnabled"를 비활성화하면 올바른 결과가 나타납니다. 여기에 Proguard와 실행 제어 build.gradle의 섹션 :Google 드라이브 REST API의 Proguard 문제 해결 방법

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

기본 Proguard와 파일을 얻는 수정되지 않은 하나입니다 안드로이드 스튜디오 2.2 (안 최적화 된 버전)

과 분배는 그리고 이것은이다 내가 생성 된 mapping.txt에서 검사 할 때 내 proguard-rules.pro 파일

-keepattributes EnclosingMethod 
-keepattributes InnerClasses 
-dontoptimize 

-keep class com.google.** 
-keep class com.fasterxml.** 
-dontwarn com.google.** 

의 내용은 여전히 ​​IMO에서 "유지"한 shoudl 클래스에서 이름이 변경된 멤버를 참조하십시오. java.security.SecureRandom의 RANDOM -> L com.google : -> com.google.api.client.auth.oauth.OAuthParameters

com.google.api.client.auth.oauth.OAuthParameters : 예를 들어, .api.client.auth.oauth.OAuthSigner 서명자 -> a java.lang.String 콜백 -> b java.lang.String consumerKey -> c java.lang.String nonce -> d java.lang.String 영역 -> e

나는 "-keep class com.google. **"가 이것을 피했을 것입니다.

어떻게 해결할 수 있습니까? 사전에

덕분에,

+0

해결 되었습니까? 나는 같은 문제에 직면하고있다. 알고 계시면 도와주세요. 감사합니다 – SimpleCoder

+0

네, 2016 년 11 월 2 일에 마지막으로 저의 코멘트를보십시오. "나는 그것을 좁힐 수있었습니다 ...." –

답변

3

당신은

-keep class com.google.** { *;} 

-keep class com.fasterxml.** { *;} 

또한 당신이 SDK에서 더 적은을 유지하려고 할 수

이 필요합니다. 이러한 규칙은 매우 광범위합니다.

+0

불행히도 이것은 도움이되지 않습니다. Drive API 호출은 계속해서 섞여서 mapping.txt에 있습니다. com.google 클래스 멤버의 이름은 여전히 ​​ –

+0

입니다. 메인 모듈의 proguard-rules.pro에이 파일을 추가하면 여전히 실패합니다. 주 모듈이 의존하는 모듈 (실제로 드라이브 API를 사용하는 모듈)로 작동합니다. 고마워. –

+0

이 보관 항목을 좁힐 수있었습니다. -keep, allowshrinking class com.google.api.services.drive.model. ** {*;} -keep, allowshrinking class com.google.api.services. 드라이브. * {*;} –

관련 문제