CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2ME

nokia_S40 混淆问题

楼主yesming(tony)2004-11-04 08:33:16 在 Java / J2ME 提问

我使用S_40平台时,用retroguard在JBuilder做代码混淆出现下面的错误,但使用标准的MIDP1.0/MIDP2.0混淆都没出现问题。  
   
  D:\JBuilder9\jdk1.4\bin\javaw   -classpath   "D:\JBuilder9\thirdparty\retroguard-v1.1.14\retroguard.jar;;D:\Nokia\Devices\Nokia_S40_DP20_SDK_1_0\lib\classes.zip"   RetroGuard   "F:\WorkArea\java\HoldOn60_MIDP1_0\bin\HoldOn60_MIDP1.0.jar"   "F:\WorkArea\java\HoldOn60_MIDP1_0\bin\obfuscate-temp\HoldOn60_MIDP1.0.jar"   "F:\WorkArea\java\HoldOn60_MIDP1_0\bin\obfuscate-temp\HoldOn60_MIDP1.0.rgs"   "F:\WorkArea\java\HoldOn60_MIDP1_0\bin\obfuscate-temp\log-HoldOn60_MIDP1.0.jar"  
  java.lang.UnsatisfiedLinkError:   nativeStaticSetAlignment  
  at   com.nokia.mid.impl.isa.ui.style.UIStyle.nativeStaticSetAlignment(Native   Method)  
  at   com.nokia.mid.impl.isa.ui.style.UIStyle.<clinit>(Unknown   Source)  
  at   javax.microedition.lcdui.Displayable.<clinit>(Unknown   Source)  
  at   java.lang.Class.forName0(Native   Method)  
  at   java.lang.Class.forName(Class.java:140)  
  at   a.a.a.f.a(Unknown   Source)  
  at   a.a.a.f.a(Unknown   Source)  
  at   a.a.a.f.j(Unknown   Source)  
  at   a.a.a.j$4.a(Unknown   Source)  
  at   a.a.a.j.a(Unknown   Source)  
  at   a.a.a.j.a(Unknown   Source)  
  at   a.a.a.j.a(Unknown   Source)  
  at   a.a.a.j.if(Unknown   Source)  
  at   a.a.a.s.do(Unknown   Source)  
  at   a.a.a.s.a(Unknown   Source)  
  at   RetroGuard.a(Unknown   Source)  
  at   RetroGuard.a(Unknown   Source)  
  at   RetroGuard.main(Unknown   Source)  
  Exception   in   thread   "main"    
   
  问题点数:50、回复次数:11Top

1 楼yesming(tony)回复于 2004-11-04 12:09:45 得分 0

现在我用ant可以混淆,但混淆后通不过预审。不用nokia的API的话,一切正常。  
   
  这是build.xml  
  --------------------------------------------------------------------  
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <project   basedir="."   default="outPackage">  
      <!--项目名称-->  
      <property   name="projectname"   value="HoldOn60Sec_MIDP1.0"/>  
      <!--jar放置的位置-->  
      <property   name="bin"   value="${user.dir}/bin"/>  
      <!--未混淆的jar文件名-->  
      <property   name="jarunobfus"   value="${bin}/${projectname}-unobfus.jar"/>  
      <!--混淆后的jar文件名-->  
      <property   name="jarobfus"   value="${bin}/${projectname}-obfused.jar"/>  
        <!--混淆后的jar文件目录-->  
      <property   name="dir.obfused"   value="${user.dir}/obfused/"/>  
      <!--nokia   jdk目录-->  
      <property   name="jdk.home"   value="D:\Nokia\Devices\Nokia_S40_DP20_SDK_1_0"/>  
      <!--预审前的class文件放置地方   -->  
      <property   name="javacompile_dest"   value="${user.dir}/preverify-temp"/>  
      <!--审核后的class文件放置地方-->  
      <property   name="dest"   value="${user.dir}/classes"/>  
      <property   name="src"   value="${user.dir}/src"/>  
      <property   name="res"   value="${user.dir}/res"/>  
      <path   id="project.class.path">  
          <pathelement   location="${dest}"/>  
          <pathelement   location="${jdk.home}/lib/classes.zip"/>  
      </path>  
      <!--Patternset   to   exclude   files   from   the   output   directory:-->  
      <patternset   id="dest.exclude">  
          <exclude   name="Generated   Source/"/>  
          <exclude   name="package   cache/"/>  
          <exclude   name="dependency   cache/"/>  
          <exclude   name="jsp   cache/"/>  
      </patternset>  
      <target   name="init">  
          <mkdir   dir="${bin}"/>  
          <mkdir   dir="${dest}"/>  
          <mkdir   dir="${javacompile_dest}"/>  
          <mkdir   dir="${dir.obfused}"/>  
      </target>  
      <target   depends="init"   name="javacompile">  
          <javac   bootclasspathref="project.class.path"   debug="true"   deprecation="true"   destdir="${javacompile_dest}"   nowarn="false"   target="1.2">  
              <src   path="${src}"/>  
          </javac>  
      </target>  
      <target   name="resource">  
          <copy   todir="${dest}">  
              <fileset   dir="${res}">  
                  <include   name="**/*.jpe"/>  
                  <include   name="**/*.jpeg"/>  
                  <include   name="**/*.rmf"/>  
                  <include   name="**/*.wav"/>  
                  <include   name="**/*.mid"/>  
                  <include   name="**/*.midi"/>  
                  <include   name="**/*.au"/>  
                  <include   name="**/*.gif"/>  
                  <include   name="**/*.png"/>  
                  <include   name="**/*.jpg"/>  
                  <include   name="**/*.aiff"/>  
                  <include   name="**/*.properties"/>  
                  <include   name="**/*.ico"/>  
              </fileset>  
          </copy>  
      </target>  
   
      <target   description="混淆前打包jar"   name="beforeobfuscate"   depends="javacompile">  
  <jar   basedir="${javacompile_dest}"   jarfile="${jarunobfus}"/>  
      </target>  
   
      <target   description="obfuscate混淆"   name="obfuscate"   depends="beforeobfuscate">  
  <taskdef   resource="proguard/ant/task.properties"  
                    classpath="D:\JBuilder9\thirdparty\proguard3.0.7\lib\proguard.jar"   />  
              <proguard>  
      -libraryjars   ${jdk.home}/lib/classes.zip  
      -injars             ${jarunobfus}  
      -outjars           ${jarobfus}  
      -keepclasseswithmembers   public   class   *   extends   javax.microedition.midlet.MIDlet  
  </proguard>  
      </target>  
   
      <target   description="混淆后解压到{dir.obfused}"   name="unzip"   depends="obfuscate">  
  <unzip   src="${jarobfus}"   dest="${dir.obfused}"/>  
  <delete   dir="${dir.obfused}/META-INF"   includeemptydirs="true"/>  
  <delete   dir="${dir.obfused}/package   cache"   includeemptydirs="true"/>  
      </target>  
   
   
      <target   description="解压后预审"   name="obfusedpreverify"   depends="unzip">  
          <exec   dir="."   executable="${jdk.home}/bin/preverify.exe"   failonerror="true">  
              <arg   value="-classpath"/>  
              <arg   value="${dir.obfused};${jdk.home}/lib/classes.zip"/>  
              <arg   value="-d"/>  
              <arg   value="${dest}"/>  
              <arg   value="${dir.obfused}"/>  
          </exec>  
      </target>  
   
      <target   description="拷贝资源文件,最后包装成jar"   name="package"   depends="obfusedpreverify,resource">  
  <jar   basedir="${dest}"   jarfile="${bin}/${projectname}.jar"/>  
      </target>  
   
      <target   description="Preverify   classes"   name="preverify">  
          <exec   dir="."   executable="${jdk.home}/bin/preverify.exe"   failonerror="true">  
              <arg   value="-classpath"/>  
              <arg   value="${javacompile_dest};${jdk.home}/lib/classes.zip"/>  
              <arg   value="-d"/>  
              <arg   value="${dest}"/>  
              <arg   value="${javacompile_dest}"/>  
          </exec>  
      </target>  
   
      <target   depends="javacompile,resource,preverify"   name="make"/>  
      <target   depends="cleanup,make"   name="rebuild"/>  
      <target   depends="cleanup,package"   name="outPackage"/>  
      <target   name="cleanup">  
          <delete   failonerror="false"   includeemptydirs="true">  
              <fileset   dir="${dest}"/>  
          </delete>  
          <delete   dir="${javacompile_dest}"   includeemptydirs="true"/>  
          <delete   dir="${bin}"   includeemptydirs="true"/>  
          <delete   dir="${dir.obfused}"   includeemptydirs="true"/>  
      </target>  
  </project>  
  --------------------------------------------------------------------  
   
  下面是出错信息:  
  obfusedpreverify:  
                        [exec]   Error   loading   class   F:\WorkArea\java\HoldOn60_MIDP1_0.obfused.  
   
  Top

2 楼yesming(tony)回复于 2004-11-04 12:13:07 得分 0

只是make的话也没有问题,我想问题可能在proguard混淆后,nakia审核的程序那步有问题。  
   
  哪位达人混淆过nokia40代码后,预审通过的来谈谈哈Top

3 楼aheroofeast(王有才)回复于 2004-11-04 13:37:27 得分 0

麻烦。没用过jbuilderTop

4 楼prok(换换口味)回复于 2004-11-04 13:45:53 得分 50

你用得wtk1.0.4混打包得吧  
  呵呵.这个也曾是我郁闷之极得问题.后来解决得办法就是把nokia得api加到wtk得emptyapi.zip就可以了.调用了别的api就把他都加到emptyapi.zip里就可以了.我都是瞎试出来得.具体得emptyapi.zip得作用我也不知道.有没高手做答下.Top

5 楼cooled(青山依旧)回复于 2004-11-04 13:56:15 得分 0

emptyapi.zip似乎是预审核时需要用到的包.Top

6 楼cooled(青山依旧)回复于 2004-11-04 13:56:29 得分 0

emptyapi.zip似乎是预审核时需要用到的包.Top

7 楼cooled(青山依旧)回复于 2004-11-04 14:14:22 得分 0

应该在jb的tools->confgure   obfuscators中可以配置的.Top

8 楼yesming(tony)回复于 2004-11-04 14:39:01 得分 0

我用ANT,预审时加了Nokia的类库这里。而且在混淆前预审是可以通过的。混淆后预审就有问题了  
   
  <target   description="解压后预审"   name="obfusedpreverify"   depends="unzip">  
          <exec   dir="."   executable="${jdk.home}/bin/preverify.exe"   failonerror="true">  
              <arg   value="-classpath"/>  
              <arg   value="${dir.obfused};${jdk.home}/lib/classes.zip"/>  
              <arg   value="-d"/>  
              <arg   value="${dest}"/>  
              <arg   value="${dir.obfused}"/>  
          </exec>  
      </target>  
  Top

9 楼lonelymoon(孤月居士)回复于 2004-11-04 23:40:27 得分 0

jbuilder9直接用retroguard打包就可以啊Top

10 楼prok(换换口味)回复于 2004-11-05 11:01:34 得分 0

不会啊.我用wtk打的包.只要追加api进去就没问题得啊.我一直这么做的.楼主不妨试试Top

11 楼yesming(tony)回复于 2004-11-05 11:04:35 得分 0

OK了Top

相关问题

  • NET2003混淆器
  • 关于混淆
  • session混淆问题!
  • Obfuscator(混淆器), you cannot program with it.
  • 令人混淆的定义!
  • 概念混淆的问题?
  • JS代码混淆初步
  • Dotfuscator 混淆器混淆的我都糊涂啦
  • .net编译与反编译(混淆与反混淆)
  • 关于Obfuscator(混淆器),up 者有分

关键词

  • nokia
  • source
  • wtk
  • jbuilder
  • zip
  • api
  • holdon60
  • 混淆
  • retroguard
  • emptyapi

得分解答快速导航

  • 帖主:yesming
  • prok

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo