[Android] 基于 Linux 命令行构建 Android 应用(二):命令行管理项目
创建 Android 项目
在命令行创建 Android 项目需要用到 android 工具(该工具由 Android SDK 提供,位于 <sdk>/tools/ 目录下。)。它能自动生成一个项目目录,其中包含若干默认应用程序文件,存案文件,配置文件和一个构建文件。
命令用法[1]:
$ android create project \
--target <target_ID> \
--name <your_project_name> \
--path path/to/your/project \
--activity <your_activity_name> \
--package <your_package_namespace>
● target: 构建目标。即应用程序适用的 Android 平台库(包括 add-on,例如 Google API)。使用 $ android list targets 命令查看所有可用目标及其 ID。
● name: 项目名称(可选)。如果提供该选项,name 值将用作构建结果 .apk 文件名。
● path: 项目路径。如果不存在,则将被自动创建。
● activity: 默认 Activity 类名。对应的类文件创建在 <path_to_your_project>/src/<your_package_namespace_path>/ 目录下。如未提供 name 值,那么 activity 值将作为构建结果 .apk 文件名。
● package: 包命名空间,与 Java 编程中的包规则相同。
项目新建完毕后,你就可以进行 Android 开发了。只要你愿意,你可以将项目目录移动到其他任何地方[2]。你也可以将 Android 项目选定为第三方库项目,但这样它只能提供给其他项目作为分享资源,而不能被安装到安卓设备上。
更新项目
当你更换了一个新的开发环境,你可以使用 $ android update project 命令来更新你的项目使其适应新环境。你也可以使用该命令来更新项目的构建目标(--target)和项目名称(--name)。 android 工具会自动升级或创建更新所需的文件。
命令用法:
$ android update project --name <project_name> --target <target_ID>
--path <path_to_your_project>
● target: 构建目标。
● path: 项目路径。
● name: 项目名称(可选,如果不想更新项目名称,可以忽略该选项。)
例如:
$ android update project --name MyApp --target 2 --path ./MyAppProject
引用库文件
如果要引用第三方库,你只要在项目的构建属性中添加第三方库索引即可。
命令用法:
$ android update project \
--target <target_ID> \
--path path/to/your/project
--library path/to/library_projectA
以上命令通过更新构建属性来包含第三方库。它做的事情其实是在 project.properties 文件中添加了一条 android.library.reference.n 属性。
android.library.reference.1=path/to/library_projectA
如果你想添加多个第三方库,你可以按照它们之间相对优先级手动编辑 project.properties 文件,使用 .n 指数来表示各自的优先级。例如:
android.library.reference.1=path/to/library_projectA
android.library.reference.2=path/to/library_projectB
android.library.reference.3=path/to/library_projectC
或者你想要将 library_projectC 设置为最高优先级:
android.library.reference.2=path/to/library_projectA
android.library.reference.3=path/to/library_projectB
android.library.reference.1=path/to/library_projectC
其中 .n 指数是从 1 开始的连续自然数,如果中间出现断隔,之后的引用将都被忽略。
在构建时,这些第三方库按照优先级从低到高逐个与应用程序合并。第三方库不能自己和别的库进行引用合并,在它们被合并到应用程序之前,它们彼此是隔离的。
注:
[1] 如不想每次都进入 Android SDK 目录来运行 android 命令,可以将 SDK 中的 platform-tools/ 和 tools/ 两个目录添加到环境变量 PATH 中。
[2] 尽量不要随意更改项目路径,因为这会破坏 local.properties 中的 SDK 路径属性。如果你更改了项目路径,请使用 $ android update project 命令来更新项目的 SDK 位置。
附:
1. [Android Developer] Managing Projects from the Command Line
[Android] 基于 Linux 命令行构建 Android 应用(二):命令行管理项目的更多相关文章
- [Android] 基于 Linux 命令行构建 Android 应用(七):自动化构建
本章将演示如何基于 Linux 命令行构建 Android 应用,在开始本章之前,希望你已经阅读之前几章内容. 本文环境为 RHEL Sandiego 32-bits,要基于 Linux CLI 构建 ...
- [Android] 基于 Linux 命令行构建 Android 应用(四):命令行构建
谷歌提供的 Android SDK 支持 Ant 自动构建[1],你可以使用调试和发行两种模式进行构建,两种模式不同之处在于调试模式 Ant 会调用内置的调试密钥,而发行模式调用你提供的私钥. 首先安 ...
- [Android] 基于 Linux 命令行构建 Android 应用(五):Ant 构建命令
Android SDK 提供的 android 工具可以在项目根目录自动生成 Ant 构建文件 build.xml[1].进入项目根目录后,你可以使用以下 Ant 命令[2]. ant clean 清 ...
- [Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目
关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...
- [Android] 基于 Linux 命令行构建 Android 应用(六):Android 应用签名
Android 要求所有应用在安装前必须使用证书进行数字签名.Android 使用该证书来确定一个应用以及其作者身份,该证书不要求由证书发行机构颁发,因此 Android 应用经常使用自我签名的证书, ...
- [Android] 基于 Linux 命令行构建 Android 应用(三):构建流程
Android 应用的构建过程就是将 Android 项目中的文件和资源进行编译和打包,最后将结果输出到 .apk 文件..apk 文件是保存二进制文件的容器,它包含了运行安卓应用所需的所有信息,例如 ...
- Android基于mAppWidget实现手绘地图(二)--概要
离线地图是一张被切成类似瓷砖般格子图像组成,这些被切开的格子组织成多个缩放级别.缩放级别是从0开始.0这个缩放级别,地图图像的尺寸为1*1像素.在每下一个缩放级别,图像尺寸则会两倍递增. 每个地图都是 ...
- 【Linux】CentOS 学习笔记之二(命令)
打开文件夹: cd finename 创建目录:mkdir /filename mkdir -p /test/123/111 (多级目录) 删除目录: rmdir 删除目录或文件: r ...
- 八一八android与Linux的关系
Linux与Androld的关系 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序.下面我们就来分析一 ...
随机推荐
- 八幅漫画理解使用 JSON Web Token 设计单点登录系统
原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...
- iOS:针对固定数据源,更好的封装cell
一.介绍 在iOS开发中,tableView非常常用,能将其展示出来,它的数据源必不可少.当然数据源有动态下发的,有固定写死的,这里我只探讨固定写死的情况.对于死数据,我们在项目中经常遇到的场景就是我 ...
- 奇怪吸引子---NewtonLeipnik
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- yum install --downloadonly 下载依赖包到本地 但不安装
如果手动去一个个找依赖是很困难的,即便已经知道名字.版本,下面就依赖系统自带的命令完成该步骤 以java为例,其他安装包只要替换包名 yum install --downloadonly --down ...
- [C++] const与重载
下面的两个函数构成重载吗? void M(int a){} //(1) void M(const int a){} //(2) 下面的呢? void M(int& a){} //(3) voi ...
- SPLIT_STR
CREATE DEFINER=`root`@`%` FUNCTION `vir`.`SPLIT_STR`( x VARCHAR(1000), delim VARCHAR(12), pos INT) R ...
- 使用JavaCV播放视频、摄像头、人脸识别
一.导入Maven依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-pla ...
- Spark机器学习(10):ALS交替最小二乘算法
1. Alternating Least Square ALS(Alternating Least Square),交替最小二乘法.在机器学习中,特指使用最小二乘法的一种协同推荐算法.如下图所示,u表 ...
- Spring Boot 2.0 整合Thymeleaf 模板引擎
本节将和大家一起实战Spring Boot 2.0 和thymeleaf 模板引擎 1. 创建项目 2. 使用Spring Initlizr 快速创建Spring Boot 应用程序 3. 填写项目配 ...
- flash初步尝试
1.pip install flask 验证 from flask import Flask 2.pip install sqlalchemy 3. pip install flask-sqlal ...