2017-01-10 4 views
10

proguard를 사용하여 La 라이브러리 모듈이 포함 된 응용 프로그램을 빌드하려고했지만 라이브러리가 난독 화되지 않는 것으로 나타났습니다. 이유를 이해하려고했습니다.ConsumerProguardFiles 대 ProguardFiles

ProGuard에서 규칙 파일이 게시 된 AAR에 포함되어야한다 : 나는 내용의 ConsumerProguardFiles 기능 건너 한 일부 검색 후

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

: 시간이 순간이 내 buildType이었다.

이러한 Proguard 규칙 파일은 ProGuard가 활성화 된 경우 AAR을 사용하는 모든 응용 프로그램 프로젝트 에서 사용됩니다.

이렇게하면 AAR에서 축소 규칙 또는 난독 화 제외 규칙을 지정할 수 있습니다.

이것은 라이브러리 프로젝트에만 유효합니다. 응용 프로그램 프로젝트에서는 무시됩니다.

release { 
minifyEnabled false 
useProguard true 
consumerProguardFiles 'proguard-rules.pro' 
} 

을 그리고 지금 내 라이브러리 La 그것은 난독 화 규칙의 라이브러리 코드 난독 화되어 사용이와

지금 내 라이브러리 LabuildType은 다음과 같다.

내 질문은 다음과 같습니다.

1) 다른 동작이 나타나는 이유는 무엇입니까? 왜 ProguardFiles는 라이브러리의 보호 된 규칙을 난독 화하지만 대신 무시합니다.

2) ConsumerProguardFiles의 기능은 라이브러리의 규칙을 주 애플리케이션 프로 가드 규칙과 병합하는 것입니다. 이 가정이 맞습니까?

3) 요약하면 응용 프로그램에는 proguardFiles를 사용하고 라이브러리에는 ConsumerProguardFiles를 사용합니다. 옳은?

읽어 주셔서 감사합니다.

답변

3

내가 이해하는 한, minifyEnabled false이 아니며 라이브러리 모듈을 축소/난독 화하도록 실행됨을 의미합니다. 라이브러리 모듈이 애플리케이션 모듈에서 어떤 부분을 사용할 지 알 수 없기 때문에 원하는 것입니다.

대신 라이브러리 모듈은 관련 모듈을 consumerProguardFiles을 통해 앱 모듈에 제공해야합니다. 그러면 앱 모듈에서 자체 규칙과 라이브러리 규칙을 모두 사용하여 ProGuard를 실행하여 최종 애플리케이션 APK를 최소화합니다.

+0

에는 consumerProguardFiles의 프로 가드를 무시하거나 바꿀 수있는 방법이 있습니다. – Caipivara