Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)
目录
1 集成TFS系统....
1.1 概述....
1.2 安装TFS插件....
1.2.1 在线安装方式....
1.2.2 离线安装方案....
1.3 常见操作....
1.3.1 新建Git库....
1.3.2 在Android Studio上克隆代码库...
1.3.3 连接VSTS.
1.4 导入代码(TFS)....
1.4.1 导入到TFS.
1.4.2 导入到VSTS.
1.5 提交修改....
1.6 同步(推送)....
1.7 克隆代码库到本地...
2 持续集成....
2.1 安装代理服务器....
2.2 配置和运行生成定义....
3 常见问题....
3.1 运行出现“Please select android SDK”
3.2 无法通过用户认证....
3.3 无法下载中文团队项目集合中的Git库..
3.4 打开代码库的速度特别慢...
3.5 Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager
1 集成TFS系统
1.1 概述
Android Studio是安卓应用程序开发的官方集成开发工具(IDE),它是基于IntelliJ IDEA的一个开发软件。我们可以从安卓的官方网站找到更多关于它的资料:http://developer.android.com/tools/studio/index.html 。
TFS是微软的DevOps解决方案,实现了包括需求管理、编码开发、测试、持续集成和发布等全流程的研发管理,并支持主流开发工具和开发语言的技术支持。为了在Android Studio中实现软件研发管理,微软发了基于Android Studio的TFS插件https://github.com/Microsoft/vso-intellij/ 。这个插件允许您以无缝和直观的方式连接到Visual Studio团队服务(Git)和Team Foundation Server(TFS)上的Git存储库。你也可以使用这个插件来导入您的Android开发项目为VSTS或创建拉要求在VSTS / TFS Git仓库。你也可以使用这个插件创建和管理TFS服务器中的拉取请求。
下面我们来介绍在Android Studio中如何使用这个插件。
1.2 安装TFS插件
1.2.1 在线安装方式
可以通过浏览插件库,从Android Studio中在线安装VSTS插件。
1 在Android Studio中, 打开插件的设置窗口:
l Linux: from the File menu, select Settings... then Plugins
l Mac: from the Android Studio menu, select Preferences... then Plugins
l Windows: from the File menu, select Settings... then Plugins
2.点击Browse repositories... 按钮,并在搜索框中搜索"Visual Studio Team Services".
3.点击Install plugin 按钮,并重新启动Android Studio.
操作方式如下:
Figure 55 – 打开设置窗口
Figure 56 – 安装VSTS插件
1.2.2 离线安装方案
- 从Android Studio插件库(http://plugins.jetbrains.com/plugin/7981?pr=androidstudio)下载插件
- 从本地安装:File > Settings > Plugins > Install plugin from disk…
Figure 57 – 从本地磁盘中安装VSTS插件
1.3 常见操作
1.3.1 新建Git库
使用Android Studio连接TFS服务器,首先需要在TFS服务器上新建代码库,上传一套已经存在的代码。(你也可以参考后面的操作导入一套代码,并新建一个Git代码库。)
Figure 58 – 在TFS服务器上新建代码库
Figure 59
1.3.2 在Android Studio上克隆代码库
Figure 60 – 从TFS服务器上下载/克隆代码到本地计算机
Figure 61 – 输入TFS服务器地址,并按要求输入账户、密码
Figure 62
(点击Clone以后,代码没有克隆到本地目录,也没有提示错误)
如果出现上面的错误,是由于目前的版本存在一个Bug,不能解决非Unicode编码的URL,我已经和微软产品组沟通确认,并有产品组创建了一个问题https://github.com/Microsoft/vso-intellij/issues/132 ,用于跟踪问题解决的进展。
目前解决的方案是尽量确保Git地址栏中没有中文字符,或者使用命令行方式克隆代码。
1.3.3 连接VSTS
连接VSTS的方式与TFS基本一致,需要我们已经注册了VSTS的账户。例如我使用自己的账户zhanghongjun@msn.com登录VSTS以后,插件会自动罗列我的Git代码库。
Figure 63
Figure 64 – 选择一个代码库,克隆代码到本地计算机
Figure 65
1.4 导入代码(TFS)
1.4.1 导入到TFS
在Android Studio中打开一个本地项目
Figure 66
Figure 67
Figure 68
Figure 69
1.4.2 导入到VSTS
Figure 70 - 后面的方法和TFS基本一致
1.5 提交修改
Figure 76
1.6 同步(推送)
Figure 77
Figure 78
1.7 克隆代码库到本地
Figure 80
Figure 81
2 持续集成
2.1 安装代理服务器
配置Android编译代理服务器,至少需要下面的环境:
1) Windows Server 2016(或其他支持TFS 2018的代理服务器的操作系统,例如Win 2012)
2) Java环境开发包(JDK)
3) 安卓开发包(ADK)
4) TFS代理服务器
下面是配置代理服务器的方法和步骤
1) 安装JAVA SDK
安装JDK的方法和其他开发工具的方法一样,从官方网站下载Windows 64位的压缩包:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 下载以后解压到代理服务器的相关目录中,例如:C:\java\jdk1.8.0_91
- 并配置环境变量 JAVA_HOME,值为:C:\java\jdk1.8.0_91
- 将路径% JAVA_HOME %\bin添加到环境变量PATH的值中
Figure 84 – 环境变量:JAVA_HOME、ANDROID_HOME
2) 安装Android SDK
- 从官方网站https://developer.android.com/studio/index.html 下载最新版本的Android SDK,并解压到代理服务器的相应目录中。
你也可以下载完整版本的Android Studio,其中包含了SDK。我在部署的过程中,由于需要在代理服务器上调试安卓代码,就采取了安装Android Studio的方式安装SDK。
- 配置环境变量ANDROID_HOME
例如路径:C:\Users\tfsadmin\AppData\Local\Android\Sdk
- 将下列路径添加到环境变量Path的值中:
n %ANDROID_HOME%\tools
n %ANDROID_HOME%\platform-tools
3) 安装TFS代理程序
- 从微软官方下载最新版本的代理程序
https://github.com/Microsoft/vso-agent
并将代理程序解压缩到代理服务器的任一目录中
- 在命令行窗口中配置代理程序
Configure.bat
4) 验证代理程序
代理程序安装成功后,我们可以在TFS服务器的管理界面中查询到代理服务器,也可以查询到代理服务器上Android SDK版本,如下图:
Figure 85 – TFS管理界面中的代理
2.2 配置和运行生成定义
在配置生产定义之前,首先需要简单理解一下Gradle(https://gradle.org/)这个编译工具。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。在功能上,Gradle与常见的ant、maven、msbuild等比较相似,为用户提供非常强大的编译功能。
Android Studio原生配置了Gradle编译工具,创建项目时,开发工具会自动创建Gradle需要的配置文件和编译脚本;在开发过程中,也会根据软件功能的变化自动修改Gradle编译脚本。
TFS 2018中自带了Gradle的编译模板,可以为Android软件快速创建编译工作流程。下面我们来介绍如何在TFS 2018中创为Android代码创建Gradle生成定义:
Figure 87 – 新建生成定义
Figure 88 – 选择系统提供的Gradle生产模板
Figure 89 – 选择生产代理所在的代理队列
Figure 90 – 由于我需要输出的文件是app安装文件APK,将默认的jar修改为apk,生成流程会自动将输出的文件发布到生产结果中
在我的测试中,生产过程中没有其他任务需要执行,就可以保留目前的默认设置,点击“保存并排队”,TFS就会启动刚才定义的生成流程,如下图:
Figure 91 – 保存并排队
第一次启动生成流程,由于编译过程中需要根据项目的配置要求获取所需的Gradle版本,我们必须确保代理服务器处于联网状态。例如我的实验代码需要Gradle 4.1版本(如下图)。
Figure 92
如果代理服务器不能联网,需要我们手工下载对应的Gradle版本,并将其复制到代理服务账户所在的.Gradle目录中,例如我使用tfsservice启动代理服务,则需要将gradle-4-1-all.zip文件下载并复制到这个目录中(C:\Users\tfsservice\.gradle\wrapper\dists\gradle-4.1-all)。注意,不需要解压缩文件。
当所需的Gradle版本下载完成以后,TFS会自动运行生成脚本,并完成后续的编译任务,例如我的生产定义中的复制、发布等任务,如下图:
Figure 93 – 生产过程中的实时记录
生成成功后,我们就可以在生产结果中,点击“项目”,查看到生成输出的APK文件,如下图:
Figure 94 – 生成的输出文件
3 常见问题
3.1 运行出现“Please select android SDK”
由于重新从服务器上克隆的代码库,修改了本地代码库的路径,出现上面的错误。
解决方法参考下面的连接:
https://stackoverflow.com/questions/34353220/android-studio-please-select-android-sdk
Tools -> Android -> Sync Project with Gradle Files (Android Studio 3.0.1)
3.2 无法通过用户认证
安装IIS的基本认证功能,并在IIS中为team foundation server/tfs启用基本认证功能。
3.3 无法下载中文团队项目集合中的Git库
当Git服务器的URL中包含非Unicode的编码字符时,将TFS插件导致TFS插件克隆或者导入失败。已经向微软产品组反馈,并确认为缺陷,在开发网站中创建了用于跟踪问题的Bug https://github.com/Microsoft/vso-intellij/issues/132 。
3.4 打开代码库的速度特别慢
TFS服务器运行在虚拟机中,从物理机访问代码库特别慢。
解决办法:断开物理机连接其他网络的网卡。
3.5 Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
需要在命令行模式下接受授权
微软ALM MVP 张洪君 http://www.cnblogs.com/danzhang
--End--
-
Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)的更多相关文章
- Android Studio && GitHub 团队多人一起开发
曾几何时,花了两天的时间搞了合并项目,搞得乱七八糟der,但最终还是被我搞定了,too 乱 to 做笔记.过了几个月,也就是前几天,抱着从头开始的决心,再次尝试,然鹅并没有结果.今天,再一次重新开始, ...
- 使用 Jenkins 实现软件开发的持续集成
转自:http://www.ibm.com/developerworks/cn/java/j-lo-jenkinsintegrate/ Jenkins 是一种易于使用的持续集成系统,它可以使开发者从繁 ...
- Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
最近在尝试HTML5移动平台下的开发 由于安卓的方便性,首先开始了安卓的试验 现在安卓下的开发工具首选 Android Studio (写这文章的时候,是0.4) 而跨平台的HTML5 App比较出名 ...
- 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
最近开始转战安卓,准备把我在苹果上的应用也在安卓上来一波,其中就遇到一个问题就是最牛天气(iOS和微信小程序都已经有了,就差安卓的了)引用的百度的定位功能,需要填写发布版SHA1和开发版SHA1,作为 ...
- Android Studio使用JNI和NDK进行开发
想要学习一下在Android Studio中进行JNI的开发,文章挺多的,但是几乎没有一个完整的说明的,中间总是有一两步漏掉.分享技术就应该完整的让读者学会,藏着掖着不是君子所为.对于那些故意含糊过去 ...
- 使用Android Studio和Genymotion模拟器搭建Andriod开发环境
一.Android Studio下载 1.打开http://www.android.com/ 2.依照下图步骤打开下载页面 a.在页脚部分点击“App Developer Resources” b.点 ...
- 在Android Studio上进行OpenCV 3.1开发环境配置
开发环境: Windows 7 x 64 家庭版 Android Studio 1.5.1(Gradle版本2.8) JDK 1.8.0 Android 6.0(API 23) OpenCV 3.1. ...
- 用android studio创建第一个安卓程序加载html5 页面
前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...
- 使用Android Studio 1.3 版本号进行NDK开发
众所周知Android Studio 1.3 版本号新增了NDK支持,能够非常方便的在上面开发C++或者C代码了,但是预览版功能不是非常完好,须要非常多步骤,另一些奇怪的BUG,整了半天最终能够使用A ...
随机推荐
- oracle存储过程-获取错误信息
dbms_output.put_line('code:' || sqlcode); dbms_output.put_line('errm:' || sqlerrm); dbms_output.put_ ...
- hdoj1087 (DP--LIS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 思路:这题很简单了,纯LIS的解法,没有一点变形,由于数据小,使用O(n^2)LIS解法就足够了 ...
- 各种语言使用HTTP Request
1. JAVA String requestContent = "{"id":"1","sort":"des" ...
- JavaScript的数据类型和运算符总结
1.定义变量用关键字 var var a = 1 var b = "abc" 2.javascript脚本每一行要用分号隔开 3.javascript的代码一般放在html代码的最 ...
- tortoise svn 请求的名称有效,但是找不到请求的类型的数据
可能是博客园出bug了,现在无法放图,间断重复刷新十多次依然如故,弃之 这个问题是在安装完svn服务器(visual svn)后复制url,tortoise svn import 粘贴url后 出现的 ...
- phpcms中调用外部网站数据
1.在phpcms后台模块->模块管理->数据源->外部数据源 中 添加外部数据源 2.在phpcms前台模板中,使用get标签获取数据源中数据. {pc:get sql=" ...
- Codeforces 703B. Mishka and trip 模拟
B. Mishka and trip time limit per test:1 second memory limit per test:256 megabytes input:standard i ...
- mysql 执行多线程临时方案
sqr::IDatabase *db=NULL;IDbConnection *conn = NULL;int main(int argc, char* argv[]) { db = GetDataba ...
- 用 npm 安装删除模块
npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录: [npm install -g xxx]利用npm安装全局模块xxx: 本地安装时将模块写入pac ...
- Vue.js 与 Laravel 分离
首先表示折腾了十来天的php-laravel框架和vue的结合开发又偏前端实在是太大的阻碍,首先laravel的机制就是写完路由router再加载blade模板的.如果要在laravel工程里面加载一 ...