在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. Web API 简单示例

    一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...

  2. jenkins2 groovy脚本参考

    使用plugin生成groovy脚本,或者参考已有的groovy脚本. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.co ...

  3. OpenWrt资料汇总

    上周末折腾了一下OpenWrt,打算把Facebook的网络模拟工具部署到上面,最终以失败告终.上github看,发现已经有人给作者提了issue,作者表示部署在OpenWrt上会很有用,但确实在Op ...

  4. 安装 Dubbo 管理控制台

    Dubbo管控台可以对注册到 zookeeper 注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此可以单节点部署. IP: 192.168.1. ...

  5. SpringMVC文件上传实现

    SpringMVC(注解)上传文件需要注意的几个地方:1.form的enctype="multipart/form-data",这个是上传文件必须的2.applicationCon ...

  6. Redis安装与日常使用

    下载与安装 $ wget http://download.redis.io/releases/redis-3.0.3.tar.gz $ tar xzf redis-3.0.3.tar.gz $ cd ...

  7. autocomplete实现联想输入,自动补全

    jQuery.AutoComplete是一个基于jQuery的自动补全插件.借助于jQuery优秀的跨浏览器特性,可以兼容Chrome/IE/Firefox/Opera/Safari等多种浏览器. 特 ...

  8. paip.python3 的类使用跟python2 的不同之处

    paip.python3 的类使用跟python2 的不同之处 #------python3的写法而且使用.. #class syllable(BaseClassA, BaseClassB): cla ...

  9. xib与nib的区别

    xib和nib都是Interface Builder的图形界面设计文档,nib这个名字来自于NeXTSTEP系统,在NeXTSTEP被Apple收购之前,一直使用nib作为Interface Buil ...

  10. ES6转码器babel的使用

    1. 进入ES6的项目,执行 npm init // 初始化package.json 2. 在与package.json同一目录下编写配置文件 .babelrc { "presets&quo ...