소개
Java 애플리케이션의 소스 jar에는 완전히 사용되지 않거나 몇 가지 메서드에만 포함됩니다. 이 데드 코드를 Objective-C로 변환 iOS 애플리케이션이 불필요하게 부풀려지고 특히 Java 라이브러리 중 하나가 J2ObjC 번역사
ProGuard는 축소, 확장 및 축소와 같은 애플리케이션의 자바 바이트코드를 난독화하거나 손상시킬 수 있습니다. 선택적으로, 바이트 코드 jar가 주어지면 "사용량" 보고서에서 사용하지 않는 모든 클래스와 메서드를 나열해야 합니다. J2ObjC는 변환 중에 이러한 클래스와 메서드를 건너뛰도록 해당 보고서를 사용합니다.
ProGuard는 여기에서 다운로드할 수 있습니다.
ProGuard 구성
ProGuard는 구성 파일을 최적화를 지정하는 명령줄 인수로 허용하며 지정해야 하는 보고서입니다. J2ObjC는 데드 코드만 알면 되기 때문에 모든 최적화 및 관련 없는 로깅을 사용 중지해야 합니다. J2ObjC로 전달된 파일은 ProGuard 헤더 텍스트와 사용 보고서로만 구성됩니다.
먼저, 소스 jar에 해당하는 애플리케이션의 바이트 코드 jar가 있는지 확인합니다. ProGuard 설명서에서 복사한 다음 구성 파일을 템플릿으로 사용하여 출력됩니다.
-injars app-bin.jar
-libraryjars /lib/rt.jar
-dontoptimize
-dontobfuscate
-dontpreverify
-printusage
-dontnote
-keep public class com.foo.app.Main {
public static void main(java.lang.String[]);
}
-keepclassmembers class * {
static final % *;
static final java.lang.String *;
}
ProGuard가 제거해서는 안 되는 항목을 제거하지 않도록 이 구성 파일을 수정합니다.
jar가 단순한 라이브러리가 아닌 애플리케이션이라면 다음과 같이 main()
메서드를 지정합니다.
필요한 모든 것을 유지해야 합니다. Cloud Shell에서 결과 출력을
ProGuard를 사용합니다.
ProGuard 실행
애플리케이션의 바이트 코드 jar과 맞춤형 ProGuard 구성 파일(
usage.pg
) 다음 명령어로 사용량 보고서 파일을 만들 수 있습니다.
java -jar proguard.jar @usage.pg > usage.log
이렇게 하면 애플리케이션의 사용되지 않는 클래스와 메서드를 나열하는 usage.log
이라는 파일이 생성됩니다.
데드 코드 제거로 J2ObjC 실행
이제 ProGuard 사용량 보고서가 있으므로,
명령줄 플래그 --dead-code-report <file>
를 사용하는 J2ObjC The DeadCodeEliminator 번역
변환하기 전에 사용량 보고서를 사용하여 각 소스 파일에서 데드 코드를
Objective-C