2016-07-21 2 views
2

이것은 너무 광범위 할 수 있지만 프로젝트와 종속성간에 Proguard 및 Minification 구성이 전달되어 프로젝트의 종속성 트리에서 이러한 작업이 얼마나 심오한지 이해하는 방법에 대한 설명을 원합니다. 이 themodule 내부 클래스 minifyed 및 난독 화 될 것이 분명 보인다Gradle - 프로 가드 구성이 상속 되나요?

buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     } 
dependencies { 
    compile project(':someothermodule') 
    compile 'some.maven.central.library' 
} 

구성함으로써,하지만이 someothermodule의 클래스와 함께 발생합니다

나는`themodule '의 build.gradle에 있나요? 그것들은 또한 소형화되고 난독 화 될 것입니까? someothermoduleminifyEnabled true이 있어도?

'someothermodule'이 .jar 종속성 일 경우 어떻게됩니까?

some.maven.central.library의 구성은 어떻게됩니까?

모듈의 Proguard 구성이 종속성에 따라 종속적으로 구성되어 있습니까? 아니면 각각의 규칙이 자체 규칙을 따르고 있습니까?

답변

2

기술적으로는 다음과 같습니다 자체로

도서관 프로젝트는 ProGuard를 실행하지 않는, 그래서 그들은 어떤 구성을 사용하지 마십시오.

응용 프로그램 프로젝트는 참조 라이브러리를 포함하여 전체 코드베이스를 난독 화하므로 응용 프로그램 코드와 라이브러리 코드에 대해 에 대한 적절한 구성이 필요합니다.

나는 내가 Gradle을 의존성으로 페이스 북 라이브러리를 가지고 작은 사건을했고, 우리가 minifyEnabled:true와 코드를 난독 된 이후 우리는 정기적으로 킵의 커멘드를 같은 사용, 난독되는 모든 코드를 유지했다 :

-keep class com.facebook.** { *; } 
또한

하고 .JAR 난독에 대해 당신이 this other post

안부를 확인할 수

2

만약 모듈 g (minifyEnabled true) 혼자서 사용 된 구성은 소비 모듈 (귀하의 경우 응용 프로그램)에 의해 자동으로 상속되지 않습니다.

consumerProguardFiles 'proguard-rules.pro' 

proguard-rules.pro에 포함 된 규칙은 자동으로 응용 프로그램 프로젝트에 포함 된 다른 구성 파일과 병합됩니다

이 가능하게 할 수있는 안드로이드 Gradle을 플러그인의 메커니즘이 있습니다.

이것은 Android 라이브러리 프로젝트 (.aar)에서만 작동합니다. 예를 들어 파일 (예 : maven central)에 대한 종속성이있는 경우 이러한 소비자 규칙을 사용할 수 없으므로 필요한 구성을 직접 응용 프로그램 프로젝트에 추가해야합니다.

모듈을 난독 화하기위한 구성과 사용중인 응용 프로그램/모듈에서 사용되는 구성이 동일 할 필요는 없습니다.소비자 규칙은 대부분의 경우에만 -keep 규칙 집합입니다.

관련 문제