<?xml version="1.0" encoding="UTF-8"?>
<project
name="PushFastDemo"
basedir="."
default="package" >
<property environment="env" />
<property name="demo.name" value="PushDemo" />
<property name="android.dir" value="${env.ANDROID_HOME}/platforms/android-19" />
<property name="jarsigner.dir" value="${env.JAVA_HOME}/bin/jarsigner" />
<property name="aapt.dir" value="${env.ANDROID_HOME}/build-tools/android-4.4W/aapt" />
<property name="dx.dir" value="${env.ANDROID_HOME}/build-tools/android-4.4W/dx" />
<property name="sdklib.dir" value="${env.ANDROID_HOME}/tools/lib/sdklib.jar" />
<property name="version" value="4.4" />
<property name="sdk.dir" value="${env.ANDROID_HOME}" />
<property name="bin.dir" value="${basedir}/bin" />
<property name="libs.dir" value="${basedir}/libs" />
<property name="gen.dir" value="${basedir}/gen" />
<property name="src.dir" value="${basedir}/src" />
<property name="classes.dir" value="${bin.dir}/classes" />
<property name="keystore.dir" value="${basedir}/demo.keystore" />
<property name="keystore-password" value="demodebug" />
<property name="alias" value="lulei" />
<property name="alias-password" value="demodebug" />
<target
name="clean"
description="clean the directory" >
<echo message="正在删除之前的生成的包/文件..." />
<delete dir="${bin.dir}" />
<delete dir="${libs.dir}" />
<delete dir="${gen.dir}" />
<echo message="删除之前的生成的包/文件完成" />
</target>
<target
name="init"
depends="clean"
description="init for compile" >
<echo message="正在准备编译依赖..." />
<mkdir dir="${bin.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${gen.dir}" />
<mkdir dir="${libs.dir}" />
<mkdir dir="${libs.dir}/armeabi" />
<mkdir dir="${libs.dir}/mips" />
<copy
file="../../output/pushservice-${version}.jar"
todir="${libs.dir}" />
<copy
file="../../output/armeabi/libbdpush_V2_2.so"
todir="${libs.dir}/armeabi" />
<copy
file="../../output/mips/libbdpush_V2_2.so"
todir="${libs.dir}/mips" />
<echo message="编译依赖准备完成" />
</target>
<!-- 因为demo中的java代码依赖R文件生成的R.java,所以先生成R.java -->
<target
name="compile-resouces"
depends="init"
description="compile the res/ assets/ to R.java" >
<echo message="正在编译资源文件..." />
<exec
executable="${aapt.dir}"
failonerror="true" >
<arg value="package" />
<arg value="-m" />
<arg value="--auto-add-overlay" />
<arg value="-J" />
<arg value="${gen.dir}" />
<arg value="-S" />
<arg value="${basedir}/res" />
<arg value="-A" />
<arg value="${basedir}/assets" />
<arg value="-I" />
<arg value="${android.dir}/android.jar" />
<arg value="-M" />
<arg value="${basedir}/AndroidManifest.xml" />
</exec>
<echo message="编译资源文件完成" />
</target>
<target
name="compile"
depends="compile-resouces"
description="compile *.java to *.class" >
<echo message="正在编译源文件..." />
<!-- 编译时所依赖的jar 文件集合 -->
<path id="classpath" >
<fileset dir="${libs.dir}" >
<include name="**/*.jar" />
</fileset>
<fileset dir="${android.dir}" >
<include name="**/*.jar" />
</fileset>
<pathelement path="${classes.dir}" />
</path>
<javac
destdir="${classes.dir}"
encoding="UTF-8" >
<src path="${src.dir}" />
<src path="${gen.dir}" />
<include name="**/*.java" />
<classpath refid="classpath" />
</javac>
<echo message="编译源文件完成" />
</target>
<target
name="generate-dex"
depends="compile"
description="transform the *.class files to .dex file" >
<echo message="正在生成dex文件..." />
<exec
executable="${dx.dir}"
failonerror="true" >
<arg value="--dex" />
<!-- 输出文件 -->
<arg value="--output=${bin.dir}/classes.dex" />
<!-- 要生成.dex文件的源classes和libraries -->
<arg path="${classes.dir}" />
<arg path="${libs.dir}" />
</exec>
<echo message="dex文件已经生成" />
</target>
<target
name="package-resource"
depends="generate-dex"
description="package the res/ assets/ into a package" >
<echo message="正在打包资源文件..." />
<exec
executable="${aapt.dir}"
failonerror="true" >
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="${basedir}/AndroidManifest.xml" />
<arg value="-A" />
<arg value="${basedir}/assets" />
<arg value="-S" />
<arg value="${basedir}/res" />
<arg value="-I" />
<arg value="${android.dir}/android.jar" />
<arg value="-F" />
<arg value="${bin.dir}/resouces.ap_" />
<arg value="--auto-add-overlay" />
</exec>
<echo message="资源文件已打包完成" />
</target>
<target
name="package"
depends="package-resource"
description="package the res/ assets/ into a package" >
<echo message="正在生成apk文件..." />
<java classname="com.android.sdklib.build.ApkBuilderMain" >
<classpath>
<path location="${sdklib.dir}" />
</classpath>
<arg value="${bin.dir}/${demo.name}-${version}-unsign.apk" />
<arg value="-u" />
<arg value="-z" />
<arg value="${bin.dir}/resouces.ap_" />
<arg value="-f" />
<arg value="${bin.dir}/classes.dex" />
<arg value="-rf" />
<arg value="${basedir}/src" />
<arg value="-nf" />
<arg value="${libs.dir}" />
</java>
<echo message="apk文件已打生成" />
</target>
<!-- 对apk进行签名,签名前先将自己的密钥拷贝到该工程目录下 -->
<target
name="sign"
depends="package" >
<echo message="正在对生成的包进行签名..." />
<exec
executable="${jarsigner.dir}"
failonerror="true" >
<arg value="-keystore" />
<arg value="${keystore.dir}" />
<arg value="-storepass" />
<arg value="${keystore-password}" />
<arg value="-keypass" />
<arg value="${alias-password}" />
<arg value="-signedjar" />
<arg value="${bin.dir}/${demo.name}-${version}.apk" />
<arg value="${bin.dir}/${demo.name}-${version}-unsign.apk" />
<arg value="${alias}" />
</exec>
<delete dir="${bin.dir}/${demo.name}-${version}-unsign.apk" />
<echo message="包签名完成" />
</target>
<target
name="install"
depends="sign"
description="install the apk file to your phone" >
<echo message="正在安装到你的手机..." />
<exec executable="adb" >
<arg value="install" />
<arg value="-r " />
<arg path="${bin.dir}/${demo.name}-${version}.apk" />
</exec>
<echo message="安装完成" />
</target>
</project>

注意事项:

1.  使用jarsigner时,如果是java 1.7(包括1.7)以上的话,要指定签名算法,否则有的机型安装会失败,即在jarsign 中添加如下的参:

<arg value="-digestalg"/>
<arg value="SHA1"/>
<arg value="-sigalg"/>
<arg value="MD5withRSA"/>

  

一个文件查看你选择 Run as Android applications 都干了啥的更多相关文章

  1. Git查看某一个文件的历史提交信息

    工作中我们有时候想要查看某一个文件的历史提交版本,] 还想看都修改过那些内容,那么这两个简单的命令就会帮到你了, 话不多说,comeBaby...... 1,首先查看一个文件的历史提交信息 git l ...

  2. Confluence 6 预览一个文件

    当你浏览一个页面的时候,单击一个图片,文件缩略图或者链接将会运行预览. 预览视图包括了从远程 Web 页面导入的图片文件和已经附加到页面中的文件(尽管有可能这些文件没有在页面中显示). 在预览中你可以 ...

  3. Android Studio - HPROF文件查看和分析工具

    Android Studio 翻译的官方文章 原文链接 当你在Android Studio中使用Android Monitor里的Memory Monitor工具监视内存使用情况时,可以把Java堆快 ...

  4. Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例

    文件加密器,操作过程肯定涉及到文件选择器的使用,所以这里以文件加密器为例.下例为我自己写的一个文件加密器,没什么特别的加密算法,只为演示文件选择器JFileChooser的使用. 加密器界面如图: 项 ...

  5. Linux查看一个文件夹大小

    1.Linux查看一个文件夹大小: du -sh /home/yangkun [yangkun@sg1 bin]$ du -sh /home/yangkun/ 164M /home/yangkun/ ...

  6. 【Android Developers Training】 37. 共享一个文件

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. Linux 如何通过命令查看一个文件的某几行(中间几行或最后几行)

    linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...

  8. linux怎么查看一个文件夹的大小

    linux查看一个文件夹的大小的命令为: -lh 该文件夹的完整路径 例,查询/var文件夹的大小: -lh /var du 递归查询该路径下所有文件的大小(若不加任何参数,则显示文件夹内的所有文件, ...

  9. Shell 从日志文件中选择时间段内的日志输出到另一个文件

    Shell 从日志文件中选择时间段内的日志输出到另一个文件 情况是这样的,某系统的日志全部写在一个日志文件内,所以这个文件非常大,非常长,每次查阅的时候非常的不方便.所以,相关人员希望能够查询某个时间 ...

随机推荐

  1. HDU 2503 (数论,最大公约数)

    a/b + c/d Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. CentOS7安装bind域名服务

    安装Bind Chroot DNS 服务器 yum install bind-chroot bind -y 拷贝bind相关文件,准备bind chroot 环境 cp -R /usr/share/d ...

  3. RabbitMQ (三) 工作队列之轮询分发

    上一篇讲了简单队列,实际工作中,这种队列应该很少用到,因为生产者发送消息的耗时一般都很短,但是消费者收到消息后,往往伴随着对高消息的业务逻辑处理,是个耗时的过程,这势必会导致大量的消息积压在一个消费者 ...

  4. POJ 1127 Jack Straws (计算几何)

    [题目链接] http://poj.org/problem?id=1127 [题目大意] 在二维平面中,给出一些木棍的左右端点,当木棍相交或者间接相交时 我们判断其连通,给出一些询问,问某两个木棍是否 ...

  5. 【博弈论】poj2484 A Funny Game

    如果当前状态可以根据某条轴线把硬币分成两个相同的组,则当前状态是必败态. 因为不论在其中一组我们采取任何策略,对方都可以采取相同的策略,如此循环,对方必然抽走最后一枚硬币. 因为我们先手,因此抽完后盘 ...

  6. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

  7. apk打包

    1.在导航栏中选择Builder->Generate Signed Apk 2.新建点击Creat new... 3.注意路径后面写apk的名字(这个名字将会显示在手机软件的下方)

  8. Linux命令之 file命令

    该命令用来识别文件类型,也可用来辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的. 执行权限 :All User 指令所在路径:/us ...

  9. 如何用css做一个爱心

    摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...

  10. 【翻译】自定义 UIViewController Transitions

    原文地址:http://www.shinobicontrols.com/blog/posts/2013/10/03/ios7-day-by-day-day-10-custom-uiviewcontro ...