Coder Social home page Coder Social logo

sinkcup / antdemo Goto Github PK

View Code? Open in Web Editor NEW
166.0 22.0 108.0 1.91 MB

安卓自动打包ant auto build Android Package

Home Page: http://www.cnblogs.com/sink_cup/p/android-ant-auto-release.html

License: BSD 3-Clause "New" or "Revised" License

Makefile 12.96% Shell 50.99% Java 36.06%

antdemo's Introduction

AntDemo

ant auto build Android Package

Android ant 自动打包脚本:自动替换友盟渠道、版本号、包名,而不影响代码(修改的是临时目录中的代码)。

如何集成到我的项目里

前提:了解android官方文档,在项目目录中执行官方命令能打包,比如常见的打包步骤:

android update project -p . -s -t "android-21"
ant debug

如果是用Linux系统,则不用记上面这么长的命令,下载本项目中的Makefile,放到项目目录中,然后执行:

make
ant debug

如果ant debug打包能通过,则可以使用下面的自动打包。

下载custom_rules.xml,放到项目目录中,然后执行:

ant auto-debug -Dversion=time

即可自动打包,生成的包在./bin/中。

如果想打release包,下载ant.properties,修改其中的密码等配置,然后执行:

ant auto-release -DUMENG_CHANNEL=googlePlayStore -Dpackage=com.example.ant.beta

即可。

打包时自动更换友盟渠道

确认AndroidManifest.xml中已添加了友盟节点:

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="debug" />

然后执行:

ant auto-release -DUMENG_CHANNEL=googlePlayStore

即会把AndroidManifest.xml中的友盟渠道替换成googlePlayStore,然后打包。而执行:

ant auto-release -DUMENG_CHANNEL=smartisanAppStore

即会打出锤子应用商店的包。

打包时自动更换包名

ant auto-release -Dpackage=com.example.ant.beta

即会把包名自动改成com.example.ant.beta。

打包时使用时间作为版本号

ant auto-debug -Dversion=time

把版本号改成时间,然后打包,效果:

versionCode是时间戳,比如1390969254

versionName是日期,比如14.1.29.1220

多个参数任意组合

ant auto-release -DUMENG_CHANNEL=googlePlayStore -Dpackage=com.example.ant.beta -Dversion=time

即打出google play的beta包,使用时间作为版本号

debug与release签名

ant auto-debug

即使用debug签名打包(路径~/.android/debug.keystore),请参考http://developer.android.com/tools/publishing/app-signing.html#debugmode

ant auto-release

即使用release签名打包,请下载本项目中的ant.properties,修改其中的路径、密码等等,参考http://developer.android.com/tools/building/building-cmdline.html#ReleaseMode

antdemo's People

Contributors

bluelighta avatar sinkcup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

antdemo's Issues

运行不起求帮助

直接运行 ant auto-release会出错,然后<exec dir="${auto.project.tmp.dir}" executable=“配置自己的ant程序路径”,修改了之后显示success了,但是没看到打好的包生成在哪里呢?谢谢。

持续集成:每天定时打包、发送邮件

团队开发时,需要 定时打包开发版(或者一旦git提交就打包)、发送邮件给大家下载升级。

后续功能:自动上传到自动更新服务(比如友盟自动更新组件),大家OTA升级即可,无需发邮件下载了。

不过友盟的自动更新组件没有API,只能人工网页上传,很不方便。待调研其他服务商是否有自动更新服务。

AIDL

你好,我尝试使用你的脚本去修改包名,当执行:
ant auto-release -Dpackage=com.example.ant.beta时,出现aidl文件错误,这个怎么改?

异常了,请教什么原因?

ant auto-release -DUMENG_CHANNEL=smartisanAppStore

BUILD FAILED
D:\AntDemo\custom_rules.xml:13: The following error occurred while executing thi
s line:
D:\AntDemo\custom_rules.xml:66: Execute failed: java.io.IOException: Cannot run
program "ant" (in directory "D:\AntDemoTmp"): CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav
a13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)

忽略build.xml等文件

自定义的ant任务应该写在 custom_rules.xml 中,而不应该修改build.xml,应使用命令自动生成,比如:

android update project -p . -s -t "android-19"

所以.gitignore忽略build.xml。由于上面的命令太长太难记,所以开发了Makefile,在项目目录中执行这个即可:

make

依赖lib项目时,自动对lib进行配置,从而实现自动打包

如果项目依赖了lib项目,那些lib项目里可能没有build.xml,或者build.xml是老版本的,会导致打包失败。

需要到每个项目里去手动执行 android update project xxx,如果依赖了10个lib,这就是体力活啊……

DRY是可耻的,所以要开发此功能。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.