由网友(为你戎马今生)分享简介:能否样品/简单模糊处理的ANT Android的任务的人分享?只要我有完整的APK,我只需要通过*类HRU Proguard的,然后prepare * .dex打造APK 解决方案 我找到了解决办法:在获取 Proguard的 - 副本proguard.jar为已知的目录(比如MyProject的/ ProGuar...
能否样品/简单模糊处理的ANT Android的任务的人分享?只要我有完整的APK,我只需要通过*类HRU Proguard的,然后prepare * .dex打造APK
解决方案我找到了解决办法:
在获取 Proguard的 - 副本proguard.jar为已知的目录(比如MyProject的/ ProGuard的) prepare proguard.cfg -describing什么,以及如何优化/模糊处理。这个过程中的Proguard的的手动 详尽的描述 prepare以下ANT的build.xml(或不服像这样的) - 伟大的感谢名单给的这家伙更新完整的build.xml
< XML版本=1.0编码=UTF-8&GT?;
<。项目名称=MyProject的默认值=zipalignBASEDIR =>
<属性名=目标值=机器人-8/>
<! - 属性文件=default.properties/ - >
<属性名=编码值=UTF-8/>
<! - 迪尔斯 - >
<属性名=sdk.dir位置=位置Android SDK中的/>
<属性名=proguard.dir值=ProGuard的/>
<属性名=src.dir的值=SRC/>
<属性名=gen.dir值=根/>
<属性名=res.dir值=资源/>
<属性名=assets.dir值=资产/>
<属性名=libs.dir值=库/>
<属性名=out.classes.unoptimized.dir值=出/>
<属性名=out.classes.optimized.dir值=出/优化/>
<! - 文件 - >
<属性名=manifest.file值=AndroidManifest.xml中/>
<属性名=signed.apk值=$ {ant.project.name} -signed.apk/>
<属性名=unsigned.apk值=$ {ant.project.name} -unsigned.apk/>
<属性名=final.apk值=$ {ant.project.name} .apk文件/>
<属性名=的android.jar值=$ {sdk.dir} /工具/平台/ $ {}目标/android.jar/>
<属性名=未优化的价值=unoptimized.jar/>
<属性名=优化值=optimized.jar/>
<属性名=proguard.config值=$ {proguard.dir} /proguard.cfg/>
&所述;! - 工具 - >
<属性名=dx.jar值=$ {sdk.dir} /platform-tools/lib/dx.jar/>
<属性名=AAPT值=$ {sdk.dir} /平台/ $ {}目标/tools/aapt.exe/>
<属性名=zipalign值=$ {sdk.dir} /tools/zipalign.exe/>
<属性名=jarsign值=jarsigner.exe位置是在这里/>
<属性名=密钥库的价值=你的密钥存储在这里/>
<属性名=keyalias值=你的密钥别名是在这里/>
&其中;路径的id =android.antlibs>
< pathelement PATH =$ {sdk.dir} /tools/lib/anttasks.jar/>
< pathelement PATH =$ {sdk.dir} /tools/lib/sdklib.jar/>
< pathelement PATH =$ {sdk.dir} /tools/lib/android$p$pfs.jar/>
< pathelement PATH =$ {sdk.dir} /tools/lib/apkbuilder.jar/>
< pathelement PATH =$ {sdk.dir} /tools/lib/jarutils.jar/>
< /路径>
<的taskdef名=设置
类名=com.android.ant.SetupTask
classpathref =android.antlibs/>
<设置进口=FALSE/>
<! - 的taskdef名=aaptexec
类名=com.android.ant.AaptExecLoopTask
classpathref =android.antlibs/ - >
<目标名称=干净的描述=删除其他目标产生的输出文件。>
<回声>清洗...< /回声>
<删除DIR =$ {out.classes.unoptimized.dir}详细=真/>
<删除DIR =$ {out.classes.optimized.dir}详细=真/>
< /目标和GT;
<目标名称=显示目录>
<回声>如果需要创建输出目录...< /回声>
< MKDIR DIR =$ {out.classes.unoptimized.dir}/>
< MKDIR DIR =$ {out.classes.optimized.dir}/>
< /目标和GT;
<! - 编译该项目的.java文件到.class文件。 - >
<目标名称=编译取决于=显示目录
说明=编译项目的.java文件到.class文件>
<回声>编译源代码...< /回声>
< javac的编码=$ {}编码目标=1.6调试=真正的extdirs =
DESTDIR =$ {out.classes.unoptimized.dir}
bootclasspathref =android.target.classpath
includeantruntime =真正的>
< SRC PATH =$ {src.dir的}/>
< SRC PATH =$ {gen.dir}/>
<类路径>
<文件集DIR =$ {libs.dir}包括=*罐子。/>
< /类路径>
< / javac的>
< /目标和GT;
<目标名称=preobfuscate取决于=编译>
<回声> preparing于模糊处理...< /回声>
<罐子destfile =$ {未优化}
BASEDIR =$ {out.classes.unoptimized.dir}
包括=** / **
不包括=优化/ **
/>
< /目标和GT;
<! - 混淆使用ProGuard - >
<目标名称=优化,除非=NOOPTIMIZE取决于=preobfuscate>
<回声> Proguard的混淆...< /回声>
< Java的罐子=$ {proguard.dir} /proguard.jar叉=真正的failonerror =真正的>
< jvmarg值= - Dmaximum.inlined code.length = 16/>
< ARG值=@ $ {proguard.dir} /proguard.cfg/>
< ARG值= - injars $ {未优化}/>
< ARG值= - outjars $ {}优化/>
< ARG值= - libraryjars $ {}的android.jar/>
< / Java的>
<解压SRC =$ {}优化DEST =$ {out.classes.optimized.dir}/>
<! - 删除优化罐(今解压缩到bin目录) - >
<删除文件=$ {}优化/>
<删除文件=$ {未优化}/>
< /目标和GT;
<目标名称=DEX描述=转换JVM字节codeS到的Dalvik字节codeS取决于=优化>
<回声>转换字节codeS到Dalvik虚拟机字节codeS ...< /回声>
< Java的罐子=$ {dx.jar}叉=真正的>
< ARG行= - 地塞米松--verbose --output = $ {out.classes.optimized.dir} /classes.dex $ {out.classes.optimized.dir}/>
< / Java的>
< /目标和GT;
<目标名称=AAPT取决于=DEX描述=编译资源>
<回声>包装资源...< /回声>
< EXEC可执行=$ {} AAPTLOGERROR =真正的osfamily =窗口>
< ARG行=P
-F
-M $ {manifest.file}
-I $ {}的android.jar
-S $ {res.dir}
-A $ {assets.dir}
-F $ {out.classes.optimized.dir} / $ {unsigned.apk}
-m -J $ {gen.dir}/>
< / EXEC>
< /目标和GT;
<目标名称=符号取决于=AAPT描述=号的apk>
<输入消息=请输入密钥存储密码(存储:$ {密钥库}):
方法addProperty =keystore.password/>
<回声>签名的apk ...< /回声>
< EXEC可执行=$ {jarsign}LOGERROR =真正的osfamily =窗口>
< ARG行= - 详细
-keystore $ {}密钥库
-storepass $ {keystore.password}
-signedjar $ {out.classes.optimized.dir} / $ {signed.apk}
$ {out.classes.optimized.dir} / $ {unsigned.apk} $ {keyalias}/>
< / EXEC>
< /目标和GT;
<目标名称=zipalign取决于=号描述=拉链对齐>
<回声>对齐APK ...< /回声>
< EXEC可执行=$ {zipalign}LOGERROR =真正的osfamily =窗口>
< ARG行= - ˚F
-v
4
$ {out.classes.optimized.dir} / $ {signed.apk}
$ {final.apk}/>
< / EXEC>
< /目标和GT;
< /项目>
该Ant任务已被添加到Eclipse的建设者(性能/建筑商)的任务后,Java的建设者和Android程序包生成之前。
preSS建设全部(这是更好地在Eclipse菜单中关闭自动生成校验)
Can anyone share with sample/simple obfuscation ANT task for Android? Provided that I do have complete APK and I need just pass *class hru Proguard and then prepare *.dex to build APK
解决方案I have found solution:
Get Proguard - copy proguard.jar into known directory (say MyProject/proguard) Prepare proguard.cfg -describing what and how optimize/obfuscate. This process thoroughly described in Proguard's manual Prepare following ANT's build.xml (or smth like this one) - great thanx to this guyUPDATE complete build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="zipalign" basedir=".">
<property name="target" value="android-8"/>
<!--property file="default.properties" /-->
<property name="encoding" value="UTF-8"/>
<!-- dirs -->
<property name="sdk.dir" location="Location of Android SDK"/>
<property name="proguard.dir" value="proguard" />
<property name="src.dir" value="src"/>
<property name="gen.dir" value="gen"/>
<property name="res.dir" value="res"/>
<property name="assets.dir" value="assets"/>
<property name="libs.dir" value="libs"/>
<property name="out.classes.unoptimized.dir" value="out"/>
<property name="out.classes.optimized.dir" value="out/optimized"/>
<!-- files -->
<property name="manifest.file" value="AndroidManifest.xml"/>
<property name="signed.apk" value="${ant.project.name}-signed.apk"/>
<property name="unsigned.apk" value="${ant.project.name}-unsigned.apk"/>
<property name="final.apk" value="${ant.project.name}.apk"/>
<property name="android.jar" value="${sdk.dir}/tools/platforms/${target}/android.jar"/>
<property name="unoptimized" value="unoptimized.jar" />
<property name="optimized" value="optimized.jar" />
<property name="proguard.config" value="${proguard.dir}/proguard.cfg"/>
<!-- tools -->
<property name="dx.jar" value="${sdk.dir}/platform-tools/lib/dx.jar"/>
<property name="aapt" value="${sdk.dir}/platforms/${target}/tools/aapt.exe"/>
<property name="zipalign" value="${sdk.dir}/tools/zipalign.exe"/>
<property name="jarsign" value="jarsigner.exe location is here"/>
<property name="keystore" value="Your key store is here"/>
<property name="keyalias" value="Your key alias is here"/>
<path id="android.antlibs">
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
<pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
<pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
<pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
<pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
</path>
<taskdef name="setup"
classname="com.android.ant.SetupTask"
classpathref="android.antlibs" />
<setup import="false"/>
<!--taskdef name="aaptexec"
classname="com.android.ant.AaptExecLoopTask"
classpathref="android.antlibs" /-->
<target name="clean" description="Removes output files created by other targets.">
<echo>Cleaning...</echo>
<delete dir="${out.classes.unoptimized.dir}" verbose="true" />
<delete dir="${out.classes.optimized.dir}" verbose="true" />
</target>
<target name="dirs">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${out.classes.unoptimized.dir}" />
<mkdir dir="${out.classes.optimized.dir}" />
</target>
<!-- Compiles this project's .java files into .class files. -->
<target name="compile" depends="dirs"
description="Compiles project's .java files into .class files">
<echo>Compiling sources...</echo>
<javac encoding="${encoding}" target="1.6" debug="true" extdirs=""
destdir="${out.classes.unoptimized.dir}"
bootclasspathref="android.target.classpath"
includeantruntime="true">
<src path="${src.dir}" />
<src path="${gen.dir}" />
<classpath>
<fileset dir="${libs.dir}" includes="*.jar" />
</classpath>
</javac>
</target>
<target name="preobfuscate" depends="compile">
<echo>Preparing to obfuscation...</echo>
<jar destfile="${unoptimized}"
basedir="${out.classes.unoptimized.dir}"
includes="**/**"
excludes="optimized/**"
/>
</target>
<!-- Obfuscation with ProGuard -->
<target name="optimize" unless="nooptimize" depends="preobfuscate">
<echo>Proguard obfuscation...</echo>
<java jar="${proguard.dir}/proguard.jar" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=16" />
<arg value="@${proguard.dir}/proguard.cfg" />
<arg value="-injars ${unoptimized}" />
<arg value="-outjars ${optimized}" />
<arg value="-libraryjars ${android.jar}" />
</java>
<unzip src="${optimized}" dest="${out.classes.optimized.dir}" />
<!-- Delete optimized jar (now unzipped into bin directory) -->
<delete file="${optimized}"/>
<delete file="${unoptimized}"/>
</target>
<target name="dex" description="Converting JVM bytecodes into Dalvik bytecodes" depends="optimize">
<echo>Converting bytecodes to Dalvik VM bytecodes...</echo>
<java jar="${dx.jar}" fork="true">
<arg line="--dex --verbose --output=${out.classes.optimized.dir}/classes.dex ${out.classes.optimized.dir}"/>
</java>
</target>
<target name="aapt" depends="dex" description="compile resources">
<echo>Packing resources...</echo>
<exec executable="${aapt}" logerror="true" osfamily="windows">
<arg line="p
-f
-M ${manifest.file}
-I ${android.jar}
-S ${res.dir}
-A ${assets.dir}
-F ${out.classes.optimized.dir}/${unsigned.apk}
-m -J ${gen.dir}"/>
</exec>
</target>
<target name="sign" depends="aapt" description="sign apk">
<input message="Please enter keystore password (store:${keystore}):"
addproperty="keystore.password" />
<echo>Signing apk...</echo>
<exec executable="${jarsign}" logerror="true" osfamily="windows">
<arg line="-verbose
-keystore ${keystore}
-storepass ${keystore.password}
-signedjar ${out.classes.optimized.dir}/${signed.apk}
${out.classes.optimized.dir}/${unsigned.apk} ${keyalias}"/>
</exec>
</target>
<target name="zipalign" depends="sign" description="zip align">
<echo>Aligning apk...</echo>
<exec executable="${zipalign}" logerror="true" osfamily="windows">
<arg line="-f
-v
4
${out.classes.optimized.dir}/${signed.apk}
${final.apk}"/>
</exec>
</target>
</project>
This ANT task has to be added to Eclipse's builders (Properties/Builders) tasks after Java builder and before Android package builder.
Press "Build All" (it's better to off Automatic Build check in Eclipse menu)
相关推荐
最新文章