在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了;

人家sdk升级,我们的脚本也要跟上趟,修改一下喽。

上网一查,大家的文章还停留在我去年的脚本程度,算了,自己动手查阅了资料之后,具体实现如下:

先输一下生成key的命令

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore

输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: Pelephone
您的组织单位名称是什么?
[Unknown]: Pelephone
您的组织名称是什么?
[Unknown]: Pelephone
您所在的城市或区域名称是什么?
[Unknown]: 广州
您所在的州或省份名称是什么?
[Unknown]: 广东
该单位的两字母国家代码是什么
[Unknown]: 86
CN=Pelephone, OU=Pelephone, O=Pelephone, L=广州, ST=广东, C=86 正确吗?
[否]: y

在工程的根目录 创建2个文件,分别:

1、build.xml

2、build.properties

build.xml的内容:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="autoDeployAPK" default="deploy">
  3. <!-- 使用第三方的ant包,使ant支持for循环-->
  4. <taskdef resource="net/sf/antcontrib/antcontrib.properties">
  5. <classpath>
  6. <pathelement location="lib/ant-contrib-1.0b3.jar"/>
  7. </classpath>
  8. </taskdef>
  9. <property file="build.properties" />
  10. <!-- The local.properties file is created and updated by the 'android' tool.
  11. It contains the path to the SDK. It should *NOT* be checked into
  12. Version Control Systems.
  13. <property file="local.properties" />
  14. -->
  15. <!-- The ant.properties file can be created by you. It is only edited by the
  16. 'android' tool to add properties to it.
  17. This is the place to change some Ant specific build properties.
  18. Here are some properties you may want to change/update:
  19. source.dir
  20. The name of the source directory. Default is 'src'.
  21. out.dir
  22. The name of the output directory. Default is 'bin'.
  23. For other overridable properties, look at the beginning of the rules
  24. files in the SDK, at tools/ant/build.xml
  25. Properties related to the SDK location or the project target should
  26. be updated using the 'android' tool with the 'update' action.
  27. This file is an integral part of the build system for your
  28. application and should be checked into Version Control Systems.
  29. <property file="ant.properties" />
  30. -->
  31. <property name="jar.libs.dir" value="${jar.libs.dir}" />
  32. <!-- The project.properties file is created and updated by the 'android'
  33. tool, as well as ADT.
  34. This contains project specific properties such as project target, and library
  35. dependencies. Lower level build properties are stored in ant.properties
  36. (or in .classpath for Eclipse projects).
  37. This file is an integral part of the build system for your
  38. application and should be checked into Version Control Systems. -->
  39. <loadproperties srcFile="${project.dir}/project.properties" />
  40. <!-- quick check on sdk.dir -->
  41. <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
  42. unless="sdk.dir"/>
  43. <property name="channelname" value="pateo" />
  44. <property name="channelkey" value="12347" />
  45. <!--循环打包 -->
  46. <target name="deploy">
  47. <foreach target="modify_manifest" list="${channel.list}" param="nameandchannel" delimiter=","></foreach>
  48. </target>
  49. <target name="modify_manifest">
  50. <!-- 获取渠道名字 -->
  51. <propertyregex override="true" property="channelname" input="${nameandchannel}" regexp="(.*):" select="\1"/>
  52. <!-- 获取渠道号码 -->
  53. <propertyregex override="true" property="channelkey" input="${nameandchannel}" regexp=":(.*)" select="\1"/>
  54. <!-- 正则匹配替换渠道号
  55. <replaceregexp flags="g" byline="false" encoding="UTF-8">
  56. <regexp pattern='meta-data android:name="CHANNEL" android:value="(.*)"' />
  57. <substitution expression='meta-data android:name="CHANNEL" android:value="${channelkey}"' />
  58. <fileset dir="" includes="AndroidManifest.xml" />
  59. </replaceregexp>-->
  60. <property name="out.final.file"
  61. location="${apk.out.dir}/${project.name}_${channelname}_${project.version}.apk" />
  62. <antcall target="release" />
  63. </target>
  64. <!-- extension targets. Uncomment the ones where you want to do custom work
  65. in between standard targets -->
  66. <!--
  67. <target name="-pre-build">
  68. </target>
  69. <target name="-pre-compile">
  70. </target>
  71. /* This is typically used for code obfuscation.
  72. Compiled code location: ${out.classes.absolute.dir}
  73. If this is not done in place, override ${out.dex.input.absolute.dir} */
  74. <target name="-post-compile">
  75. </target>
  76. -->
  77. <!--如果项目包含了jni代码,希望在打包时自动重新编译so库,可以修改build.xml文件。
  78. 修改方法为,在引用sdk的build.xml文件之前添加如下target:-->
  79. <!--
  80. <target name="-pre-build" depends="-ndk-build">
  81. </target>
  82. <target name="-ndk-build">
  83. <exec executable="ndk-build" failonerror="true">
  84. <arg value="clean" />
  85. </exec>
  86. <exec executable="ndk-build" failonerror="true" />
  87. </target>
  88. -->
  89. <!-- Import the actual build file.
  90. To customize existing targets, there are two options:
  91. - Customize only one target:
  92. - copy/paste the target into this file, *before* the
  93. <import> task.
  94. - customize it to your needs.
  95. - Customize the whole content of build.xml
  96. - copy/paste the content of the rules files (minus the top node)
  97. into this file, replacing the <import> task.
  98. - customize to your needs.
  99. ***********************
  100. ****** IMPORTANT ******
  101. ***********************
  102. In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
  103. in order to avoid having your file be overridden by tools such as "android update project"
  104. -->
  105. <!-- version-tag: 导入anroid sdk 默认的ant写好的build.xml -->
  106. <import file="${sdk.dir}/tools/ant/build.xml" />
  107. </project>

这个文件主要就是打包的指令,其中大家不难看出

  1. <import file="${sdk.dir}/tools/ant/build.xml" />

自动引用并且执行了你的sdk目录下tools/ant/build.xml,大家有精力可以自己看看这个文件.

build.properties的内容:

  1. #Save
  2. #Wed Oct 23 15:47:27 CST 2013
  3. project.name=MOBILE_ANDROID_PROJECT
  4. jar.libs.dir=libs
  5. build.first=false
  6. key.alias=maomao
  7. key.alias.password=maomao
  8. channel.list=test1\:100411-f91d7ad6c99688b587b299d2c507679d,test2\:100411-f91d7ad6c99688b587b299d2c507679d
  9. java.dir=C\:\\Program Files (x86)\\Java\\jdk1.6.0_10
  10. key.store=C\:\\changeself\\test.keystore
  11. project.dir=C\:\\changeself\\project_android
  12. sdk.dir=C\:\\changeself\\adt-bundle-windows-x86-20130729\\sdk
  13. project.version=1.0.3
  14. key.store.password=maomao
  15. apk.out.dir=apk

这个文件里面,

project.name 就是你的工程名,其实最后体现在APK的名字

key.alias和key.alias.password是你的 签名文件里的东西,自己先生成去

channel.list就是你的渠道名字,支持多个渠道,test1和test2,......testn,自己按照格式去填写,你写了几个渠道就会生成几个apk

java.dir    自己的java本机的安装目录

key.store  自己签名文件的本机存放目录

project.dir 你的工程本机存放目录

sdk.dir  你的android sdk本机存放目录

project.version  工程的版本号,最后也会体现在apk的名字里

key.store.password

apk.out.dir     在你的工程根目录存放apk生成的目录

ok,配置好上述2个文件后,在cmd命令行下,键入你的工程目录,执行 ant命令

最后会在你的apk.out.dir生成你需要的apk文件

转自:http://weibo.com/changeself

[转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)的更多相关文章

  1. Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解

    文/ skay csdn博客:http://blog.csdn.net/sk719887916/article/details/40541163 最近遇到项目从Eclispe迁移到Android st ...

  2. 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器

    作者:唐老师,华清远见嵌入式学院讲师. 1.   编译Android模拟器 在Ubuntu下,我们可以在源码里编译出自己的模拟器及SDK等编译工具,当然这个和在windows里下载的看起来没有什么区别 ...

  3. Android项目实战(三十一):异步下载apk文件并安装(非静默安装)

    前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog   进度条对话框  用于显示下载进度 2.AsyncTask     ...

  4. Android Studio 之生成正式签名的 APK 文件

    生成 APK 文件 •步骤 点击  Build -> Generate Signed...... : 来到如下界面: 选择 APK 选项,点击 Next 来到如下界面: 如果你电脑上没有一个正式 ...

  5. 五 Android Studio打包Eegret App (包名和签名,打出正式包)

    一 定义包名 如下图,在AndroidManifest.xml中的package就是包名 二 创建keystore 选择Build->Generate Signed APK 选择create n ...

  6. 如何用Android studio生成正式签名的APK文件

    必须签名之后才可以发布到app商店中. 平时的调试的app都有默认的签名. 下面是生成带签名的APK的步骤: 1. Build 选择 Generate Signed APK 2. 弹出框,第一次选择C ...

  7. Android之APK文件签名——keytool和jarsigner

    一.生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWidget.keystore -keyalg RSA - ...

  8. Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式

    from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...

  9. 【转】Android项目使用Ant打包,生成build.xml

    记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...

随机推荐

  1. python __del__

    python __del__ 转自:http://blog.csdn.net/bbdxf/article/details/25774763 最近学习<Python参考手册>学到Class部 ...

  2. servlet+jsp+java实现Web 应用

    servlet+jsp+java实现Web 应用 用java来构建一个web应用是特别容易的事情,jsp和php很像,可以嵌套在html中.程序的结构很简单,也很清楚,本文主要记录下大概的开发过程和环 ...

  3. [C++] 井字棋游戏源码

    TicTac.h #define EX 1 //该点左鼠标 #define OH 2 //该点右鼠标 class CMyApp : public CWinApp { public: virtual B ...

  4. django orm总结

    目录1.1.1 生成查询1.1.2 创建对象1.1.3 保存修改的对象1.1.4 保存 ForeignKey 和 ManyToManyField 字段1.1.5 检索对象1.1.6 检索所有的对象1. ...

  5. [转]Oracle因安装时未设定字符集导致中文乱码的解决方案

    在CentOS 6.4上安装Oracle 11g没有设定字符集,采用的是操作系统默认字符集:WE8MSWIN1252,将字符集修改为:AL32UTF8. SQL> select userenv( ...

  6. Html+css 练习写页面发现的错误及解决办法。

    最近开始模仿写一些静态页面,今天模仿的是中华咨询网.写了一个简单的js(功能:当鼠标hover一级菜单的时候,设置二级菜单为显示,当鼠标hover二级菜单的选项时候,二级菜单不收回.当鼠标移出菜单一级 ...

  7. 学javascript必须要知道的事

    第一:变量声明 在使用javascript时使用变量时首先做的是声明变量,变量声明的关键字是var. 例子: var i; var sum; 也可以多个变量声明: var i,sum; 还可以在声明时 ...

  8. android 5.0 webview坑

    http://www.heapoverflow.me/question-webview-loadurlurl-headers-not-working-in-android-31203905 It's ...

  9. 源代码安装 MySQL 5.6.28

    本文内容 创建 MySQL 用户和组 解压 MySQL 源代码包 生成配置安装文件 编译和安装 MySQL 配置文件 创建 MySQL 授权表 MySQL 目录授权 启动 MySQL 验证 MySQL ...

  10. 用Storm轻松实时大数据分析【翻译】

    原文地址 简单易用,Storm让大数据分析变得轻而易举. 如今,公司在日常运作中经常会产生TB(terabytes)级的数据.数据来源包括从网络传感器捕获的,到Web,社交媒体,交易型业务数据,以及其 ...