2013-01-22 2 views
15

Ant 및 ProGuard를 사용하여 Android 릴리스를 빌드하려고합니다. 말했다에 내가 코멘트에도 불구하고, project.properties에서 다음 줄을 주석 처리 당신이 그것을 수정하지 않도록주의하는 파일) :알 수없는 클래스 ILicensingService가 Android 프로젝트를 난독 화하는 경우의주의 사항

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

난독 때, 나는 다음과 같은 메모를 얻을 :

[proguard] Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService' 
[proguard] Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService' 

을 왜 이런 일이 일어나는 지 이해합니다. 이 라인은 기본 ProGuard에서 설정 파일 ($ {sdk.dir} /tools/proguard/proguard-android.txt)에서 찾을 수 있습니다

-keep public class com.google.vending.licensing.ILicensingService 
-keep public class com.android.vending.licensing.ILicensingService 

나는 구글 라이선스 서비스를 사용하지 않는, 그래서 클래스 참으로 알려지지 않았습니다. 나는 난독 화 - project.txt를 업데이트하여이 노트를 제거하는 해결책을 발견

-dontnote **ILicensingService 

내 질문이이 처리의 올바른 방법이 있나요? 이 클래스들은 안드로이드 프로젝트에서 필수적인 것이 아니기 때문에 기본적으로 어쨌든 유지되어서는 안된다. 내가 이것을 달성하기 위해 생각할 수있는 유일한 방법은 기본 구성 파일을 프로젝트에 복사하고 -keep 행을 제거하고 SDK의 기본 구성 파일을 완전히 무시하는 것입니다. 어느 것이 든 적절한 방법으로 보이지 않습니다. 또는 나는 무엇인가 놓치고 있냐?

답변

17

"-dontnote com.google.vending.licensing.ILicensingService"설정이 정상입니다. 사실 기본 구성 파일의 일부일 수도있었습니다.

  1. -keep 옵션은 라이브러리를 사용하는 프로젝트에 필요할 수 있습니다.
  2. -dontnote 옵션은 라이브러리를 사용하지 않는 프로젝트의 경우 -keep 옵션에 대한 메모를 표시하지 않는 것이 좋습니다. 이 메모는 지정된 클래스가 존재하지 않기 때문에 구성 파일에 오타가 포함될 수 있음을 알리는 메시지입니다. 처리에 영향을주지 않습니다.
+0

아, 의미가 있습니다. 나는 그 다음에 -dontnote 옵션을 사용할 것이다. 정교 해줘서 고마워! 매우 감사. –

+0

참조 용 (SDK 도구 21) : 'android update project -p'를 실행하지 마십시오. * proguard-project.txt를 편집하고 * before * project.properties에서 proguard를 사용 가능하게 한 후. 모든 변경 사항이 제거됩니다. Proguard가 활성화되면 변경 사항이 유지됩니다. –

+0

안녕하세요, 저는 빌드 스크립트 및 ProGuard로 프로젝트를 빌드하려고합니다. 나는 또한 동일한 문제에 직면하고있다. 이 문제를 해결하기 위해 무엇을해야하는지 이해할 수 없습니다. 그러니 내가해야 할 일을 도와 주실 수 있겠습니까? – Raj