Android官方技术文档翻译——Gradle插件用户指南(7) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

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

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:62


本文译自Android官方技巧文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻译不易,转载请注明CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/42417779
前三章见《Android官方技巧文档翻译——Gradle 插件用户指南(1-3)》。
第四┞仿见《Android官方技巧文档翻译——Gradle 插件用户指南(4)》。
第五章见《Android官方技巧文档翻译——Gradle 插件用户指南(5)》。
第六章见《Android官方技巧文档翻译——Gradle 插件用户指南(6)》。
翻译工作耗时操心,如不雅你认为本文翻译得还OK,请点击文末的“顶”,感谢。翻译如有错讹,敬请斧正。

高等构建定制

构建选项

Java 编译选项



android {
    compileOptions {
        sourceCompatibility = "1.6"
        targetCompatibility = "1.6"
    }
}

默认值为“1.6”。这个设备会影响所有编译 Java 源代码的义务。

aapt 选项



android {
    aaptOptions {
        noCompress 'foo', 'bar'
        ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }
}

这个设备会影响所有应用aapt的义务。

dex 选项



android {
    dexOptions {
        incremental false
        preDexLibraries = false
        jumboMode = false

    }
}

这个设备会影响所有应用dex 的义务。

操作义务


根本的 Java 项目有一组有限的义务可以或许合营协作来创建一个输出。
个中classes 义务是将 Java 源代码进行编译的那个义务。
大年夜build.gradle经由过程简单地裹足本中应用classes就能很轻易地拜访它。这是project.tasks.classes的简洁写法。
在 Android 项目中,它会比较复杂一点,因为可能有大年夜量的雷同的义务并且他们的名字都是基于Build TypesProduct Flavors生成。 
android对象中有两个(译者注:喂术么感到是三个。难道是原文笔误?)属性就是为解决这个问题的: 
  • applicationVariants(仅实用于应用法度榜样插件)
  • libraryVariants(仅实用于库插件)
  • testVariants (对两个插件都实用)
这三个会分别返回ApplicationVariant、LibraryVariant和TestVariant的DomainObjectCollection对象。
留意,拜访这些集合的任何一个都将触发所有义务的生成。这意味着在拜访这些集合之后不该该再进行(从新)设备。
DomainObjectCollection可以对所有对象进行直接拜访,或经由过程过滤器(这将会很便利)过滤。 

android.applicationVariants.each { variant ->
    ....
}

这三个variant 类都有以部属性:
 属性名称  属性类型  描述  name  String  variant的名称。必须包管是独一的。  description  String  仁攀类可读的对variant的描述。  dirName  String  variant的子文件夹名称。必须包管是独一的。可能会是多个文件夹,即"debug/flavor1"  baseName  String  variant的输出的基本名称必须包管是独一的。  outputFile  File  variant的输出。这是一个可读可写的属性  processManifest  ProcessManifest  处理manifest的义务。  aidlCompile  AidlCompile  编译AIDL文件的义务。  renderscriptCompile  RenderscriptCompile  编译Renderscript文件的义务。  mergeResources  MergeResources  归并资本的义务。  mergeAssets  MergeAssets  归并assets的义务。  processResources  ProcessAndroidResources  处理和编译资本的义务。  generateBuildConfig  GenerateBuildConfig  生成 BuildConfig 类的义务。  javaCompile  JavaCompile  编译 Java 代码的义务。  processJavaResources  Copy  处理 Java 资本的义务。  assemble  DefaultTask  variant 的assemble锚义务。
ApplicationVariant 类增长了以部属性:
 属性名称  属性类型  描述  buildType  BuildType  variant 的 BuildType。  productFlavors  List<ProductFlavor>  variant 的 ProductFlavors。老是不为null,但可所以空集合。  mergedFlavor  ProductFlavor  对android.defaultConfig 和 variant.productFlavors的归并  signingConfig  SigningConfig  用于 variant 的 SigningConfig 对象  isSigningReady  boolean  如不雅该 variant 有签名所需的所有信息则为true。  testVariant  BuildVariant  将会测试该variant的TestVariant  dex  Dex  将代码生成dex的义务。如不雅variant是一个库,这个值可认为 null。  packageApplication  PackageApplication  打包最终的APK的义务。如不雅variant是一个库,这个值可认为 null。  zipAlign  ZipAlign  对apk进行zipaligns(优化对齐)的义务。如不雅variant是一个库或者APK不克不及被签名,这个值可认为 null。  install  DefaultTask  安装义务。可认为 null。  uninstall  DefaultTask  卸载义务。
LibraryVariant 类增长了以部属性:
 属性名称  属性类型  描述  buildType  BuildType  variant 的 BuildType。  mergedFlavor  ProductFlavor  DefaultConfig 的值  testVariant  BuildVariant  将会测试该variant 的 Build Variant  packageLibrary  Zip  打包成Library AAR 归档文件的义务。如不雅不是库项目可认为null。
TestVariant 类增长了以部属性:
 属性名称  属性类型  描述  buildType  BuildType  variant 的 BuildType。  productFlavors  List<ProductFlavor>  variant 的 ProductFlavors。老是不为null,但可所以空集合。  mergedFlavor  ProductFlavor  对android.defaultConfig 和 variant.productFlavors的归并  signingConfig  SigningConfig  用于 variant 的 SigningConfig 对象  isSigningReady  boolean  如不雅该 variant 有签名所需的所有信息则为true。  testedVariant  BaseVariant  经由TestVariant测试过的BaseVariant。  dex  Dex  将代码生成dex的义务。如不雅variant是一个库,这个值可认为 null。  packageApplication  PackageApplication  打包最终的APK的义务。如不雅variant是一个库,这个值可认为 null。  zipAlign  ZipAlign  对apk进行zipaligns(优化对齐)的义务。如不雅variant是一个库或者APK不克不及被签名,这个值可认为 null。  install  DefaultTask  安装义务。可认为 null。  uninstall  DefaultTask  卸载义务。  connectedAndroidTest  DefaultTask  在已连接的设备上运行 android 测试的义务。  providerAndroidTest  DefaultTask  应用扩大 API 运行android 测试的义务。

Android 的特定义务类型的 API。
  • ProcessManifest
    • File manifestOutputFile
  • AidlCompile
    • File sourceOutputDir
  • RenderscriptCompile
    • File sourceOutputDir
    • File resOutputDir
  • MergeResources
    • File outputDir
  • MergeAssets
    • File outputDir
  • ProcessAndroidResources
    • File manifestFile
    • File resDir
    • File assetsDir
    • File sourceOutputDir
    • File textSymbolOutputDir
    • File packageOutputFile
    • File proguardOutputFile
  • GenerateBuildConfig
    • File sourceOutputDir
  • Dex
    • File outputFolder
  • PackageApplication
    • File resourceFile
    • File dexFile
    • File javaResourceDir
    • File jniDir
    • File outputFile
      • 要修改最终输出的文件,可以在 variant 对象上直接应用“outputFile”(译者注:1.0 版本经由过程variant获取到的是outputs,是一个List,须要经由过程对其遍历或取第一个元素variant.outputs[0].outputFile才能获得outputFile对象)。
  • ZipAlign
    • File inputFile
    • File outputFile
      • 要修改最终输出的文件,可以在 variant 对象上直接应用“outputFile”(译者注:1.0 版本经由过程variant获取到的是outputs,是一个List,须要经由过程对其遍历或取第一个元素variant.outputs[0].outputFile才能获得outputFile对象)。

因为Gradle的工作道理以及Android 插件的设备方法,用于每个义务类型的API会有所限制。
起首,Gradle 想要让义务只能设备输入或输出的地位和可能应用的可选标记。所以在这里,这些义务只能定义一些输入或输出。
其次,这些义务的绝大年夜多半的输入都是有实际意义的,它们往往来自sourceSetsBuild TypesPruduct Flavor的混淆值。为了保持构建文件易于浏览和懂得,目标是要闪开辟人员经由过程DSL进行稍微调剂就可以修改构建,而不是要深刻义务的选项和输入并且去修改它们。
此外留意到,除了 ZipAlign 义务类型,所有其他类型都须要设立私稀有据来让它们正常运行。这意味着弗成妙手动创建这些类型的新义务。
这个 API 也可能会被更改。一般情况下,当前 API 是环绕着义务给定的输出或输入(如不雅可能)的人口来添加额外的处理的(如不雅须要)。迎接反馈看法,特别是那些未预知的需求。
关于 Gradle 义务 (DefaultTask,JavaCompile,Copy,Zip),请参阅 Gradle 文档。 

BuildType 和 Product Flavor 的属性参考


即将推出。
关于 Gradle 义务 (DefaultTask,JavaCompile,Copy,Zip),请参阅 Gradle 文档。 <br4>

应用 sourceCompatibility 1.7


经由过程 Android KitKat (buildToolsVersion 19),你可以应用钻石运算符(即<>),multi-catch,在switch语句中应用string, try with resources等等。要做到这一点,请将以下设备添加到您的构建文件中:
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"
    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
留意,你可以把 minSdkVersion 的值设为19之前的版本,只是你只能应用除了try with resources之外的其他新说话特点。如不雅你想要应用 try with resources,你就须要把minSdkVersion 也设为 19。
你还须要确认 Gradle 应用JDK 1.7或更高的版本。(并且Android Gradle 插件也须要0.6.1或更高的版本。)

相关案例查看更多