对于一个新项目, 可以用这个命令创建需要的ant编译环境(可以看到android项目默认的文件结构)
android create project -k com.foo -a Test1 -t android-8 -p d:\temp
如果是已经存在的项目, 对主项目和子项目都运行
项目目录> android update project -s -p . -t android-19
-s 是因为带子项目
-t 是指定目标版本, 版本不对会导致编译失败
其中
build.xml 是ant任务文件, 基本不用修改
custom_rules.xml 对于需要自行配置的编译任务, 写到这个文件里, 会被build.xml加载
ant.properties ant运行中涉及的变量写到这里
local.properties 里面设定了sdk.dir的路径, 不用修改
project.properties 设定了编译目标和项目类型, 如果有子项目的话, 还有子项目的路径, 不用修改
然后执行下面的命令就进行编译了
项目目录>D:\apache-ant-1.8.4\bin\ant.bat clean
项目目录>D:\apache-ant-1.8.4\bin\ant.bat release
根据中途报的错, 再做调整
如果子项目编译出错, 可以分别在子项目目录下运行ant clean 和 ant release, 直到排除错误
两个相似的custom_rules.xml 例子
?
? ?
? ?
? ?
? ? ? ?
? ?
? ?
? ? ? ?
? ?
? ? ?
? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? source="${java.source}" target="${java.target}"
? ? ? ? ? ? ? ? ? debug="true" extdirs="" includeantruntime="false"
? ? ? ? ? ? ? ? ? destdir="${out.classes.absolute.dir}"
? ? ? ? ? ? ? ? ? bootclasspathref="project.target.class.path"
? ? ? ? ? ? ? ? ? verbose="${verbose}"
? ? ? ? ? ? ? ? ? classpathref="project.javac.classpath"
? ? ? ? ? ? ? ? ? fork="${need.javac.fork}">
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? Instrumenting classes from ${out.absolute.dir}/classes...
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? appPackage="${project.app.package}"
? ? ? ? ? ? ? ? ? ? ? ? ? ? libraryPackagesRefId="project.library.packages"
? ? ? ? ? ? ? ? ? ? ? ? ? ? filterOut="emma.default.filter"/>
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mode="overwrite"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? instrpath="${out.absolute.dir}/classes"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outdir="${out.absolute.dir}/classes"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? metadatafile="${emma.coverage.absolute.file}">
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? Creating library output jar file...
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? Custom jar packaging exclusion: ${android.package.excludes}
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? includes="**/*.class"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/BuildConfig.class"/>
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ? ? ?
? ?
?
另一个
?
? ?
? ?
? ?
? ?
? ? ? ?
? ?
? ?
? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? source="${java.source}" target="${java.target}"
? ? ? ? ? ? ? ? debug="true" extdirs="" includeantruntime="false"
? ? ? ? ? ? ? ? destdir="${out.classes.absolute.dir}"
? ? ? ? ? ? ? ? bootclasspathref="project.target.class.path"
? ? ? ? ? ? ? ? verbose="${verbose}"
? ? ? ? ? ? ? ? classpathref="project.javac.classpath"
? ? ? ? ? ? ? ? fork="${need.javac.fork}">
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? Instrumenting classes from ${out.absolute.dir}/classes...
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? appPackage="${project.app.package}"
? ? ? ? ? ? ? ? ? ? ? ? libraryPackagesRefId="project.library.packages"
? ? ? ? ? ? ? ? ? ? ? ? filterOut="emma.default.filter"/>
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mode="overwrite"
? ? ? ? ? ? ? ? ? ? ? ? ? ? instrpath="${out.absolute.dir}/classes"
? ? ? ? ? ? ? ? ? ? ? ? ? ? outdir="${out.absolute.dir}/classes"
? ? ? ? ? ? ?