使用Bouncy Castle库会导致输出.jar文件大小的大量增加

时间:2013-02-20 13:55:41

标签: java-me jar proguard bouncycastle filesize

我正在开发一个利用Bouncy Castle J2ME库的Java ME / J2ME项目。但是,当我将它添加到我的项目中时,我注意到生成的.jar文件大小增加了40倍(50kB对2000kB)。除了将ProGuard的混淆器设置设置为9级(最大)之外,还有其他方法可以最大限度地减少文件大小的增加吗?

我只使用了几个库的实际类,即:

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;

提前致谢。

1 个答案:

答案 0 :(得分:2)

现在这是一个非常棘手的问题!

在其他任何事情之前,请你解压缩你的jar文件,看看Proguard是否混淆了BouncyCastle的类文件?由于你已经将bouncycastle jar文件作为一个库包含在内,并且里面有类文件所以我假设P​​roguard没有模糊这些占用大量空间的类文件。

无论如何我刚刚下载了充气城堡的jar文件,可以看到它纯粹是由类文件组成的,所以没有额外的文件我们可以删除并删除以减少生成的jar文件。 / p>

现在如果你真的想减少那么继续阅读我会产生两个解决方案,这两个都是有风险的:

解决方案1 ​​(不推荐)

  1. 这很容易,但我不建议,它可能会导致运行时异常或错误: 解压缩bouncycastle jar文件。然后导航到目录src \ org \ bouncycastle 正如您所提到的,您只使用以下这些包 org.bouncycastle.util。* org.bouncycastle.crypto。*

  2. 现在我将假设这两个包中的源代码不依赖于其他包中的源代码/类文件。

  3. 现在删除其他目录,即“asn1”,“bcpg”。在这个阶段,我不会成为屠夫并删除所有内容,但会删除一对,然后返回并删除其他人如果有效。

  4. 现在我们将重新生成jar文件。删除目录后,现在返回目录的根目录,您将看到其他目录 META-INF 组织 utils的

  5. 这是您正确需要的重要步骤,否则jar文件将无法正常工作。选择根目录中的所有目录 然后右击 - >发送到邮编

    创建zip文件后,将其重命名为* .jar而不是* .zip

    1. jar文件的大小会减少,现在在您的项目中包含此jar文件。看它是否编译并执行。然后检查 如果它在运行时正常工作,您的功能。如果一切顺利,那么你就完成了。 现在,您可以重复上述步骤以删除更多目录以减少jar文件大小。
    2. 解决方案2:

      1. 下载您正在使用的bouncycastle jar文件的源代码。
      2. 您必须从项目中删除jar文件。
      3. 将源代码包含在项目中。构建项目,看看你是否收到任何编译错误。你必须在这个阶段确定 您没有使用原始jar文件,只使用代码。
      4. 现在开始删除包含您不需要的代码的软件包。继续重建项目,它没有出现编译错误, 如果确实如此,那么你不想删除该包,继续删除其他包。
      5. 完成此butchring然后构建项目并生成jar文件。
      6. 通过这种方式,Proguard将混淆充气城堡的代码,并且由于删除了大部分不需要的代码,你应该得到实质性的 生成的jar文件减少。