필자는 안드로이드 앱에 대해 proguard를 성공적으로 사용하고 있습니다.Proguard에서 .xml 리소스 파일을 강제로 보존하도록하려면 어떻게해야합니까?
그러나 한 앱으로 문제가 있습니다.
이 응용 프로그램은 패키지에 저장되어있는 .xml
파일이있는 Java 라이브러리를 사용합니다.
InputStream istream = Library.class.getResourceAsStream("resource.xml");
이 라이브러리는 proguard가 비활성화되어있을 때 유용합니다. 그러나 proguard를 실행하면 xml 파일이 완전히 제거 된 것처럼 보입니다.
관련 proguard.cfg
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
#-dontobfuscate
#-repackageclasses '' //THIS IS DISABLED
-keepattributes *Annotation*
-keepattributes Signature
-verbose
-dontwarn roboguice.activity.RoboMapActivity
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
이 xml 파일을 계속 강제하는 방법에 어떤 아이디어?
모두 멋지지만, 이것은 자바 라이브러리의 xml 파일이고 안드로이드는 아닙니다. 내 안드로이드 응용 프로그램에서 그것을 사용하고 proguard없이 잘 작동합니다. 나는 보통 안드로이드 애플 리케이션에서 이런 식으로 사용하지 않는다는 것을 알고있다. – Peterdk
문제는 ProGuard의 잘못처럼 보이지 않는다는 것입니다. ProGuard는 JAR에서 리소스를 제거하지 않으며, 축소하는 동안에 만 클래스를 제거 할 수 있습니다. 이러한 문제는 Android 빌드 파일에서 비롯되었을 가능성이 큽니다. 그것은 당신의 요구에 맞게 수정할 수 있지만, 그것은 쉬운 soultion 아니에요. 그리고 성공하더라도 SDK가 업데이트 될 때마다 다시해야 할 수도 있습니다. – Malcolm
여전히 프로 가드가 비활성화되어 있으면 리소스가 내 앱에서 작동합니다. 프로 가드가 활성화되어 있으면 프로 가드가 사용하지 않습니다. 그래서 프로 가드 (proguard)는 문제를 일으키는 무언가를하고 있습니다. – Peterdk