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"

 以上命令可能做的不是很好,希望有兴趣的可以共同讨论下。

猜你喜欢

转载自zhangfortune.iteye.com/blog/1930743