2013-02-20 3 views
2

Bouncy Castle J2ME 라이브러리를 사용하는 Java ME/J2ME 프로젝트에서 작업하고 있습니다. 그러나 프로젝트에 추가 할 때 결과 .jar 파일 크기가 40 배 증가합니다 (50kB 대 2000kB). ProGuard의 난독 화 설정을 레벨 9 (최대)로 설정하는 것 외에는 파일 크기가 커질 수있는 다른 방법이 있습니까? 사전에Bouncy Castle 라이브러리를 사용하면 출력 .jar 파일 크기가 크게 증가합니다.

import org.bouncycastle.util.encoders.Hex; 
import org.bouncycastle.crypto.Digest; 
import org.bouncycastle.crypto.macs.HMac; 
import org.bouncycastle.crypto.params.*; 
import org.bouncycastle.crypto.digests.SHA256Digest; 

감사 : 만 라이브러리 실제 즉 클래스의 몇 가지를 사용하고

.

+0

추가 된 프로 가드 태그는 프로 가드 (proguard)가 사용하는 클래스로만 줄이기위한 올바른 옵션 일 뿐이므로 추가되었습니다. –

답변

2

이제 매우 까다 롭습니다!

다른 것을하기 전에 jar 파일의 압축을 풀고 Proguard가 BouncyCastle의 클래스 파일을 난독 화했는지 확인하십시오. 라이브러리로 bouncycastle jar 파일을 포함 시켰기 때문에 거기에 클래스 파일이 있으므로 Proguard가 많은 공간을 차지하는이 클래스 파일을 난처하게 만들지 않았다고 가정합니다.

어쨌든 탄력성이 강한 jar 파일을 다운로드했으며이 파일이 클래스 파일로만 구성되어 있다는 것을 알 수 있으므로 삭제 된 jar 파일을 없애고 결과 jar 파일을 줄일 수있는 여분의 파일은 없습니다.

이제 당신이 정말로 둘 다 위험하다, 나는이 개 솔루션을 생산하기 위하여려고하고 읽을 다음 줄이려면 :

해결 방법 1 (권장하지 않음) 가 :

  1. 이것은 쉽지만 권장하지는 않습니다. 런타임 예외 또는 오류가 발생할 수 있습니다. bouncycastle jar 파일의 압축을 풉니 다. 당신은 패키지 아래 org.bouncycastle.util 이들를 사용하는 언급 한 것처럼 그런 bouncycastle \ 조직 \ SRC 디렉토리로 이동합니다. * org.bouncycastle.crypto을. *

  2. 을 지금 여기에 내가 가정한다 이 두 패키지 내의 소스 코드는 다른 패키지 안에있는 소스 코드/클래스 파일에 의존하지 않습니다.

  3. "asn1", "bcpg"과 같은 다른 디렉토리를 삭제하십시오. 이 단계에서 나는 푸줏간 주자가되지 않을 것이고 모든 것을 삭제할 것이다. 그러나 부부를 지우고 나서 돌아와 다른 사람들을 삭제하면 돌아 간다.

  4. 이제 jar 파일을 다시 생성합니다. 당신은 당신이 META-INF 조직처럼 유틸

을 다른 디렉토리를 볼 경우 디렉토리가 현재 디렉토리의 루트로 돌아가 삭제 한 후이이 올바르게 다른 jar 파일에 필요한 중요한 단계이다 작동 안 할 것이다. 루트 디렉토리 및 다음 마우스 오른쪽 클릭 -에있는 모든 디렉토리를 선택> zip 파일이 생성되면 다음

를 압축 보내

  1. 의 크기 *의 .jar 대신 .ZIP *의 필요에 이름을 바꿉니다 jar 파일은 줄어들었을 것이고, 이제이 jar 파일을 프로젝트에 포함시킬 것입니다. 그것이 컴파일되고 실행되는지 확인하십시오. 그런 다음 런타임에 올바르게 작동하는 경우 기능을 확인하십시오.모든 것이 잘되면, 당신은 끝났습니다. 이제 위의 단계를 반복하여 jar 파일 크기를 줄이려면 다른 디렉토리를 삭제할 수 있습니다.

해결 방법 2 :

  1. 사용중인 bouncycastle jar 파일의 소스 코드를 다운로드합니다.
  2. 프로젝트에서 jar 파일을 제거해야합니다.
  3. 프로젝트에 소스 코드를 포함시킵니다. 프로젝트를 빌드하고 컴파일 오류가 발생하지 않는지 확인하십시오. 이 단계에서 은 원래 jar 파일을 사용하지 않고 코드 만 사용한다는 것을 확인해야합니다.
  4. 이제는 필요없는 코드가 포함 된 패키지를 삭제하기 시작하십시오. 계속해서 컴파일 오류가 발생하지 않도록 프로젝트를 다시 작성하십시오 (예 : ). 그렇다면 해당 패키지를 델타하고 다른 사용자를 삭제하려고하지 마십시오.
  5. 일단이 butchring이 완료되면 프로젝트를 빌드하고 jar 파일을 생성하십시오.
  6. 이렇게하면 Proguard는 탄력성이 강한 코드를 난독 화하고 코드를 삭제할 필요가 없기 때문에 결과 jar 파일의 내용이 실질적으로 감소해야합니다.
+0

조언 해 주셔서 감사합니다. user_CC. 솔루션 2를 시도했지만 노크 효과를 관리하기가 어렵습니다. 클래스를 사용하려고하는 클래스를 삭제하려고 시도했습니다. 클래스는 throw-up 오류가 발생했습니다 (클래스 자체를 사용함에 따라!). 코드 난독 화는 당분간 갈 길입니다. 매우 감사. – Bataleon

+0

라이브러리가 아닌 코드를 사용하면 ProGuard가 크기가 줄인 라이브러리 코드를 난독화할 수 있습니다. 크기가 줄어들거나 더 커지겠습니까? –

+0

라이브러리 사용 .jar와 클래스 사용 간의 크기 차이는 없습니다 (난독 화가 모두 켜짐과 꺼짐). ProGuard는 레벨이 max (9)로 설정된 경우 출력 .jar 크기에만 영향을 미치는 것으로 보입니다. 그렇지 않으면 변경 사항이 없습니다. 이게 정상인가? – Bataleon

관련 문제