本文译自Android官方技术文档《Migrating Gradle Projects to version 1.0.0》,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0。

本篇文档介绍的是低版本的Gradle项目怎么升级到1.0.0版本。

翻译不易,转载请注明CSDN博客上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42772727

翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的“顶”;如有错讹,敬请指正。谢谢。

迁移 Gradle 项目到1.0.0 版本

Android 的 Gradle 插件有了迅猛的发展,作为进化的特征,API 和构建文件的描述语言也经过了一些不兼容的更改。如果你正在试图加载用旧版本的 Gradle 插件构建的项目,它可能无法通过 1.0.0 版本正确构建。

本文档描述了大部分常见的变动,以帮助您迁移到 1.0.0。从1.0.0 及以后的版本起,我们将尽力不进行不兼容的更改。如果我们做到了,我们将打算编写 IDE 支持,以帮助自动迁移项目。

更新插件和 Gradle 版本号

构建系统知道要使用哪一个版本的 Gradle 插件,以及哪一个版本的 Gradle 。因为它们都在您的项目文件中显式列出。当您使用 Android Studio 1.0 并打开一个旧的项目时,它将主动提出自动查找和更新这些版本号。您也可以对这些版本号进行手动编辑。

Android Gradle 插件版本通常是在项目中顶级的build.gradle文件内列出,并可以更新为如下内容:

     dependencies {
-        classpath 'com.android.tools.build:gradle:0.8.+'
+        classpath 'com.android.tools.build:gradle:1.0.0'
     }

你的项目所用的 Gradle 版本还应该更新为2.2.1或更新的版本。你可以通过编辑gradle/wrapper/gradle-wrapper.properties文件来完成:
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip

再说,当你打开一个旧项目时Android Studio应该有提供自动执行此编辑:

从 0.9.x 迁移到 1.0.0

runProguard

对用户产生影响的最常见的问题是runProguard属性名称改为了minifyEnabled。如果您遇到以下这种构建错误
    Gradle DSL method not found: 'runProguard()'
那么这就是你构建错误的原因。

会突然出现很多这样的问题,是因为那个属性在 0.14.0 版本之前会被插入到由 Android Studio 创建的所有项目中。

如果要升级您的项目,请编辑您的 build.gradle 文件,如下所示:
         }
         release {
-            runProguard true
+            minifyEnabled true
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

在构建类型(build types)和product flavors中,还有其他一些属性也被重命名了。

类库项目中的 ApplicationId

你不能使用 applicationId 来自定义一个项目的包名。这个包名称必须在库项目里是固定的(并且在清单中以packageName指定)。在早些时候,Gradle 插件并不强制这个约束条件。

在 BuildTypes 中重命名的属性

runProguard => minifyEnabled
zipAlign => zipAlignEnabled
jniDebugBuild => jniDebuggable
renderscriptDebug => renderscriptDebuggable

在 ProductFlavors 中重命名的属性

flavorGroups => flavorDimensions
packageName => applicationId
testPackageName => testApplicationId
renderscriptSupportMode => renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled

其他名称更改

InstrumentTest was renamed to androidTest.

从 0.8.x 迁移到 0.9.x


Gradle 的 Android 插件(Gradle plugin for Android)的 0.9 版本统做了一些不兼容的更改,这些修改需要您的项目也进行更新。这一页文档介绍了如何更新您的项目。请注意这不是这个插件的 0.9 版本中的所作更改的完整列表;它只是涵盖需要了你的源文件需要进行更新的那些更改。有关这些修改的完整的列表,请参见. 用户指南


Instrumentation Tests
如果您在您的项目中已经有了instrumentation 测试 (或其他类型的测试),请注意我们把名称和文件夹从 instrumentation 测试改为了 android 测试,以反映出一个事实。这个事实是,这种功能不只是instrumentation测试,也包含着普通的 JUnit 测试(在一个设备上运行)和最终的 UI automator测试。

如果要更新您的项目
  • 将您的 instrumentTest 文件夹重命名为 androidTest,例如git
    mv app/src/instrumentTest app/src/androidTest。

    或者,你也可以通过重新设置你的 sourcesets 告诉 gradle 继续使用旧的文件夹。
  • 把所有的测试依赖从 instrumentTestCompile 更新为 androidTestCompile :

    dependencies {

    -    instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.3.1'

    +    androidTestCompile 'com.jayway.android.robotium:robotium-solo:4.3.1'

    }

库项目

用于库项目的 DSL 现在应用程序项目是一样的了。这意味着您可以创建更多的构建类型,和创建flavors。
  • 你可以在buildTypes { ... }容器里创建或配置更多的构建类型。
  • 您可以通过productFlavors { ... }容器创建
    product flavors。
  • 你可以通过signingConfigs { ... }容器创建
    signingConfigs。
例如,如果在你的库项目中有如下的配置:

android {
    debug {
    }
    release {
    }
    debugSigningConfig {
    }

}


你将要把它替换为:

android {
    buildTypes {
        debug {
        }
        release {
        }
    }

signingConfigs {

        debug {
        }

}

}

Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本的更多相关文章

  1. Android官方技术文档翻译——Gradle 插件用户指南(5)

    昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...

  2. Android官方技术文档翻译——Gradle 插件用户指南(4)

    最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...

  3. Android官方技术文档翻译——Gradle 插件用户指南(7)

    本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...

  4. Android官方技术文档翻译——Gradle 插件用户指南(6)

    没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...

  5. Android官方技术文档翻译——IntelliJ 项目迁移

    本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...

  6. Android官方技术文档翻译——Eclilpse项目迁移

    本文译自Android官方技术文档<Migrating From Eclipse Projects>,原文地址:http://tools.android.com/tech-docs/new ...

  7. Android官方技术文档翻译——Gradle 插件用户指南(1-3)

    不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...

  8. Android官方技术文档翻译——新构建系统概述

    本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...

  9. Android官方技术文档翻译——开发工具的构建概述

    本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...

随机推荐

  1. synchronized与条件同步

    在并发编程中,有这样的需求:当满足某个条件时线程执行同步块中的代码,条件不满足时,让线程在此等待,直至条件满足再执行同步代码块. java的Object类即提供了一类这样的方法wait(),notif ...

  2. Android开发过程中在sh,py,mk文件中添加log信息的方法

    Android开发过程中在sh,py,mk文件中添加log信息的方法 在sh文件中: echo "this is a log info" + $info 在py文件中: print ...

  3. [OpenCV]在显示窗口中截图

    [OpenCV]在显示窗口中截图 简介 介绍使用OpenCV实现简单的截图功能.首先阐述实现此功能的基本步骤,然后给出实现代码,最后贴出实验结果以及遇到的问题. 基本步骤 我们需要知道OpenCV使用 ...

  4. ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306

    ANT不完全总结   好久没有用Ant了,最近让MyEclipse.JBuilder2008逼的重回Ant上了.手生了,写了一个脚本后,重新总结下.参考了官方的文档和网上一些资料.   一.ANT的介 ...

  5. Tomcat如何实现WebSocket

    WebSocket协议属于HTML5标准,越来越多浏览器已经原生支持WebSocket,它能让客户端和服务端实现双向通信.在客户端和服务器端建立一条WebSocket连接后,服务器端消息可直接发送到客 ...

  6. OpenCV +Python 制作画板

    效果图 画图工具实现 代码 运行结果 程序分析 窗体自由度 如何退出程序 滚动条相关 支持的事件 首先声明一下,本例思路不是博主原创,博主在前人的代码上进行了个性化的修改,制作了一个简单的画图工具.下 ...

  7. Findbugs异常总汇

    FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查 ...

  8. Scikit-learn:数据预处理Preprocessing data

    http://blog.csdn.net/pipisorry/article/details/52247679 本blog内容有标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理. 基础 ...

  9. Android开发之Intent.Action 各种Action的常见作用

    1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始.比较常用. Input:nothing Outpu ...

  10. MTK8127源码编译出现的错误及相关解决办法

    /** * date:2016/8/17 * author: Y.X .YANG */ 按照开发文档提示: 1.MTK提供的开发包目录下有若干个.aa .ab .ac ...的分压缩包.此时应当将这些 ...