Mac下命令行下载android源代码并构建apk过程
前提是java 、sdk、ndk 、cmake、gradle 、gradlew都已经安装和配置好。
1、下载源码:
git clone http://git-ma.xxxx.com.cn/xxxx/xxxxx-ANDROID.git
2、改实际项目有用android 的small框架,框架文件夹放在master分支上。要编译的develop 分支没有这个文件夹。需要下载下
git submodule update --init --recursive
3、进入android项目目录
./gradlew cleanLib

./gradlew buildLib
执行这个命令时提示:
What went wrong:
A problem occurred configuring project ':lib.background'.
> java.io.FileNotFoundException: /Users/xxx/AndroidStudioProjects/xxxx-ANDROID/xxxx/local.properties (No such file or directory)
就手动在项目根目录下创建一个local.properties 文件。并在文件中指定sdk 和ndk位置。内容如下:
ndk.dir=/Users/xxxx/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/xxxx/Library/Android/sdk
执行结果如下:

./gradlew cleanBundle 执行结果如下

./gradlew buildBundle

- 执行命令打包 ./gradlew :app:build

查看打包好的apk

整个放在可以放在可执行的shell脚本如下:
git clone http://git-xxx.xxx.xxx.cn/xxxxx/projectname-ANDROID.git;
#进入git下载的文件夹
cd projectname-ANDROID;
#获取么子模块
git submodule update --init --recursive;
#进入项目目录
cd projectname;
#新建一个local.properties 保存自己本地ndk 和sdk文件夹
touch local.properties
echo "ndk.dir=/Users/xxxxxx/workdirectory/env/android-sdk-macosx/ndk-bundle" >> local.properties
echo "sdk.dir=/Users/xxxxxx/workdirectory/env/android-sdk-macosx" >> local.properties
date;
./gradlew cleanLib -q ;
./gradlew buildLib -q ;
./gradlew cleanBundle -q;
./gradlew buildBundle -q;
# -x test -x lint 不进行单元测试
./gradlew :app:build -x test -x lint -q; #唤醒休眠手机
adb shell input keyevent #卸载apk 前提是apk已经安装
uninstall_result=`adb uninstall com.xxx.xxx`
echo "uninstall result: "$uninstall_result;
if [[ $uninstall_result == *_FAILED_* ]]
then
echo "卸载apk不成功"
cp usyfusfjsdf ksfsdkfsdf
else
echo "卸载apk成功"
fi #安装apk
install_result=`adb install ${WORKSPACE}/xxxx-ANDROID/xxxx/app/build/outputs/apk/app-release.apk`
echo "install result: "$install_result;
if [[ $install_result == *_FAILED_* ]]
then
echo "安装apk不成功"
cp usyfusfjsdf ksfsdkfsdf
else
echo "安装apk成功"
fi
Mac下命令行下载android源代码并构建apk过程的更多相关文章
- linux/mac下命令行rm回收站--rmtrash
Linux.mac的命令行下没有回收站功能,很多时候手一抖就把重要文件给 rm -fr * 了,虽然linux下有可能通过lost +found/debugfs找回,但难度也比较大,不能保证一定能够找 ...
- 在Mac OS X中下载Android源代码的一些经验
首先说明.随着最近(2014年6月開始)GFW的升级.这个站点:http://www.android.com/ 已经不能正常訪问了,以下的这些操作均是在我连接VPN的时候进行的. 首先,须要做一些准备 ...
- Mac下命令行tree生成文件树
不像Windows,Mac环境本身是没有tree命令的,但可以后天呐~ 1.下载文件包并将其放在系统目录下(本人存放路径为/Users/) https://homebrew.bintray.com/b ...
- Mac下命令行中用sublime打开指定文件 设置方法
sublime2版本 官网提供的方法:sublime2 官网提供的方法是:ln -s "/Applications/Sublime Text 2.app/Contents/SharedSup ...
- Mac下命令行批量重命名
日常中碰到需要批量修改文件名怎么办?嗯,来终端先 案例:将Users/case目录下所有html文件修改为php文件 步骤: 1.进入目标文件夹 $ cd Users/case 2.执行以下命令 $ ...
- mac下命令行安装node.js及切换不同版本nodejs
摘自: http://www.cnblogs.com/ikuyka/p/5825762.html 前提是你电脑里已经装了node.js然后才能采用以下命令(以下代码最好不要同时运行) sudo n - ...
- Mac 下用 go 开发Android应用环境设置
需要的工具 设置代理 请参考:http://www.cnblogs.com/ghj1976/p/5087049.html Mac 下命令行设置代理: export http_proxy=http:// ...
- Linux学习心得之 Linux下命令行Android开发环境的搭建
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...
- Linux下十大命令行下载工具
Wget 这是最有名的工具,可用于通过CLI下载.这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个 ...
随机推荐
- Zabbix-Agent在主动模式启动服务后,提示no active checks on server [139.219.xx.xx:10051]: host [139.219.xx.xx] not found
一.解决方法
- 什么是Session分布式共享
在了解session分布式共享之前先来了解Session.Redis和Nginx的相关知识. 一.Session相关知识 1.Session 介绍 Session在网络应用中,称为“会话控制”. 每个 ...
- 利用 pywin32 操作 excel
from win32com.client import Dispatch import win32com.client import time # 获取excel 对象 excel = win32co ...
- cache-control 缓存
1.服务端设置 2. 3.所以一般设置css/js等静态文件加一个md5码. 4.优先级问题 如果服务器端同时设置了Etag和Expires 时,Etag原理同样,即与Last-Modified/Et ...
- SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis
一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...
- JNI 引用问题梳理(转)
局部引用: JNI 函数内部创建的 jobject 对象及其子类( jclass . jstring . jarray 等) 对象都是局部引用,它们在 JNI 函数返回后无效: 一般情况下,我们应该依 ...
- Knockout JS 增加、去除、修改绑定
Knockuot js 似乎只考虑过怎么绑定(ko.applyBindings()),却没考虑过怎么去除绑定,当修改了DOM内容,需要重新绑定时,发现似乎无能为力. 一.解决办法 这里有一个重新绑定的 ...
- Javascript调试利器console的使用
一.Console API Console.assert() 判断第一个参数是否为真,false的话抛出异常并且在console输出相应信息. Console.count() 以参数为标识记录调用的次 ...
- Dockerfile 构建前端node应用cnpm命令启动nodejs服务
cat Dockerfile.node FROM centos MAINTAINER zha*****ch.cn ENV LANG en_US.UTF-8 RUN /bin/cp /usr/share ...
- 有可能挑战Java优势的四种技术
2012-02-22 Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注.但是和所有语言一样,Java将来也会褪色.依据我做的超越Java的研究,一个 ...