http://my.oschina.net/liux/blog/37875

网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性。今天想写个纯windows平台下的DOS命令行方式编译Android项目的bat文件,见以下代码:

  1. echo off
  2. rem =========基本参数配置============
  3. rem jdk的路径
  4. set JAVA_HOME=D:/Program Files/Java/jdk1.6.0_24
  5. rem jdk的版本
  6. set JDK_Version=1.6
  7. rem sdk的路径
  8. set AndroidHome=D:/Android/android-sdk-windows
  9. rem 编译的android版本路径
  10. set AndroidVersion=/platforms/android-8
  11. rem 编译的android项目路径
  12. set AndroidProject=D:/yourProject
  13. rem 编译生成的未签名apk文件
  14. set unsign_apk=yourProject.apk
  15. rem 编译生成的已签名apk文件
  16. set sign_apk=yourProject-sign.apk
  17. rem 签名用的key
  18. set apk_key=keyname
  19. set apk_keypass=keypass
  20. set apk_keystore=D:/yourProject/key.keystore
  21.  
  22. for %%x in ("%AndroidProject%") do set AndroidProject=%%~sx
  23. for %%x in ("%JAVA_HOME%") do set JAVA_HOME=%%~sx
  24. for %%x in ("%AndroidHome%") do set AndroidHome=%%~sx
  25. rem jdk工具包
  26. set EXE_JAVA=%JAVA_HOME%/bin/java
  27. set JAVAC=%JAVA_HOME%/bin/javac
  28. set JAR=%JAVA_HOME%/bin/jar
  29. set KeyTool=%JAVA_HOME%/bin/keytool
  30. set Jarsigner=%JAVA_HOME%/bin/jarsigner
  31. rem sdk工具包
  32. set AndroidAAPT=%AndroidHome%%AndroidVersion%/tools/aapt.exe
  33. set AndroidDx=%AndroidHome%%AndroidVersion%/tools/dx.bat
  34. set AndroidApkBuilder=%AndroidHome%/tools/apkbuilder.bat
  35. set AndroidJar=%AndroidHome%%AndroidVersion%/android.jar
  36. rem android项目引用的扩展jar
  37. set ExternerJar=%AndroidProject%/lib/commons-codec.jar;%AndroidProject%/lib/commons-httpclient-3.1.jar;
  38. set ReferJar=%AndroidProject%/lib/commons-codec.jar %AndroidProject%/lib/commons-httpclient-3.1.jar
  39. rem android项目基本目录及配置文件
  40. set AndroidProjectRes=%AndroidProject%/res
  41. set AndroidProjectGen=%AndroidProject%/gen
  42. set AndroidProjectBin=%AndroidProject%/bin
  43. set AndroidProjectAsset=%AndroidProject%/assets
  44. set AndroidProjectAndroidMainfest=%AndroidProject%/AndroidManifest.xml
  45. set AndroidProjectSrc=%AndroidProject%/src/weibo/*.java
  46. set AndroidProjectSrc=%AndroidProjectSrc% %AndroidProject%/src/weibo/http/*.java
  47. set AndroidProjectSrc=%AndroidProjectSrc% %AndroidProject%/src/weibo/util/*.java
  48. set AndroidProjectSrc=%AndroidProjectSrc% %AndroidProject%/gen/yourProjectPackageName/*.java
  49. rem 编译输出文件
  50. set AndroidProjectClassDex=%AndroidProject%/bin/classes.dex
  51. set AndroidProjectResources=%AndroidProject%/bin/resources.ap_
  52. set AndroidProjectApk="%AndroidProject%/bin/%unsign_apk%"
  53. set AndroidProjectSignApk="%AndroidProject%/bin/%sign_apk%"
  54.  
  55. echo 生成R.java
  56. %AndroidAAPT% package -f -m -J %AndroidProjectGen% -S %AndroidProjectRes% -I %AndroidJar% -M %AndroidProjectAndroidMainfest%
  57.  
  58. echo 生成class
  59. %JAVAC% -encoding UTF-8 -target %JDK_Version% -bootclasspath %AndroidJar% -classpath %ExternerJar% -d %AndroidProjectBin% %AndroidProjectSrc%
  60.  
  61. echo 生成dex
  62. cd %AndroidProjectBin%
  63. rem 把bin目录下*.class文件打成jar包
  64. %JAR% cvf %AndroidProjectBin%/yourProject.jar *.*
  65. cd %AndroidProject%
  66. rem 生成dex 这里需要注意,因为调用的是bat的脚本,因此必须用Call
  67. call %AndroidDx% --dex --output=%AndroidProjectClassDex% %AndroidProjectBin%/yourProject.jar %ReferJar%
  68.  
  69. echo 打包资源文件
  70. %AndroidAAPT% package -f -M %AndroidProjectAndroidMainfest% -S %AndroidProjectRes% -A %AndroidProjectAsset% -I %AndroidJar% -F %AndroidProjectResources%
  71.  
  72. echo 生成未签名的apk文件
  73. call %AndroidApkBuilder% %AndroidProjectApk% -v -u -z %AndroidProjectResources% -f %AndroidProjectClassDex% -rf %AndroidProject%/src
  74.  
  75. echo 生成数字签名key.keystore
  76. %KeyTool% -genkey -v -keystore %apk_keystore% -storepass %apk_keypass% -keypass %apk_keypass% -alias myKey -dname CN=Liux,OU=makingware.com,O=makingware,L=sz,ST=gd,C=cn -keyalg RSA -validity 10000
  77.  
  78. echo 进行数字签名
  79. %Jarsigner% -verbose -keystore %apk_keystore% -keypass %apk_keypass% -storepass %apk_keypass% -signedjar %AndroidProjectSignApk% %AndroidProjectApk% myKey
  80.  
  81. echo 签名成功
  82. pause

其中keys 按照指定的路径 新生成的,可以按照已有的key的信息打包

[转]Windows中使用命令行方式编译打包Android项目的更多相关文章

  1. [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  2. 转:Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  3. sublime text2在windows中以命令行启动

    sublime text2在windows中以命令行启动   把执行文件添加到PATH中即可,如图: 如果你和我一样习惯了mac下的简写subl,那么需要在程序目录中新建一个批处理文件subl.bat ...

  4. Android系列之Android 命令行手动编译打包详解

    Android 命令行手动编译打包过程图 [详细步骤]: 1使用aapt生成R.java类文件:  例:  E:\androidDev\android-sdk-windows2.2\tools> ...

  5. Android - Ant自动编译打包android项目 -- 1(转)

    1.  背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...

  6. (转载)Ant自动编译打包android项目

    1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压 ...

  7. 项目androidAnt编译打包Android项目

    时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...

  8. delphi DCC32命令行方式编译delphi工程源码

    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/10284879 作者:苏生米沿 Borland出品的Delphi,在TIOBE公布的 ...

  9. Windows中通过命令行新建文件夹、新建文件,和一些常用命令

    新建文件 和Linux不太一样,Linux中的touch和vi命令创建新文件的方法都不能用了,在windows命令行下得用type nul>文件名.后缀名来创建: F:\study\vue\wo ...

随机推荐

  1. linux操作系统-两台linux服务器SSH免密码登录

    A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), ip为192.168.100.247 ; A和B的系统都是Linux   在A上的命令 # ssh-keyg ...

  2. linux操作系统-设置静态ip

    在使用linux虚拟机的时候因为经常有关机的需求,然后重新开机后可能面临这上一次获取的ip被改变,在这里我分享一下在linux 下设置静态ip的经验 1.查看路由状态 [root@localhost ...

  3. (转)Android中Parcelable接口用法

    1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...

  4. 4. 深入 Python 流程控制

    除了前面介绍的 while 语句,Python 还从其它语言借鉴了一些流程控制功能,并有所改变. 4.1. if 语句 也许最有名的是 if 语句.例如: >>> x = int(i ...

  5. ES6 Proxy的应用场景

    一.相关API Proxy Reflect 二.Proxy应用场景 1.数据校验 表单提交的时候做数据校验,例如年龄是不是满足条件,数据类型是不是满足要求等等,这场场景非常适合使用Proxy. 下面展 ...

  6. centos7.2下nginx安装教程

    1.准备工作 1)关闭iptables 关闭操作 iptables -t nat -F 查看操作 iptables -t nat -L 2)关闭selinux 查看操作 setenforce 关闭操作 ...

  7. 常用的TCP Option

    当前,TCP常用的Option如下所示———— Kind (Type) Length Name Reference 描述 & 用途 0 1 EOL RFC 793 选项列表结束 1 1 NOP ...

  8. Qt样式表的使用

    Qt中可以灵活的使用层叠样式表(CSS),其语法和CSS很相似.因为HTML CSS的灵活性,所以可以很方便的为QT界面设计自己需要的外观.除了子类化Style类,使用QT样式表(QStyleShee ...

  9. db2建立类似oracle的dblink

    db2 catalog tcpip node rmt_node remote 127.0.0.1 server 50000; --db2 catalog database rmt_db as rmt_ ...

  10. 获取JavaScript异步函数的返回值

    今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <s ...