`
sunting_bcwl
  • 浏览: 95920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Build脚本

阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="zipalign" basedir=".">
      <property name="password" value="123456"/>

<!-- environment of the system -->
<property environment="env"/>

<!-- current time -->
<tstamp>
        <format property="today" pattern="yyMMdd_hhmmss"/>
</tstamp>

<property name="dir.android_home" value="${env.ANDROID_HOME}"/>
<property name="dir.java_home" value="${env.JAVA_HOME}"/>

<!-- relative dir of android sdk -->
<property name="dir.tools" value="${dir.android_home}/tools"/>
<property name="dir.platform" value="${dir.android_home}/platforms/android-7"/>
<property name="dir.platform_tools" value="${dir.android_home}/platform-tools"/>
<property name="lib.android" value="${dir.platform}/android.jar"/>
<property name="android.framework" value="${dir.platform}/framework.aidl"/>

<!-- command tools in android sdk -->
<property name="aapt" value="${dir.platform_tools}/aapt"/>
<property name="aidl" value="${dir.platform_tools}/aidl"/>
<property name="adb" value="${dir.platform_tools}/adb"/>
<property name="zipalign" value="${dir.tools}/zipalign"/>
<condition property="dx" value="${dir.platform_tools}/dx.bat" else="${dir.platform_tools}/dx">
        <os family="windows" />
</condition>
<condition property="apk-builder" value="${dir.tools}/apkbuilder.bat" else="${dir.tools}/apkbuilder">
        <os family="windows" />
</condition>
<condition property="jarsigner" value="${dir.java_home}/bin/jarsigner.exe" else="${dir.java_home}/bin/jarsigner">
<os family="windows" />
</condition>

<!-- relative dir of our project -->
<property name="dir.src" value="${basedir}/src"/>
<property name="dir.assets" value="${basedir}/assets"/>
<property name="dir.res" value="${basedir}/res"/>
<property name="dir.gen" value="$basedir}/gen"/>
<property name="file.manifest" value="${basedir}/AndroidManifest.xml"/>
<property name="external-jars" value="${basedir}/libs"/>

<!-- dex file name -->
<property name="file.dex" value="classes.dex"/>
<property name="file.resource" value="resources.ap_"/>

<!-- the output dir -->
<property name="dir.target" value="${basedir}/bin"/>
<property name="dir.target_classes" value="${dir.target}/classes"/>
<property name="dir.target_dex" value="${dir.target}/${file.dex}"/>
<property name="dir.target_resource" value="${dir.target}/${file.resource}"/>
<property name="dir.target_debug" value="${dir.target}/debug"/>
<property name="dir.target_release" value="${dir.target}/release"/>
<property name="file.apk_debug" value="${dir.target_debug}/${ant.project.name}_${today}.apk"/>
<property name="file.apk_unsign_release" value="${dir.target_release}/${ant.project.name}_unsign_${today}.apk"/>
<property name="file.apk_release" value="${dir.target_release}/${ant.project.name}_unoptimized_${today}.apk"/>
<!-- the signed release which use zipalign tool to optimized -->
<property name="file.apk_zipalign" value="${dir.target_release}/${ant.project.name}_${today}.apk"/>

<target name="clean">
        <delete dir="${dir.target}"/>
<delete dir="${dir.target_classes}"/>
<delete dir="${dir.target_debug}"/>
<delete dir="${dir.target_release}"/>
</target>

<!-- init -->
<target name="init" depends="clean">
        <mkdir dir="${dir.target}"/>
<mkdir dir="${dir.target_classes}"/>
<mkdir dir="${dir.target_debug}"/>
<mkdir dir="${dir.target_release}"/>
</target>

<!-- generate apk file for the project -->
<target name="compile" depends="init">
       <!-- Generate the R.java file for this project's resources. -->
        <exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="${dir.src}" />
<arg value="-M" />
<arg value="${file.manifest}" />
<arg value="-S" />
<arg value="${dir.res}" />
<arg value="-I" />
<arg value="${lib.android}" />
</exec>
<!-- Generate java classes from .aidl files. -->
<apply executable="${aidl}" failonerror="true">
<arg value="-p${android.framework}" />
<arg value="-I${dir.src}" />
<fileset dir="${dir.src}">
<include name="**/*.aidl" />
</fileset>
</apply>
<!-- Compile this project's .java files into .class files. -->
<javac encoding="UTF-8" target="1.6" debug="true" extdirs="" srcdir="${dir.src}" destdir="${dir.target_classes}" bootclasspath="${lib.android}">
<classpath>
<fileset dir="${external-jars}" includes="*.jar" />
</classpath>
</javac>
<!-- Convert this project's .class files into .dex files. -->
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="--dex" />
<arg value="--output=${dir.target_dex}" />
<arg path="${dir.target_classes}" />
<fileset dir="${external-jars}" includes="*.jar" />
</apply>
<!-- Put the project's resources into the output package file. -->
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="${dir.res}" />
<arg value="-A" />
<arg value="${dir.assets}" />
<arg value="-I" />
<arg value="${lib.android}" />
<arg value="-F" />
<arg value="${dir.target_resource}"/>
</exec>
</target>

<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="compile">
<exec executable="${apk-builder}" failonerror="true">
<arg value="${file.apk_debug}" />
<arg value="-z" />
<arg value="${dir.target_resource}" />
<arg value="-f" />
<arg value="${dir.target_dex}" />
<arg value="-rf" />
<arg value="${dir.src}" />
<arg value="-rj" />
<arg value="${external-jars}" />
</exec>
</target>

<!-- Package the application without signing it.
    This allows for the application to be signed later with an official publishing key. -->
<target name="unsign-release" depends="compile">
<exec executable="${apk-builder}" failonerror="true">
<arg value="${file.apk_unsign_release}" />
<arg value="-u" />
<arg value="-z" />
<arg value="${dir.target_resource}" />
<arg value="-f" />
<arg value="${dir.target_dex}" />
<arg value="-rf" />
<arg value="${dir.src}" />
<arg value="-rj"/>
<arg value="${external-jars}"/>
</exec>
</target>

<!-- sign the apk -->
<!-- use the command below to generate the android.keystore file:
        "keytool -genkey -alias android.keystore -keyalg RSA -validity  20000 -keystore android.keystore" -->
<target name="jarsigner" depends="unsign-release">
<exec executable="${jarsigner}" failonerror="true">
<arg value="-verbose" />
<arg value="-storepass" />
<arg value="${password}" />
<arg value="-keystore" />
<arg value="android.keystore" />
<arg value="-signedjar" />
<arg value="${file.apk_release}" />
<arg value="${file.apk_unsign_release}" />
<arg value="android.keystore" />
</exec>
</target>

<!-- optimize -->
<target name="zipalign" depends="jarsigner">
<exec executable="${zipalign}" failonerror="true">
<arg value="-v" />
<arg value="-f" />
<arg value="4" />
<arg value="${file.apk_release}" />
<arg value="${file.apk_zipalign}" />
</exec>

<!-- delete unsigned apk and unoptimized apk -->
<delete file="${file.apk_unsign_release}"/>
<delete file="${file.apk_release}"/>
</target>
</project>
分享到:
评论

相关推荐

    build 脚本例子

    build 脚本例子build 脚本例子build 脚本例子

    ant build脚本代码

    本文将深入探讨Ant Build脚本及其在自动化多渠道打包和自定义任务打包中的应用。 Ant的核心概念是构建文件(build.xml),它是用XML编写的,定义了一系列的目标(target)和任务(task)。每个目标由一系列的任务...

    gwt_ant_build脚本研习

    gwt_ant_build脚本研习 目录 build.xml源文件 构建工程war的分析 自定义的build工程文件

    build打包脚本

    deb通用 打包脚本deb通用 打包脚本deb通用 打包脚本deb通用 打包脚本

    android ant build脚本代码

    本篇文章将详细解析`Android Ant build`脚本代码,以及如何实现自动化多渠道打包和自定义任务打包。 `Ant` 是Apache组织提供的一个Java项目构建工具,它基于XML来定义构建过程,具有高度可配置性和可扩展性。在...

    jenkins+ant的build脚本

    用于jenkins+ant部署jmeter脚本,用于jenkins+ant部署jmeter脚本,

    ADempiere开发者文档和build脚本

    NULL 博文链接:https://softwarexiang120.iteye.com/blog/2037114

    自动化的智能Build脚本(Smart Makefile)

    智能自动化Makefile可以完成如下工作: *自动获去操作系统类型并指定为全局编译选项(-DYOUR_OS_NAME) *自动出来源代码文件之间的依赖关系 *使用colorgcc可以彩色显示警告和错误信息 *智能控制debug和release版本的...

    fedora-atomic-nightly:Fedora Atomic Nightly Build脚本

    每晚浅顶软呢帽Fedora Atomic Nightly Build脚本该存储库将用于脚本来构建每夜/ dev版本注意:如果当前不存在,则使用的模拟配置需要附加以下内容: config_opts['plugin_conf']['bind_mount_opts']['dirs'].append...

    Keil编译程序自动化脚本

    使用此脚本可以完成keil自动程序编译,无需打开keil软件,

    Visual C++ 2015 Build Tools

    2. **修改项目配置**:检查项目的build脚本或配置文件,看是否可以修改为使用系统已有的MSBuild 4.0。这通常需要对项目结构有深入理解,确保所有依赖项都与新版本兼容。 3. **使用兼容模式**:部分较新的MSBuild...

    跨平台编译脚本build.sh

    跨平台(Linux/MacOS/iOS/Android/Windows)自动编译脚本,用户需要先自行安装cmake,并构建CMakelists.txt自定义编译规则,配合此脚本即可编译出对应平台的文件。 Linux:直接在Linux系统上运行此脚本,默认使用gcc...

    [转]使用ant进行自动daily build

    例如,一个基本的daily build脚本可能有一个`clean`目标用于清理上一次的构建结果,一个`compile`目标用于编译源代码,一个`test`目标用于运行单元测试,最后可能有一个`deploy`目标用于部署到测试或生产环境。...

    AutoBuild script mail part brief introduction

    AutoBuild 脚本邮件部分是一个自动化构建系统的关键组件,其主要目标是确保开发者无需登录DateBuild服务器就能获取编译过程的结果。邮件内容通常包括编译的成功与否以及详细的编译日志,以便于问题的排查和跟踪。...

    docker-kdesrc-build:Dockerfiles使用kdesrc-build脚本将KDE源代码编译到Docker中-docker source code

    docker-kdesrc-build 该项目旨在通过将kdesrc-build工具包装在Docker中来提供一个轻量级且易于使用的KDE开发环境。 这样,您可以编译和处理最新版本的KDE项目,并使主系统中没有不需要的开发包。 通过在Docker...

    ionic-app-scripts:适用于Ionic项目的App Build脚本

    自从Ionic Framework 4.0版发布以来,我们不再使用Ionic App脚本在Ionic Framework中进行构建。 我们不再积极维护Ionic Framework的第3版。 有关哪些版本处于活动状态的更多信息,请参阅我们的。 因此,我们不再...

    基于C语言的跨平台文件管理器设计源码

    其中,C源代码文件194个,头文件182个,PO文件103个,PNG图片文件32个,SVG文件24个,IN文件19个,Build脚本16个,XML文件13个,Nemo Action脚本11个,Python脚本5个。该管理器旨在提供高效的文件管理功能,适用于多...

    ant的build构建脚本

    ant脚本构建工具,有详细的注释、用于构建程序war包,执行编译、修改、拷贝、远程上传程序war包、远程发布程序、远程重启服务器(tomcat)

    autorevision:用于提取版本信息的脚本,在releasebuild脚本中很有用

    一个shell脚本,用于从存储库中提取对发行/构建脚本有用的修订信息。 支持的存储库类型包括git , hg , bzr和svn 。 该记录可以以现成的形式发送给C , C++ , Java , bash , Python , Perl , lua , php , ...

Global site tag (gtag.js) - Google Analytics