j2me obfuscator Proguard & retroguard

 

今天嘗試了一下java的打包混淆,上網下載,試用了兩個在j2me開發中最常用到的混淆器:ProGuard 和 RetroGuard.這兩個混淆器都是開原免費的,但License上說如果用於商業用途也要求付費.竊以爲在中國是肯定不會有人會付費給他們的了,估 計國外的除大公司以外也不會有人付錢了吧.
使用過程中有些問題是要注意的.
1.RetroGuard.先把RetroGuard集成到 WTK中:看網上介紹直接把Retroguard.zip 解壓得到的jar文件丟到WTK/bin/目錄中就可以在Ktoolbar中使用了.我試了,結果不行,提示是說找不到Proguard.原來WTK中默 認的混淆器是Proguard,要換用Retroguard,必須到WTK/wtklib/Windows(platform)下找到 ktools.properties文件,把其中的obfuscator.runner.class.name: com.sun.kvem.ktools.RunPro 改成:obfuscator.runner.class.name: com.sun.kvem.ktools.RunRetro
就可以了.在這個文件中還有一些關於混淆的選項配置,也可以按需要自己修改.
eclipseme也是默認只使用ProGuard的,可是我沒有找到配置文件,搗鼓了半天沒能把Retroguard集成到EclipseMe中去.是我的EclipseMe的版本不對?誰知道可以告訴我?

2.Proguard.這是WTK和EclipseMe的默認選擇,集成很簡單,WTK直接解壓丟到目錄WTK/bin中去就可以.EclipseMe則在preference中指定解壓的文件夾就可以.但混淆打包中碰到兩次errors.
第 一個是could not find jar tool executable,是因爲在preference中指定的jre目錄包含的文件不足,沒有jar工具的程序.這一般是把jre指向到了裝其他軟件時附 帶裝上的jre了,所以裏面缺少一些jar tool executable.把preference裏jre指向一個jdk的jre就行了.
第 二個是errors preverifying jar d.b()Z....原來混淆後要打包成j2me應用之前還要先通過預審覈,這是預審覈階段出錯誤了.原因可能有兩個,一是類,屬性,方法太多了,用完了 默認的a-z字符,開始使用A-Z字符,而windows不區分大小寫,於是後面的標識符把前面的覆蓋了,在使用混淆時加上參數:- dontusemixedcaseclassnames.二是,可能混淆器優化程序出了錯誤,可以禁止優化來解決,方法是加參數:- dontoptimize.
經常混淆打包完之後,混淆器會提示有duplicate definition problems,是因爲混淆器查找classpath找到多個同名的類.暫時也沒有影響我的開發.

發佈了6 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章