<target name="jarsigner" depends="package" > <exec executable="${jarsigner}" failonerror="true" > <arg value="-verbose" /> <arg value="-digestalg" /> <arg value="SHA1" /> <arg value="-sigalg" /> <arg value="MD5withRSA" /> <arg value="-keystore" /> <arg value="${key.store}" /> <arg value="-storepass" /> <arg value="${key.store.password}" /> <arg value="-keypass" /> <arg value="${key.alias.password}" /> <arg value="-signedjar" /> <arg value="${out-signed-package-ospath}" /> <arg value="${out-unsigned-package-ospath}" /> <arg value="${key.alias}" /> </exec> </target>
2. 后在打包的时候发现在打手动编译的的class后,打dex文件后会发现这个dex里少一些class文件,百思不得其解,
eclipse自动编译的打包正常,为什么执行自己的compile就打不进去了呢?而且还进行过多方对比未发现异常。
后同事打印日志并注意到日志中有很多“bad class file magic (cafebabe) or version (0033.0000)”的提示。后来在网上
看到有同行也碰到如此问题,是jdk版本原因,jdk1.7编译后会出现,如果你碰到这种情况的话换成jdk1.6就ok了。
3. 另外,注意:
我用Ant打apk的,打完后运行时会因为NotFoundClassException,跟踪后发现打包路径直接写成文件夹不行。如下:
把<arg value="${outdir-classes-ospath}" />改为<arg value="${outdir-classes-ospath}/*" />,否则可能会在打dex包的时候class文件并没有真正的打进去。
<!-- 将.class文件转化成.dex文件 --> <target name="dex" depends="proguard"> <echo>Converting compiled files and external libraries into a .dex file...</echo> <exec executable="${dx}" failonerror="true"> <arg value="--dex" /> <arg value="--verbose" /> <!-- 输出文件 --> <arg value="--output=${dex-ospath}" /> <!-- 要生成.dex文件的源classes和libraries --> <arg value="${outdir-classes-ospath}/*" /><!-- 注:${outdir-classes-ospath}"则运行时会抛NotFoundClassException,疑似目录下的class打不进dex --> <arg value="${external-lib-ospath}" /> </exec> </target>