如何建立与 Android studio和studio gradle 更新android 库

Android项目中如何用好构建神器Gradle?
发表于 10:36|
作者贾吉鑫
摘要:本文作者贾吉鑫为大众点评Android工程师,在进行团队并行开发时,分库遇到的问题很多都要通过Gradle脚本解决。Gradle虽为构建神器,但学习曲线比较陡峭,要想在Android项目中用好Gradle必须要做到三点。
Android Gradle实战
下面讲讲在Android Gradle实战中遇到的一些问题和经验,感觉还是蛮多干货的。
productFlavors
这个东西基本上已经烂大街了,gradle的项目一般都会使用Product Flavor,看完美团的文章,你应该就懂了。
buildTypes
很多App有内测版和正式版,怎么让他们同时安装在一个手机上?同时安装在一个手机上,要求packageName不同的,用productFlavors可以解决,但可能不够优雅,alpha版本还要来个debug和release版本岂不是很蛋疼?可以用buildTypes来解决,淘宝资深架构师朱鸿的有比较详细的讲解,但有些内容可能有些过时了,需要更改脚本。
项目依赖的远程包如果有更新,会有提醒或者自动更新吗? 不会的,需要你手动设置changing标记为true,这样gradle会每24小时检查更新,通过更改resolutionStrategy可以修改检查周期。
configurations.all {
// check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
之前上传aar同一版本到maven仓库,但依赖却没有更新,该怎么办呢?可以直接删除本地缓存,缓存在~/.gradle/caches目录下,删除缓存后,下次运行就会自动重新下载远程依赖了。
上传aar到Maven仓库
在工程的build.gradle中添加如下脚本:
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = GROUP_ID
pom.artifactId = ARTIFACT_ID
pom.version = VERSION
repository(url: RELEASE_REPOSITORY_URL) {
authentication(userName: USERNAME, password: PASSWORD)
在build.gradle同目录下添加gradle.properties文件,配置如下:
GROUP_ID=dianping.android.nova.thirdparty
ARTIFACT_ID=zxing
VERSION=1.0
RELEASE_REPOSITORY_URL=/nova
USERNAME=hello
PASSWORD=hello
gradle.properties的属性会被build.gradle读取用来上传aar,最后执行./gradlew :Zxing:uploadArchives即可。
更多配置,可参考。
项目构建过程中那么多任务,有些test相关的任务可能根本不需要,可以直接关掉,在build.gradle中加入如下脚本:
tasks.whenTaskAdded { task -&
if (task.name.contains('AndroidTest')) {
task.enabled = false
tasks会获取当前project中所有的task,enabled属性控制任务开关,whenTaskAdded后面的闭包会在gradle配置阶段完成。
任务可以取消了,但还不尽兴啊,想加入任务怎么搞?前面讲了dependsOn的方法,那就拿过来用啊,但是原有任务的依赖关系你又不是很清楚,甚至任务名称都不知道,怎么搞?
比如我想在执行dex打包之前,加入一个hello任务,可以这么写:
afterEvaluate {
android.applicationVariants.each { variant -&
def dx = tasks.findByName("dex${variant.name.capitalize()}")
def hello = "hello${variant.name.capitalize()}"
task(hello) && {
println "hello"
tasks.findByName(hello).dependsOn dx.taskDependencies.getDependencies(dx)
dx.dependsOn tasks.findByName(hello)
afterEvaluate是什么鸟?你可以理解为在配置阶段要结束,项目评估完会走到这一步。
variant呢?variant = productFlavors+ buildTypes,所以dex打包的任务可能就是dexCommonDebug。
你怎么知道dex任务的具体名称?Android Studio中的Gradle Console在执行gradle任务的时候会有输出,可以仔细观察一下。
hello任务定义的这么复杂干啥?我直接就叫hello不行吗?不行,each就是遍历variants,如果每个都叫hello,多个variant都一样,岂不是傻傻分不清楚,加上variant的name做后缀,才有任务的区分。
关键来了,dx.taskDependencies.getDependencies(dx)会获取dx任务的所有依赖,让hello任务依赖dx任务的所有依赖,再让dx任务依赖hello任务,这样就可以加入某个任务到构建流程了,是不是感觉非常灵活。
我突然想到,用doFirst的方式加入一个action到dx任务中,应该也可以达到上面效果。
gradle加速
gradle加速可以看看这位朋友写的,我就不多嘴了。并行编译,常驻内存,还有离线模式这些思路对gradle的加速感觉还是比较有限。
想要更快,可以尝试下Facebook出品的,可以看一下Vine团队适配Buck的,我们的架构师也有适配Buck,加速效果在10倍左右,但有两个缺点,不支持Windows系统,不支持远程依赖。
你想知道每个执行任务的运行时间吗?你想知道每个执行任务都是干嘛的吗?把下面这段脚本加入build.gradle中即可:
class TimingsListener implements TaskExecutionListener, BuildListener {
private Clock clock
private timings = []
void beforeExecute(Task task) {
clock = new org.gradle.util.Clock()
void afterExecute(Task task, TaskState taskState) {
def ms = clock.timeInMs
timings.add([ms, task.path])
task.project.logger.warn "${task.path} took ${ms}ms"
void buildFinished(BuildResult result) {
println "Task timings:"
for (timing in timings) {
if (timing[0] &= 50) {
printf "%7sms
%s\n", timing
void buildStarted(Gradle gradle) {}
void projectsEvaluated(Gradle gradle) {}
void projectsLoaded(Gradle gradle) {}
void settingsEvaluated(Settings settings) {}
gradle.addListener new TimingsListener()
上面是对每个任务计时的一个例子,想要了解每个任务的作用,你可以修改上面的脚本,打印出每个任务的inputs和outputs。比如assembleDebug那么多依赖任务,每个都是干什么的,一会compile,一会generate,有什么区别?看到每个task的输入输出,就可以大体看出它的作用。如果对assemble的每个任务监听,你会发现改一行代码build的时间主要花费在了dex上,buck牛逼的地方就是对这个地方进行了优化,大大减少了增量编译运行的时间。
buildscript方法
Android项目中,根工程默认的build.gradle应该是这样的:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
allprojects {
repositories {
一会一个jcenter()这是在干什么?buildscript方法的作用是配置脚本的依赖,而我们平常用的compile是配置project的依赖。repositories的意思就是需要包的时候到哥这里来找,然后你以为com.android.tools.build:gradle:1.2.3会从jcenter那里下载了是吧,图样图森破,不信加入下面这段脚本看看输出:
buildscript {
repositories {
repositories.each {
println it.getUrl()
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
结果是这样的:file:/Applications/Android%20Studio.app/Contents/gradle/m2repository/ /
我靠,仓库竟然直接在Android Studio应用内部,所以说你去掉buildscript的jcenter()完全没有关系啊,下面还有更爽的,我们知道有依赖传递,上面classpath
中的gradle依赖gradle-core,gradle-core依赖lint,lint依赖lint-checks,lint-checks最后依赖到了asm,并且这个根目录中的依赖配置会传到所有工程的配置文件,所以如果你要引用asm相关的类,不用设置classpath,直接import就可以了。你怎么知道前面的依赖关系的?看上面m2repository目录中对应的pom文件就可以了。
为什么讲到ASM呢?又是个比较刁的东西,可以直接用来操纵Java字节码,达到动态更改class文件的效果。可以用ASM,达到解耦效果。中提到的class依赖分析和R常量替换的脚本都可以用ASM来搞。
脚本写多了,都挤在一个build.gradle里也不好,人长大了总要自己出去住,那可以把部分脚本抽出去吗?当然可以,新建一个other.gradle把脚本抽离,然后在build.gradle中添加apply from 'other.gradle'即可,抽出去以后你会发现本来可以直接import的asm包找不到了,怎么回事?根工程中配置的buildscript会传递到所有工程,但只会传到build.gradle脚本中,其他脚本可不管,所以你要在other.gradle中重新配置buildscript,并且other.gradle中的repositories不再包含m2repository目录,自己配置jcenter()又会导致依赖重新下载到~/.gradle/caches目录。如果不想额外下载,也可以在other.gradle中这么搞:
buildscript {
repositories {
url rootProject.buildscript.repositories[0].getUrl()
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
获取AndroidManifest文件
提到,gradle中的applicationid用来区分应用,manifest中packageName用来指定R文件包名,并且各个productFlavor
的manifest中的packageName应该一致。applicationid只是gradle脚本中的定义,其实最后生成的apk中的manifest文件的packageName还是会被applicationid替换掉。
那获取R文件的包名怎么搞?要获取AndroidManifest中package属性,并且这个manifest要是起始的文件,因为最终文件中的package属性会被applicationid冲掉,由于各个manifest中的package属性一样,并且非主manifest可以没有package属性,所以只有获取主manifest的package属性才是最准确的。
def manifestFile = android.sourceSets.main.manifest.srcFile
def packageName = new XmlParser().parse(manifestFile).attribute('package')
无用的资源就不要打包进APK了。
之前在创业公司,用
做持续继承,遇到一个让我很纠结的问题。在Travis上执行构建脚本如下:
./gradlew clean
./gradlew assembleXR
最后生成的APK在运行的时候报错,提示找不到某个.so文件,解压发现APK中果然缺少某个库工程的.so文件,但在本地运行的时候却是没有问题,纠结了好久,后来研究发现Android
Studio中执行Clean Project的时候,会执行generateSources的任务,把它加入构建脚本后才打包正确。最近发现,这原来是个,并且已经在android gradle1.3被修复了。
匆匆忙忙间,写了很多东西。读完此文,希望你能感受到构建神器的魅力,感受到它的灵活强大,当然也希望能让你使用Gradle更加得心应手。作者简介:贾吉鑫(),大众点评Android工程师,开发经验丰富,乌云白帽子,关注网络安全,个人博客:。
将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技术专场:平台与技术iOS、平台与技术Android、产品与设计、游戏开发、企业移动化。此外,大会更是首次举办国内极具权威影响力的IoT技术峰会,特设硬件开发技术与虚拟现实两大专场。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。
第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。&
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章Android&Studio&之&Gradle与Project&Structure详解
启动Project
Structure的时候可以Structure看到分两个区域
一个是项目的总体设置区域.还有一个是对Module的分别设置.
一.项目总体设置
SDK Location中可以设置SDK和JDK路径.
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static15..cn/middle/002c3O01zy6OG9qDQ5gde&690" BORDER="0" ALT="" NAME=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Project中可以设置Gradle与Android工具的信息
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static12..cn/middle/002c3O01zy6OG9qvisj2b&690" BORDER="0" ALT="NE2Y(O}FA3SR82A(GMF]S[G.jpg"
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
发觉有个字母打错了,不理了....
Gradle本身必须有一个仓库源,否则无法运行
什么是仓库源:仓库源就是Gralde对Android支持的一个仓库,对Android进行相应的配置,处理等信息.具体可以参考下面链接
默认的仓库源是jcenter.以前是mavenCentral.也可以填写自定义的地址.本地地址等.具体可以参考以下链接
相关的配置信息可以在项目空间的build.gradle文件查看.打开项目空间的build.gradle文件.可以看到这么一个代码段:
(如何找到这个文件请查看我的上一遍博客:)
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static14..cn/middle/002c3O01zy6OG9qNRJH5d&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
这里就显示该项目空间的仓库源是jcenter.修改上面的仓库源,这个代码也会跟着变化.
二.Modlue区域
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static15..cn/middle/002c3O01zy6OG9qCcLI8e&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Module一共包含五个选项卡
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/middle/002c3O01zy6OG9qFSXae4&690" BORDER="0" ALT="" STYLE="font-size: 10.5 line-height: 1.5;"
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
分别是:属性,签名,多渠道,构建类型,依赖包.
Properties属性
&#9642;Compile Sdk Version:Android的编译版本
&#9642;Build Tools Version: 构建工具版本
&#9642;Library Reposiory当前的Module的仓库源.
这里可以定义一个地址,一个本地路径,或者是jcenter()和mavenCentral().
填写任何一个仓库,AS会自动下载对应的仓库,如果你随便填写一个,会提示你无法连接到该仓库.我这这里填写了mavenCentral()
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static1..cn/middle/002c3O01zy6OG9qXQFW20&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
在打开对应的.Gradle配置文件
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static12..cn/middle/002c3O01zy6OG9r2Ixtcb&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
可以看到有被修改的标志了.点进去以后
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/middle/002c3O01zy6OG9qPawb5b&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
发觉这个文件自动添加了一个仓库源.名字就是mavenCentral(),然后最下面的状态栏显示正在下载mavenCentral()仓库.
注意:由于项目空间已经定义了仓库源,所以Module的build.gradle文件默认是没有仓库源的,通常情况下也不需要填写
Assets Pattern:打包时候要忽略的文件
这将影响所有使用aapt的task.
这里我填写一个siyehua.
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static13..cn/middle/002c3O01zy6OG9qT5LKec&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
在对应的文件中可以看到多了以下代码:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static4..cn/middle/002c3O01zy6OG9qUBEva3&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Incremental Dex:增长DEX
Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行
如果将它设置为ture,可以看到对应的文件中增加了如下代码
dexOptions
incremental
Source Compatibility:资源版本
Target Compatibility:目标版本
两个都选了1.7,可以看到增加了如下代码:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/middle/002c3O01zy6OG9qXnZ650&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Signing签名
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/middle/002c3O01zy6OG9rmCP557&690"
ALT="Android&Studio&之&Gradle与Project&Structure详解"
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
它们之间的关系是:
一个keystroe就是一个签名文件.打开它需要一个密码,就是keystore密码.Keystrore中可以存放多个key
Alias,每一个key alias有一个单独的密码.
Flavors(多样性,多渠道)
我们的应用经常需要多渠道打包.这个可以翻译为多渠道打包.
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static2..cn/middle/002c3O01zy6OG9reQcp71&690" NAME=""
ALT="Android&Studio&之&Gradle与Project&Structure详解"
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Name:Flaveor的名字
Version:向下兼容的SDK版本
Application Id:包名
Proguard File:混淆文件
混淆文件,去除无用文件,并优化代码
Signig Config:签名文件名.
签名的文件信息在前一个选项卡Signing中设置.在这里选择
Target Sdk Version:目标SDK版本
Test Instrumentation Runner:Test
Test Application Id:测试时的ID
关于Test的介绍请点击:
Version Code:Module版本
Version Name:Module版本名称
设置了以后可以看到这个渠道对应的信息
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/middle/002c3O01zy6OG9rlUQ0e0&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Build Types构建类型
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static1..cn/middle/002c3O01zy6OG9rx72wc0&690" BORDER="0" ALT="J~7%]_@LPMD57CUT2UY`ZKL.jpg"
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Name:Build Type名称
Debugable:是否可以调试
Jin Debuggable:是否可以调试JNI
Signing Config:签名信息
Renderscript Debuggale:是否使用RenderScript
Renderscript Optim Level:Rendescript版本.
RenderScript相关介绍
Minify Enabled:是否去除无用的资源
Pseudo Locales Enaled:是否支持本地化整理
关于本地化整理介绍
Proguard File:混淆,去重文件路径
Application Id Suffix:App id后缀
Version Name Suffix:版本名称后缀
Zip Align Enabled:是否支持Zip Align
关于ZipAlign介绍:
tesst_001设置好以后的对应属性:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static1..cn/middle/002c3O01zy6OG9sde1i40&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
Dependencies(依赖)
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static5..cn/middle/002c3O01zy6OG9slQHic4&690" BORDER="0" ALT="UY`V51)GKFBUEJJN~QA7YD9.jpg" NAME=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
在这里添加添加jar包,library等.
1.表示添加用系统的library,例如v7,v4包.
2.添加jar包(注意这个jar包必须在当前的Module)
3.添加一个Module(这个工程是AS A Libray)
添加以后,点击这个,会出现一下的选项.
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static9..cn/middle/002c3O01zy6OG9soFOo38&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
分表是编译,提供,导出APK时,测试编译时,调试,发布时.
这里选择release complie.在对应的build.gradle中显示
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://static11..cn/middle/002c3O01zy6OG9scuqSba&690" BORDER="0" ALT=""
TITLE="Android&Studio&之&Gradle与Project&Structure详解" />
看完了上面的所有信息,我们再来看看项目空间的build.gradle和其中的一个module的build.gradle文件的信息
项目空间build.gradle文件:
// Top-level build
file where you can add configuration options common to all
sub-projects/modules.
buildscript
repositories
dependencies
'com.android.tools.build:gradle:1.0.0'
// NOTE: Do not place
your applicati they belong
// in the individual
module build.gradle files
allprojects
repositories
module的build.gradle文件:
plugin: 'com.android.application'
signingConfigs
keyPassword
file('C:/Users/Administrator/Desktop/work/其他/tour.keystore')
storePassword
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig
applicationId
"com.siyehua.android_siyehua"
minSdkVersion
targetSdkVersion 21
versionCode
versionName
signingConfig
signingConfigs.test1
testApplicationId 'siyehua'
testInstrumentationRunner 'siyehua'
buildTypes
minifyEnabled
proguardFiles
getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
testbuild_001
debuggable
jniDebuggable
signingConfig
signingConfigs.test1
renderscriptDebuggable true
applicationIdSuffix '_10087'
versionNameSuffix '_10088'
minifyEnabled
pseudoLocalesEnabled true
zipAlignEnabled true
compileOptions
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
productFlavors
aaptOptions
dexOptions
incremental
dependencies
fileTree(dir: 'libs', include: ['*.jar'])
'com.android.support:appcompat-v7:21.0.2'
releaseCompile
files('libs/xmn_lpush_1.3.jar')
repositories
看完上面的的相信大家对Gradle,相应的配置,以及要怎么配置,在哪里配置.都有了一个大概的了解.
注意:直接修改gradle会直接修改对应的设置.
更多Gralde信息.比如说Flavors与Build Types之间有什么关系,对项目的构建会产生什么影响.
如何使用命令行配置等等问题
可以参考以下链接(这些链接也是我写这博文的参考基础.):
&#9312;Gradle翻译:在这里可以看到每个选项的作用是什么,翻译的非常好
&#9313;Gradle基础,学习之路大神最新教程
&#9314;Gralde官网
对应的部分使用翻译
&#9315;Gralde翻译以及使用
如有任何错误与不足,欢迎留言讨论.谢谢
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android Studio 2.0 for Windows
Android Studio includes all the tools you need to build apps for Android.
VERSION: 2.0.0.20
RELEASE DATE: APRIL 7, 2016
Android Studio 2.0 Download - From dl.Google
PlatformAndroid Studio packageSizeSHA-1 checksum
Includes Android SDK (recommended)
1166 MB ( bytes)
c556debf40de6b5d6f6d65d169a3
No Android SDK
264 MB ( bytes)
3e8c25bd7b7f3aa326f7b2a349c4d67c550d13ac
No Android SDK, no installer
280 MB ( bytes)
705c00f52b715d6a845c97979ced6f9b1b3f11c6
279 MB ( bytes)
0f3d53ac13738abc79e82207b20ed
278 MB ( bytes)
b668e9dd942b56fc67
If you do not need Android Studio, you can download the basic Android command line tools below.
PlatformSDK tools packageSizeSHA-1 checksum
144 MB ( bytes)
f9b59defea0b
No installer
190 MB ( bytes)
66b6ab22bf8cab19c0f3fef4eba49
98 MB ( bytes)
85a9cccb0b1f9e6f1ffcd
311 MB ( bytes)
725bb360f0f7d04eaccff5a2d57abddd
用户评价:&#160;&#160;/&#160;42
Android Studio 网盘下载
版本号WindowsMac OSXLinux
Android Studio 2.0 正式版
用户评价:&#160;&#160;/&#160;8
Posted by Jamal Eason, Product Manager, Android
Android Studio 2.0 is the fastest way to build high quality, performant apps for the Android platform, including phones and tablets, Android Auto, Android Wear, and Android TV. As the official IDE from Google, Android Studio includes everything you need to build an app, including a code editor, code analysis tools, emulators and more. This new and stable version of Android Studio has fast build speeds and a fast emulator with support for the latest Android version and Google Play Services.
Android Studio is built in coordination with the Android platform and supports all of the latest and greatest APIs. If you are developing for Android, you should be using Android Studio 2.0. It is available today as a easy download or update on the stable release channel.
Android Studio 2.0 includes the following new features that Android developer can use in their workflow :
Instant Run - For every developer who loves faster build speeds. Make changes and see them appear live in your running app. With many build/run accelerations ranging from VM hot swapping to warm swapping app resources, Instant Run will save you time every day.
Android Emulator - The new emulator runs ~3x faster than Android’s previous emulator, and with ADB enhancements you can now push apps and data 10x faster to the emulator than to a physical device. Like a physical device, the official Android emulator also includes Google Play Services built-in, so you can test out more API functionality. Finally, the new emulator has rich new features to manage calls, battery, network, GPS, and more.
Cloud Test Lab Integration - Write once, run anywhere. Improve the quality of your apps by quickly and easily testing on a wide range of physical Android devices in the Cloud Test Lab right from within Android Studio.
App Indexing Code Generation & Test - Help promote the visibility your app in Google Search for your users by adding auto-generated URLS with the App Indexing feature in Android Studio. With a few click you can add indexable URL links that you can test all within the IDE.
GPU Debugger Preview - For those of you developing OpenGL ES based games or apps, you can now see each frame and the GL state with the new GPU debugger. Uncover and diagnosis GL rendering issues by capturing and analyzing the GPU stream from your Android device.
IntelliJ 15 Update - Android Studio is built on the world class Intellij coding platform. Check out the latest Intellij features here.
Deeper Dive into the New Features
Instant Run
Today, mobile platforms are centered around speed and agility. And yet, building for mobile can sometimes feel clunky and slow. Instant Run in Android Studio is our solution to keep you in a fast and fluid development flow. The feature increases your developer productivity by accelerating your edit, build, run cycles. When you click on the Instant Run button (), Instant Run will analyze the changes you have made and determine how it can deploy your new code in the fastest way.
New Instant Run Buttons
用户评价:&#160;&#160;/&#160;437
Android Studio
版本号WindowsMac OSXLinux
2.0 preview4
2.0 preview
用户评价:&#160;&#160;/&#160;14
TensorFlow内建深度学习的扩展支持,不止于此——任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化(auto-differentiation)。通过灵活的Python接口,要在TensorFlow中表达想法也会很容易。
用户评价:&#160;&#160;/&#160;9
PingWest品玩从知情人士处获悉,Google 投资了出门问问(羽扇智,Mobvoi),中国本土一家主要研究基于深度学习的语音识别技术的初创公司。出门问问由两名前 Google 员工创立,融资总额 7500万美元,估值 3 亿美元。
该公司 2012 年 10 月获得红杉资本中国基金和真格基金数百万美元天使投资;2013 年 6 月完成数百万美元 A 轮融资,红杉资本中国基金投资;2014 年 2 月获 SIG 海纳亚洲、红杉资本中国基金千万美元 B 轮投资。
Google 参与该公司 C 轮融资,投资主体为 Google 本身,而非 Google Capital 或 Google Ventures。据已知情况,这是 Google 在 2011 年主体业务抽离之后,首次在中国大陆进行投资。
联合创始人李志飞宣布完成 C 轮融资
李志飞透露,出门问问接下来会利用本轮融资,在车载和机器人领域加大投入,并开始进行海外市场拓展和更大规模的人才招募计划。
更多文章...
使用教程持续更新
Android 开发工具箱
Android 开发利器
Android Studio
安卓相关交流群
Android 相关QQ群
2016高薪职位推荐
资深就该付出就该
Android Studio 视频演示
无内联框架

我要回帖

更多关于 studio更新gradle版本 的文章

 

随机推荐