程序员人生 网站导航

Android官方技术文档翻译――迁移 Gradle 项目到1.0.0 版本

栏目:综合技术时间:2015-02-27 08:33:44

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

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

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

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

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


迁移 Gradle 项目到1.0.0 版本

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

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

更新插件和 Gradle 版本号

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

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⑴.11-all.zip
+distributionUrl=http://services.gradle.org/distributions/gradle⑵.2.1-all.zip

再说,当你打开1个旧项目时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中,还有其他1些属性也被重命名了。

类库项目中的 ApplicationId

你不能使用 applicationId 来自定义1个项目的包名。这个包名称必须在库项目里是固定的(并且在清单中以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 版本统做了1些不兼容的更改,这些修改需要您的项目也进行更新。这1页文档介绍了如何更新您的项目。请注意这不是这个插件的 0.9 版本中的所作更改的完全列表;它只是涵盖需要了你的源文件需要进行更新的那些更改。有关这些修改的完全的列表,请参见. 用户指南

Instrumentation Tests
如果您在您的项目中已有了instrumentation 测试 (或其他类型的测试),请注意我们把名称和文件夹从 instrumentation 测试改成了 android 测试,以反应出1个事实。这个事实是,这类功能不只是instrumentation测试,也包括着普通的 JUnit 测试(在1个装备上运行)和终究的 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 现在利用程序项目是1样的了。这意味着您可以创建更多的构建类型,和创建flavors。
  • 你可以在buildTypes { ... }容器里创建或配置更多的构建类型。
  • 您可以通过productFlavors { ... }容器创建 product flavors。
  • 你可以通过signingConfigs { ... }容器创建 signingConfigs。
例如,如果在你的库项目中有以下的配置:

android {
    debug {
    }
    release {
    }
    debugSigningConfig {
    }
}

你将要把它替换为:

android {
    buildTypes {
        debug {
        }
        release {
        }
    }
    signingConfigs {
        debug {
        }
    }
}

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐