2014-10-21 3 views
20

Proguard가 Test APK에서 사용되는 경우에도 Proguard가 내 디버그 APK (메소드 dex 파일 제한의 디버그 동작에 대해 proguard를 실행해야 함) 메서드를 제거하는 문제가 있습니다. 예 : 나는 단위 테스트에서 GSON addProeprty 메서드를 사용하지만 App apk에서는 사용하지 않습니다. 이 메소드는 제거되어 테스트가 실패하게됩니다. 하지만 degu 파일 제한 때문에 모든 GSOn을 유지하도록 proguard를 구성하고 싶지는 않지만 모든 메소드를 별도로 나열하고 싶지는 않습니다. rpguard에게 단위 테스트를 소스 코드 진입 점으로 간주하도록하는 방법이 있습니까?proguard를 사용하는 Android 장치 테스트

답변

1

나는 빌드에서이 문제를 proguard를 활성화하는 추가 "dev"buildType을 가지고 있지만 모든 코드를 내 패키지에 보관하도록 구성했으며 사용 된 몇 가지 특정 라이브러리 클래스 검사 만. 또한 IDE에서 디버깅 할 수 있도록 dev에서 난독 화를 비활성화합니다.

디버그 및 릴리스 빌드의 경우 난 난독 화 및 최적화를 포함하여 "실제"프로 가드 설정을 사용합니다.

+0

비슷한 프로 가져 파일을 공유 할 수 있습니까? –

+0

고맙습니다. 그게 효과가 있습니다. 그러나, 우리는 여러 가지 맛과 모듈을 가지고 있고 그들 모두를위한 또 다른 빌드 타입을 갖는 것이 엉망입니다. 다른 답변의 맞춤 프로 가드 규칙이 도움이되었습니다. – Gaket

3

계측 테스트 (및 기타?)는 디버그/릴리스 apk와 동일한 프로 가져 파일을 사용하지 않습니다. 디버그 및 릴리스 블록 내에 testProguardFile 옵션을 설정해보십시오. 이 테스트 관련 프로 가드 파일은 디버그/릴리스 apk에 사용되지 않기 때문에 매우 관대 할 수 있습니다.

25

이것은 내가 한 일입니다.

사용자 정의 프로 가드 규칙 파일을 추가하십시오. /project/app/proguard-test-rules.pro

# Proguard rules that are applied to your test apk/code. 
-ignorewarnings 

-keepattributes *Annotation* 

-dontnote junit.framework.** 
-dontnote junit.runner.** 

-dontwarn android.test.** 
-dontwarn android.support.test.** 
-dontwarn org.junit.** 
-dontwarn org.hamcrest.** 
-dontwarn com.squareup.javawriter.JavaWriter 
# Uncomment this if you use Mockito 
#-dontwarn org.mockito.** 

는 앱 당신의 build.gradle에 다음을 추가합니다. 테스트 할 때 프로 가드 파일을 사용합니다. 위의 답변

/project/app/build.gradle

android { 
    debug { 
     minifyEnabled true 
     testProguardFile 'proguard-test-rules.pro' 
    } 
} 
+3

당신, 선생님! – spy

+2

나는이 솔루션을 처음 시도했을 때 testProguardFile에서 "test"를 놓쳤습니다. 감사합니다! –

+0

이것은 수락 된 대답이어야합니다 – Gaket

5

아무도 나를 위해 트릭을하지 않았다. 두 가지 문제가있었습니다. 테스트를 위해 기본 프로 가드 파일을 사용해야하고, 기본 프로 가드 파일이 잘못되었습니다.

  1. 은 자신뿐만 아니라, 기본 난독 파일을 사용하려면 :

    android { 
        debug { 
         minifyEnabled true 
         testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' 
        } 
    } 
    
  2. 기본 난독 파일 (과 tools/proguard 폴더의 모든는) 분명히 not replaced by default 당신이를 통해 SDK 도구를 업데이트 할 때 Android 스튜디오. 내 컴퓨터가 기발한 설정 파일을 사용하고 있었는데, 이는 귀찮은 proguard 문제를 일으켰습니다. proguard의 기본 설정을 업데이트하려면 ~/Library/Android/Sdk/tools/proguard/proguard-android.txt를 this으로 바꿉니다.

+0

두 번째 문제를 해결하기 만하면됩니다. 난 그게 gradle에 대한 안드로이드 플러그인의 버전 2.2.0에서 언급 가치가 있다고 생각,'proguard - 안드로이드.txt'는 더 이상 사용되지 않으며 기본 규칙은 빌드시 생성됩니다. 출처 : [Android Plugin for Gradle, 버전 2.2.0] (https://developer.android.com/studio/releases/gradle-plugin.html) – aProperFox

관련 문제