这篇博文将讨论如何使用Gradle在visualstudio中构建Android库(.AAR)和APK,并利用Maven依赖项,让我们开始吧!如果你是新来格拉德尔,那么看看 gradle概述 页面和 用户指南 .
Gradle确实是Android的默认构建系统已经有相当长的一段时间了,Android开发人员已经缓慢但肯定地转向Gradle。Gradle提供了灵活性以及为Android构建定义通用标准的能力。Gradle允许Android开发人员使用一个简单的声明性DSL来配置Gradle构建,以支持各种Android设备和应用商店。
通过一种简单的声明性领域特定语言(DSL),Gradle开发人员可以轻松地描述和操作构建逻辑(例如清单条目–minSDKVersion、targetSDKVersion等),通过Maven或Ivy使用内置的依赖关系管理,并且基本上可以访问单个,权威的构建为androidstudioide和来自命令行的构建提供了动力,但是在visualstudio中使用Gradle的能力直到最近才被发现。
入门
使用最新的VisualStudio版本,如果您查看文件->新建项目模板部分中的跨平台C++部分,您将看到下面的图中所示的各种模板。注意两个新的 格拉德尔 已引入的模板。
“基本Android应用程序(Android,Gradle)”,顾名思义,模板将构建一个E2E Android应用程序(.APK),“基本库(Android,Gradle)”模板将构建一个AAR文件,也称为Android工件。对于传统的Java用户,AAR与Jar文件类似,主要区别在于AAR文件包含布局、可绘图等资源,这使得创建自包含的可视化组件变得更加容易。 例如,如果您有多个应用程序使用同一个登录屏幕,使用jar,您可以共享类,但不能共享布局本身。与AAR的一切都捆绑在一个包。话虽如此,现在让我们来看看一个基本的Android应用程序的结构。
了解Gradle人工制品 从模板创建新项目时,您会注意到位于根项目目录中的顶级build.gradle文件定义了应用于项目中所有模块的生成配置。默认情况下,顶级构建文件使用buildscript{}块来定义项目中所有模块通用的Gradle存储库和依赖项。下面的代码示例描述了创建新项目后可以在顶级build.gradle.template中找到的默认设置和DSL元素。 对于这个项目,repositories部分声明jCenter和mavenCentral存储库,我们还引入了Maven工件上的类路径依赖。这个工件是一个库,它包含在属性页中指定的Android Gradle插件版本(如下图所示)。
“app”目录中的模块级build.gradle.template文件将允许您为其所在的特定模块配置生成设置。这个特定的build.gradle.template文件的一个特别之处是,它基于实验性插件(0.4.0),可以显著减少配置时间。除此之外,这个实验插件还允许与NDK和CFube构建系统集成,这在应用程序包含C++代码时非常重要。
使用实验性插件时的一个示例Android app module build.gradle.template文件概述了一些基本的DSL元素。
apply plugin:’com.android.model.$(ConfigurationType)’命令指定正在生成的工件的类型。您可以将其设置为用于生成.APK的应用程序或用于生成.AAR文件的库。此配置类型可以通过属性页“configuration type”属性进行控制 .
实验性插件使用的插件名称不同于用于构建android APK的标准插件名称“com.android.application”,如果您正在构建android aar库,则使用“com.android.library”。
特定于模块的“build.gradle.template”文件的下一部分是model部分。模型部分包装配置。Android闭包是用于包装用于编译的SDK版本、支持的最低SDK版本等的标准方法。
下一节“compileOptions”允许选择编译器使用的语言级别。
这个 android.buildTypes版本 节创建调试和发布生成类型 对于此应用程序。尽管调试生成类型没有出现在生成配置文件中;当debuggable属性设置为true时,将对其进行配置。这允许在安全的Android设备上调试应用程序,并使用默认的通用密钥库配置APK签名。
模型附件中的最后一部分是 产品口味 . 产品风格定义了由项目构建的应用程序的定制版本。单个项目可以有不同的风格,从而改变生成的应用程序。由于这个特别的build.gradle是为NDK android应用程序定制的,因此abiFilters.add允许为每个架构轻松构建一个APK。
此build.gradle.template文件中的最后一个部分是dependencies部分。有三种依赖关系,您可以找到每种依赖关系的作用 在Android文档网站上 . 这个特定的build.gradle.template只定义compile.filetree依赖项,如下所示。${aarrependencies)是我们添加的,它允许简单的visualstudio项目引用。
compilefiletree(dir:’libs’,include:[‘*.jar’])行告诉生成系统将app/libs/目录中的任何jar文件包含在编译类路径和应用程序的最终包中。
作为项目的一部分包含的其他Gradle文件是settings.Gradle.template文件。此文件引用构成项目的所有模块。
include“:app”$(AarDependenciesSettings)
使用NDK集成 在visualstudio中使用NDK与Gradle的集成非常简单。通常,您需要在model部分中为特定于模块的build.gradle.template文件添加ndk{}部分,还可能使用android.sources部分来提供 安卓 文档 但是 在VisualStudio中,为了合并一个本地C/C++组件,您需要做的是通过跨平台Android平台创建一个新的本地组件。 然后通过Gradle项目的典型项目引用添加它,如下所示。visualstudio将自动在您正在构建的Android应用程序中打包您的本机库。
或者,您也可以使用标准方法,使用实验性Gradle插件来包含JNI源代码,如果这对您更合适的话。Google为androidndk和Gradle提供了一个很好的示例列表 此存储库 . 有一些小改动,主要是从“build.gradle”->“build.gradle.template”文件中复制内容 , 这些示例在visualstudio中适用。我们目前正在为你们提供一个androidstudio->visualstudioandroid项目转换器,使这个过程自动发生。如果您对这个转换器感兴趣,请留下您的联系方式或联系我。
在Android项目中引用Android库 通常,在VisualStudio中构建的Android应用程序主要使用C++。时不时地,即使对于这些C++重应用程序,也可能需要将Android库(如AAR和JAR)包含到Android应用程序中。这些可以是为共享公共代码、资产和实用程序而构建的国产Android工件。
有了这个版本的visualstudio,我们也让这个过程变得非常简单。为了创建和引用一个AAR文件,您只需从file->new project菜单(Basic Library(Android,Gradle))创建一个新的AAR,然后通过一个项目引用将其添加到您的Android应用程序中,如下图所示。
例如:在你的Android应用中加入Facebook的SDK 既然我们已经对Gradle构建系统的工作原理有了基本的了解,现在让我们继续展示构建系统的真正威力。如前所述,Gradle使与外部存储库的集成变得简单。为了利用Facebook SDK(说明 在这里 )只需在特定于模块的build.gradle.template文件中使用compile dependency命令并添加以下行(假设我们已经在根build.gradle文件中指定了mavenCentral()和JCenter()存储库)。
编译“com.facebook”。android:facebook-android-sdk:4.7.+’
此命令声明对版本4.7和 上面是Facebook的SDK。在构建时,Gradle现在将自动从顶级build.Gradle.template文件中指定的jCenter存储库中提取依赖项。
这种机制不仅允许您指定并合并Facebook SDK作为构建时工件,还允许visualstudio为 Java语言服务体验 像Intellisense这样的功能扩展了Facebook SDK API集的功能 如下图所示!
总结 本文总结了当前对使用Gradle for构建Android应用程序的支持 Visual Studio 2015更新3 . 我们期待您试用这些新功能,并通过以下方式分享您的反馈: 微笑/皱眉 (使用#cpp2015), 连接 , 用户语音 或者在下面的评论里。