②拷贝工程到CMD文件夹(自己创建),删除工程中自动生成的目录和文件(.setting、bin、gen、.classpath、.project)。
2、Java Compiler:java编译器,R.java、Application source code和java InterFaces是通过java编译器编译成.class文件的
打包一个签名的apk需要两步操作
1.生成签名文件
2.根据签名文件进行打包的apk
操作步骤:
1.生成签名文件
①指令工具路径:Java -> jdk -> bin -> keytool.exe
②使用指令进入到工程的根目录下
③使用指令
keytool -genkeypair -alias zdc -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore zdc.keystore
2.根据签名文件进行打包的apk
①指令工具路径:Java -> jdk -> bin -> jarsigner.exe
②使用指令
jarsigner -keystore zdc.keystore -keypass 123456 -storepass 123456 -signedjar bin\mobliesafe_signed.apk bin\mobliesafe.apk zdc
#ant介绍
1.环境变量配置
ANT_HOME
....\apache-ant-1.9.6-bin
Path
%ANT_HOME%\bin
2.校验
ant -help 或者 ant -version
#ant基本操作
1.脚本必须写在build.xml中
2.常用标签
project根标签
name: 项目名称。必填
baseDir: 指定当前目录。(选填)
default: 默认执行的任务。 (选填)
echo输出打印标签
message:指定打印的内容
示例:
xml version="1.0" encoding="utf-8"?>
name="helloworld">
message="Hello World">
3.执行ant
①cmd -> ant : 查看build.xml文件是否构建成功
②cmd -> ant helloworld : 执行相应的任务
4.如果不想通过ant helloworld执行任务,也可以设置project的default标签设置默认执行任务
示例:
name="test01" default="helloworld">
name="helloworld">
message="Hello World">
4.也可以输出引用
示例:
name="test01" default="helloworld">
name="helloworld">
message="Hello World">
message="${basedir}">
${名称}:引用;${basedir} : 本地路径引用
5.执行多个任务
5.1.两个任务
示例:
name="test01" default="helloworld">
name="helloworld">
message="Hello World">
name="printdir" depends="helloworld">
message="${basedir}">
depends:和哪个任务关联,运行先执行depends中的任务,再执行当前任务
运行Cmd -> ant printdir,这时候就会先打印第一个任务,在打印第二个任务
5.2.三个任务
示例:
name="test01" default="helloworld">
name="helloworld">
message="Hello World">
name="printdir" depends="helloworld">
message="${basedir}">
name="helloAndroid" depends="helloworld,printdir">
message="helloAndroid">
多个任务depends中使用“,”分隔
#ant的文件操作
1.添加文件
示例:
name="mkdir">
dir="hehe">
mkdir:表示创建目录,dir:是目录的名称
2.删除目录
示例:
name="deldir">
dir="hehe">
delete:删除目录,dir:目录的名称
3.创建文件
因为创建出来文件还需要编辑,ant没有这么强大,所以不能创建文件
4.删除文件
创建文件test.txt
示例:
name="delfile">
file="test.txt">
file:文件的名称
#ant执行javac指令
1.创建java文件
2.使用ant执行编译指令
原先:编译:javac Test.java执行java Test
示例:
name="javac">
path="."/>
name="Test.java"/>
name="Test1.java"/>
javac:标示javac指令,src:根目录,exclude:表示不编译哪个文件
#ant打包手机卫士
在eclipse的手机卫士的项目根目录中新建文件build.xml,发现无法进行快捷提示,这是因为缺少ant.dtd系统文件,将ant.dtd导入到工程的根目录下在,在重新创建build.xml,创建的时候点击下一步,不要直接点击完成,在跳转的下一个界面中选择导入自己的dtd文件,完成即可
1.生成R文件
1.1.创建存放R文件的目录,工程 -> build
1.2.创建gen目录
示例:
name="init">
dir="${builddir}">
dir="${gendir}"/>
路径下面还会用,抽取路径
name="builddir" location="${basedir}/build"/>
name="gendir" location="${builddir}/gen" />
property : 设置属性
2.运行
window -> show view -> ant -> 点击加号将build.xml添加到ant中,如果出现错误将build.xml中的注释调用,点击运行即可
3.生成R文件
3.1.生成R文件需要aapt,但是aapt是在sdk目录下的,如何去获取呢?可以通过环境变量获取
示例:
name="sdkhome" location="${env.SDK_HOME}"/>
name="aapt" location="${sdkhome}/build-tools/19.1.0/aapt.exe"/>
environment : 表示设置环境变量的标示
3.2.生成R文件
示例:
name="genR" depends="init">
executable="${aapt}">
exec : 执行指令 executable:执行什么指令,ant无法通过快捷提示出来的。
3.3.在执行的时候还需要创建保存目录
示例:
name="resdir" location="${basedir}/res">
name="androidjar" location="${sdkhome}/platforms/android-14/android.jar">
name="manifest" location="${basedir}/AndroidManifest.xml">
4.aidl转化java文件操作:
4.1.设置属性获取aidl工具
示例:
name="aidl" location="${sdkhome}/build-tools/19.1.0/aidl.exe">
4.2.执行指令
因为有多个aidl文件所以需要执行多个aidl指令,在ant中exec标签是执行一条指令,apply标签执行多条指令
示例:
name="aidltojava" depends="mkR">
value="-p${frameworkaidl}"/>
dir="${srcdir}" includes="**/*.aidl"/>
fileset : 执行的文件的组,dir:文件存放的根目录 includes:文件的位置
**/*.aidl : **/:表示:aidl文件的上级目录 *.aidl:任何aidl文件
4.3.将相应的目录生成一下
示例:
name="srcdir" location="${basedir}/src">
name="frameworkaidl" location="${sdkhome}/platforms/android-14/framework.aidl">
5.java转class操作
5.1.创建classes目录,修改init任务
示例:
name="init">
dir="${builddir}">
dir="${gendir}"/>
dir="${classesdir}">
5.2.设置转化操作
示例:
name="javattoclass" depends="aidltojava">
encoding="utf-8" bootclasspath="${androidjar}" destdir="${classesdir}">
dir="${lisbsdir}" includes="**/*.jar">
path="${srcdir}">
path="${gendir}">
classpath : 表示设置路径组,fileset:标示多个文件
5.3.设置路径属性
示例:
name="lisbsdir" location="${basedir}/libs">
name="classesdir" location="${builddir}/classes">
6.解压jar包
示例:
name="unjar" depends="javattoclass">
dest="${classesdir}">
dir="${lisbsdir}" includes="**/*.jar">
7.class文件转dex文件
7.1.获取dx工具
示例:
name="dx" location="${sdkhome}/platform-tools/dx.bat">
7.2.设置执行任务
示例:
name="classtodex" depends="unjar">
executable="${dx}">
value="--output=${classesdex}">
7.3.设置路径
示例:
name="classesdex" location="${builddir}/classes.dex">
8.打包资源文件
8.1.设置执行任务
示例:
name="restoresources" depends="classtodex">
executable="${aapt}">
8.2.设置路径
示例:
name="assetsdir" location="${basedir}/assets">
name="resourcesap" location="${builddir}/resources.ap_">
9.生成未签名的apk
9.1.获取打包指令
示例:
name="apkbuilder" location="${sdkhome}/tools/apkbuilder.bat">
9.2.设置执行任务
示例:
name="unsignedapk" depends="restoresources">
executable="${apkbuilder}">
9.3.设置路径
示例:
name="unsingedapk" location="${builddir}/mobliesafe_unsigned.apk">
10.生成签名的apk
将之前用命令写的key文件拷贝到工程的根目录下
10.1.获取执行指令工具
示例:
name="javahome" location="${env.JAVA_HOME}">
name="jarsigner" location="${javahome}/bin/jarsigner.exe">
10.2.设置执行任务
name="signedapk" depends="unsignedapk">
executable="${jarsigner}">
10.3.设置路径
示例:
name="keystore" location="${basedir}/zdc85.keystore">
name="signedpakdir" location="${builddir}/mobliesafe_signed.apk">
11.资源混淆
11.1.解压AndResGuard-master.zip,在其中的tool_output找到AndResGuard-cli-1.1.4.jar
11.2.将AndResGuard-cli-1.1.4.jar拷贝到工程的tools目录下
11.3.将config.xml文件拷贝到工程的tools目录下
11.4.修改config.xml文件
示例:
id="sign" isactive="true">
value="123456"/>
value="123456"/>
11.5.使用指令测试,必须使用JDK1.7,并且路径不能有空格
D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk
11.6.解决7za的错误
将SevenZip\executable目录下找到7za-windows_x86_64.exe拷贝到工程的tools目录下
11.7.将key文件也放到目录下重新执行命令
D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk -7zip 7za-windows_x86_64.exe
11.8.设置ant执行任务
设置JDK1.7路径
示例:
name="java7" location="D://java/jdk7/bin/java.exe" />
设置执行任务
示例:
name="proguardResourceApk" depends="unsignedapk">
executable="${java7}">
value="tools/AndResGuard-cli-1.1.4.jar" />
value="${unsingedapk}" />
value="tools/7za-windows_x86_64.exe" />
注意:这时候需要将config.xml拷贝到根目录下