전체적으로 안드로이드로 난처 해하면서 처음 생생하지만 나는 마지막 날에 Proguard를 사용해보기 시작했습니다. 어쨌든, 나는 이른바 프로 가드 지옥에 갇혀있다.안드로이드 ProGuard 문제로 난독 화 Android
내 앱의 구조는 3 가지 프로젝트가 있습니다. 라이브러리 1 개와 응용 프로그램 2 개. 두 응용 프로그램 프로젝트는 응용 프로그램의 모든 논리 및 라이브러리를 포함하는 라이브러리 프로젝트를 기반으로합니다. 거의 아무것도 응용 프로그램 프로젝트에 배치되지 않습니다.
그러나 Proguard가 활성화 된 응용 프로그램 중 하나를 내보내려고하면 Jackson JSON Parsing 라이브러리에 오류가 발생합니다. 난 다른 것들을 많이 시도하고 심지어는 오류를 무시하려고했지만 그것은 단지 구문 분석 부분을 실패하게했다. 따라서 오류를 무시하는 것은 올바른 일이 아닙니다.
이 내 난독-project.txt 파일
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
-keep public class com.google.android.vending.licensing.ILicensingService
-keep class org.codehaus.** { *; }
이다 그리고이 내가 얻을 오류입니다.
Warning: org.codehaus.jackson.map.ext.JodaSerializers$LocalDateTimeSerializer:
can't find referenced class org.joda.time.LocalDateTime
You should check if you need to specify additional program jars.
Warning: there were 99 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
위대한 친구, 그 경고의 95 %처럼 해결하지만 그들 중 4 개가 더 있습니다, 그들은 모두 이것처럼 보입니다. 경고 : org.codehaus.jackson.map.ext.DOMSerializer : 참조 된 클래스 org.w3c.dom.bootstrap.DOMImplementationRegistry를 찾을 수 없습니다. – parek
org.w3c. ** 및 기타 외부 라이브러리에 -keep 및 -dontwarn을 추가하십시오. . 내 프로젝트에서 나는 -libraryjars와 -injars를 포함한 다른 옵션을 사용하려고 시도했지만, 운이 없었으므로 모든 패키지를 외부 라이브러리에서 지켜야했다. 또한 당신이 앱을 내보내는 것을 관리한다면, 불분명 한 DTO 클래스, 리플렉션에 의해 호출 된 메소드 등으로 인해 런타임에 여전히 크래시 될 수 있음을 알고 있어야합니다. – Leszek