Android shell

Android相关shell编程

1. 版本历史

时间 描述 版本号 修订人
0.01

2. 目标读者

  • 需要学习shell编程的人员

3. 文档目的

  • 简要介绍shell编程
  • 为android的ant打包与jenkins的持续构建奠定基础

4. 主要内容

4.1 shell基本语法

4.1.1 shell变量

variableName="value"

4.1.2 shell替换

#!/bin/bash

a=10
echo -e "Value of a is $a \n"

4.1.3 shell运算符

#!/bin/bash

val=`expr 2 + 2`
echo "Total value : $val"

4.1.4 shell echo命令

echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式:

echo arg

4.1.5 shell字符串

str='this is a string'
your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

4.1.6 shell数组

array_name=(value0 value1 value2 value3)

4.1.7 shell判断

if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if … else 语句:

if … fi 语句;

if … else … fi 语句;

if … elif … else … fi 语句。

4.1.7 shell for循环

for 变量 in 列表
do
    command1
    command2
    ...
    commandN
done

4.1.9 shell函数

function function_name () {
    list of commands
    [ return value ]
}

参考:shell简介

4.2 Android ant编译

4.2.1 配置ant环境

  • http://ant.apache.org下载ant压缩包
  • 本地配置环境变量

4.2.1 Ant 的运行

  • 命令行中切换到构建文件的目录,输入Ant命令就可以运行Ant.若没有指定任何参数,Ant会在当前目录下查询build.xml文件。如果找到了就用该文件作为构建文件。
  • 如果使用了 –find 选项,Ant 就会在上级目录中找构建文件,直至到达文件系统得跟目录。
  • 如果构建文件的名字不是build.xml ,则Ant运行的时候就可以使用 –buildfile file,这里file 指定了要使用的构建文件的名称

示例如下:

Ant 

说明了表示当前目录的构建文件为build.xml 运行 ant 执行默认的目标。

Ant –buildfile   test.xml 

使用当前目录下的test.xml 文件运行Ant ,执行默认的目标

4.2.3 build.xml文件的生成办法

  • 使用“android update project –path .”命令
  • 选择需要生成Build.xml文件的项目,右键. Export-> General -> Ant Buildfiles .
    点Next,选择项目,再点Finish.
  • 拷贝android sdk目录下build.xml文件进行修改

4.2.4 build.xml文件的标签含义

  • project 标签 每个构建文件对应一个项目。标签时构建文件的根标签。它可以有多个内在属性:

    (1) default表示默认的运行目标,这个属性是必须的。

    (2) basedir表示项目的基准目录。

    (3) name表示项目名。

    (4) description表示项目的描述。

    每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有自己的构建文件。

  • target 标签 一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。例如,有一个target用于编译程序,另一个target用于声称可执行文件。在生成可执行文件之前必须先编译该文件,因策可执行文件的target依赖于编译程序的target。Target的所有属性如下。

    (1).name表示标明,这个属性是必须的。

    (2).depends表示依赖的目标。

    (3)if表示仅当属性设置时才执行。

    (4)unless表示当属性没有设置时才执行。

    (5)description表示项目的描述。

    Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每个target。在执行之前,首先需要执行它所依赖的target。程序中的名为run的target的depends属性compile,而名为compile的target的depends属性是prepare,所以这几个target执行的顺序是prepare->compile->run。

    一个target只能被执行一次,即使有多个target依赖于它。如果没有if或unless属性,target总会被执行。

  • mkdir 标签 该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名,其代码如下:

    <mkdir dir=”${class.root}”/> 
    
  • jar 标签 该标签用来生成一个JAR文件,其属性如下。

    (1) destfile表示JAR文件名。

    (2) basedir表示被归档的文件名。

    (3) includes表示别归档的文件模式。

    (4) exchudes表示被排除的文件模式。

  • javac 标签 该标签用于编译一个或一组java文件,其属性如下。

    (1).srcdir表示源程序的目录。

    (2).destdir表示class文件的输出目录。

    (3).include表示被编译的文件的模式。

    (4).excludes表示被排除的文件的模式。

    (5).classpath表示所使用的类路径。

    (6).debug表示包含的调试信息。

    (7).optimize表示是否使用优化。

    (8).verbose 表示提供详细的输出信息。

    (9).fileonerror表示当碰到错误就自动停止。

  • java 标签 该标签用来执行编译生成的.class文件,其属性如下。

    (1).classname 表示将执行的类名。

    (2).jar表示包含该类的JAR文件名。

    (3).classpath所表示用到的类路径。

    (4).fork表示在一个新的虚拟机中运行该类。

    (5).failonerror表示当出现错误时自动停止。

    (6).output 表示输出文件。

    (7).append表示追加或者覆盖默认文件。

  • delete 标签 该标签用于删除一个文件或一组文件,去属性如下。

    (1)/file表示要删除的文件。

    (2).dir表示要删除的目录。

    (3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。

    (4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。

    (5).verbose表示指定是否列出所删除的文件,默认值为不列出。

参考内容:《build.xml解析》

5. 思考总结

  • 项目工程下的build.xml使用import操作将android sdk/tools/ant/build.xml导入,编译apk
  • 可自己写build.xml中打包apk的命令,参考:《android打包过程》

你可能感兴趣的:(Android)