proguard打包,导致程序没法运行?

cuilichen 2005-04-25 11:10:13
使用proguard打包,之后导入手机中,没法运行?
之后打开jar包,发现少了很多的类。郁闷

环境是eclipse3.1,JDK1.4.2_07,proguard3.2,
打包的设置,在窗口 -> 首选项 -> J2ME -> packaging -> Obfuscation中设置为
keep Expression
public class * extends javax.microedition.midlet.MIDlet

使用proguard3.0.1,proguard2.1也是如此,只是包的大小稍微变化了一点。

我在看proguard的相关文档,但是,暂时还没有找到原因和解决办法。
大家帮忙啊,在此多谢了。
...全文
327 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuilichen 2005-04-30
  • 打赏
  • 举报
回复
要放假了,结贴了。
我最后使用的办法是:
把界面相关的类放在了一起。
呜呜,没办法。

不过,还好,最起码是可以解决问题了。

再次多谢大家的帮忙。
贝壳鱼 2005-04-30
  • 打赏
  • 举报
回复
郁闷,为何都喜欢用 eclipse打包。


WTK打包 素王道
cuilichen 2005-04-29
  • 打赏
  • 举报
回复
当时我觉得,就是因为类少了,所以不能运行。

原来40多个类组成的程序,使用26个类运行?肯定会出错吧。
zqwei 2005-04-29
  • 打赏
  • 举报
回复
在windows下使用proguard要加一个不区分大小写的参数,开始也有这样的问题,加上那个参数上就行了,好象是-casenosensitive

试试吧!
cuilichen 2005-04-29
  • 打赏
  • 举报
回复
这是一个办法。
感谢 jFresH_MaN(听说距离产生美,所以我将离开你!) 的回答。

这个帖子再保留一段时间,希望大家能提出更多的解决办法。
zcwhgj 2005-04-29
  • 打赏
  • 举报
回复
这里面有一种可能:就是你写的代码中有可能有一些直接用类名作为判断的字符串,当混淆之后,类名已变了,可能导致程序不能运行.

proguard3.0.1绝不止26个类,我四十几个类都没问题,另外不能运行是什么情况啊?
jFresH_MaN 2005-04-28
  • 打赏
  • 举报
回复
呵呵!可能真是个bug吧!因为电脑比人要笨嘛!
你可以通过加一个过滤条件在少混淆几个类,这样把类控制在26个之内吧。
bdwer 2005-04-28
  • 打赏
  • 举报
回复
关注中,也用这个,但是没遇到国这类问题
jFresH_MaN 2005-04-25
  • 打赏
  • 举报
回复
你上面说的我也知道,呵呵
一般的项目只要使用public class * extends javax.microedition.midlet.MIDlet
就完全可以了。

但是你现在的问题是有些类肯定是被过滤掉了,被认为是无用的类了。
你最好仔细看看那些类有什么特征。。
cuilichen 2005-04-25
  • 打赏
  • 举报
回复
多谢大家的帮忙。
我使用的是eclipse,直接在项目上面点击右键 -> J2ME -> create Obfuscated Package
就打包了,打包的时候没有什么提示啊。

在源文件包中的类是47个,但是jar包中就只有27个了。
我保证源文件中的各个类都是有用的。不知道为什么就被
proguard给去掉了。

下面说一下我在proguard的文档中看到的一些信息:
keep Expression
public class * extends javax.microedition.midlet.MIDlet
的意思是打包的时候,保证这样的类的名字不变,
因为MIDlet运行的时候,这里是进入点。类名变化了就没法进入了。
keep Expression
public class *
这样所有的public类都会保证名称不变,这样包中的类就不会少了,
但是这样的话,打包的时候很多其他的内容也会加入到jar包中,
比如proguard的一些说明。
这样作倒是可以保证不使用的函数和不使用的变量,可以去除掉。
但是包中仍然有不必要的部分,就比如,proguard的说明。
还有,如果这样的话,类的混淆程度很小(只是变量名变化了一下,没有其他的作用),
可以从中看到完整的源码
ransion 2005-04-25
  • 打赏
  • 举报
回复
你在打包的时候有没有什么提示?
dj0517 2005-04-25
  • 打赏
  • 举报
回复
up
jFresH_MaN 2005-04-25
  • 打赏
  • 举报
回复
我觉得还是这个过滤expression的问题。。
你再仔细检查一下
ransion 2005-04-25
  • 打赏
  • 举报
回复
是不是没有验证?
wingser 2005-04-25
  • 打赏
  • 举报
回复
用proguard的midlet.pro试试
jFresH_MaN 2005-04-25
  • 打赏
  • 举报
回复
这个混淆器是免费的,可能不太稳定啊!

你的意思是不是class文件都少掉了?
cuilichen 2005-04-25
  • 打赏
  • 举报
回复
不是说proguard最多只支持26个类吧。
cuilichen 2005-04-25
  • 打赏
  • 举报
回复
发现打包的是26个类
混淆之后的类名就是a-z,
大写小写的都有,但是如果有A,就没有a,刚好26个,
不知道为什么?
cuilichen 2005-04-25
  • 打赏
  • 举报
回复
多谢jFresH_MaN(TM)
我再看看。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧