android开发过程中我是怎么一步步让项目自动化起来的
我接触做android开发,可能用到的工具大概有这么几个,eclipse、 intellij、 android studio、WebStorm、 rubymine。后两者主要不是做native开发。当然新建项目的时候也有不同。一种是通过ide, 另外一种是通过命令行。我个人认为用命令行建立的project,因为这样做可以自动化起来。 下面来讲一讲,开发过程中我是怎么让项目自动化起来的。当然这些通过ide也可以很好的完成。
多说一点为什么不用ide,而是要自己写命令去执行。其实他和不用ide去创建project有一个共同的原因,你不知道这其中发生了什么。
1.做一个简单能够跑的同的自动化脚本
这个是在上一次的博客中有介绍。主要是将一些命令,做成shell脚本,集成到一个文件中,然后在build 和install的时候,只需要执行这个脚本就可以。我的是sh debug.sh 。具体的可以参考一下上次发的blog。 将jt生成的项目自动化work的脚本 。但是这个版本的脚本存在一个问题:每次变更项目的时候都得重新的设这package name 和apk name,这样做起来让我觉得很不爽,因为我本来就是一个比较懒的人,还要我去每次都修改。所以产生了第二个想法。从程序中读取这些变量。
2. 程序自动读取package name 和apk name
这个前前后后做了将近一周。不过蛮有意思的。当然在读取变量的时候可能有更好的办法。鉴于笔者对shell了解程度之浅,所以只好用这种笨的方法。需要说明的是,如果使用此脚本,需要做到一下几点:
a.此文件和AndroidManifest.xml在同一个目录下
b.启动activity 必须为MainActivity
c.MainActivity必须在项目名下(com.google.android),或者在项目名的activities文件夹下面
暂时想到就这些,发现了再补充。
另外这次为了更好的提示,在输出信息的时候加了一些颜色提示。比如正在处理的操作,出现错误的提示(红色)。还想加入的是提示声。但是没有找到合适的脚本所以放弃了。好啦,不多少,贴代码
#!/usr/bash #user fortunezhang #email [email protected] # 使用须知 #a.此文件和AndroidManifest.xml在同一个目录下 #b.启动activity 必须为MainActivity #c.MainActivity必须在项目名下(com.google.android),或者在项目名的activities文件夹下面 echo "\033[32;49;41m auto running\033[39;49;0m" #收集信息 #包名 line=`grep -r 'package=\"com' AndroidManifest.xml | head -1 ` s=${line#*\"}; package_name=${s%%\"*} #app名 eval grep 'android:name=\".activities.MainActivity\"' AndroidManifest.xml if [ $? -eq 0 ];then app_name="$package_name"".activities.MainActivity" else app_name="$package_name"".MainActivity" fi #apk名 apk_name=${package_name##*\.} debug_name="$apk_name""-debug.apk" #清楚 echo "\033[32;49;11m clean apk ... \033[39;49;0m" adb clean #卸载手机上已经存在的app,如果不需要卸载注释下面就可以了,前面加# echo "\033[32;49;1m uninstall apk ... \033[39;49;0m" (adb uninstall $package_name) #尝试debug,出现错误会显示红色字样 echo "\033[32;49;1m debug ... \033[39;49;0m" ant debug if [ $? -eq 1 ]; then echo "\033[32;49;31m failed \033[39;49;0m" return ; fi #安装到手机 echo "\033[32;49;1m debug success and ready to install apk \033[39;49;0m" adb install -r bin/$debug_name echo "\033[32;49;1m install success ready start it \033[39;49;0m" #启动app echo "\033[32;49;1m start activity \033[39;49;0m" adb shell am start -n $package_name/$app_name echo "\033[32;49;1m start activity success then see your phone \033[39;49;0m"
以上命令可能做的不是很好,希望有兴趣的可以共同讨论下。