首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在aar包的android库模块中包含google-play-services库作为可选

如何在aar包的android库模块中包含google-play-services库作为可选
EN

Stack Overflow用户
提问于 2016-10-14 03:52:08
回答 1查看 216关注 0票数 0

我正在创建一个android库模块,其中有一些谷歌播放服务广告和gcm包的代码依赖性。我希望它们在为jcenter创建包的过程中标记为可选包。

下面是我希望我的pom.xml在包创建过程中包含<optional>true</optional>的内容。

代码语言:javascript
复制
<dependencies>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-ads</artifactId>
      <version>[7.8,)</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-gcm</artifactId>
      <version>[7.8,)</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>
  </dependencies>

下面是我用来从android studio创建我的android库的包。

此外,我还希望将源代码和javadocs jar创建为空文件,这样我也可以将我的存储库同步到maven-central。为此,在下面的脚本中将更新什么?

而这个./gradlew clean build generateRelease就是我目前用来运行下面的打包脚本来运行的。

代码语言:javascript
复制
apply plugin: 'maven'
def groupId = project.PUBLISH_GROUP_ID
def artifactId = project.PUBLISH_ARTIFACT_ID
def version = project.PUBLISH_VERSION
def localReleaseDest = "${buildDir}/release/${version}"
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}
uploadArchives {
    repositories.mavenDeployer {
        pom.groupId = groupId
        pom.artifactId = artifactId
        pom.version = version
        // Add other pom properties here if you want (developer details / licenses)
        repository(url: "file://${localReleaseDest}")
    }
}
task zipRelease(type: Zip) {
    from localReleaseDest
    destinationDir buildDir
    archiveName "release-${version}.zip"
}
task generateRelease << {
    println "Release ${version} can be found at ${localReleaseDest}/"
    println "Release ${version} zipped can be found ${buildDir}/release-${version}.zip"
}
generateRelease.dependsOn(uploadArchives)
generateRelease.dependsOn(zipRelease)
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
EN

回答 1

Stack Overflow用户

发布于 2016-10-14 19:14:20

在寻找答案之后,我想出了下面的答案,它是完美的。

只需将上述gradle文件添加到下面,即可为jcenter创建包。

最后,您将在项目库模块的build文件夹中获得zip文件,其中google-play-service ads和gcm是可选的。

它将帮助你在你的应用程序中使用任何google play服务版本-分别是用来构建库的版本。

代码语言:javascript
复制
def deployer = uploadArchives.repositories.mavenDeployer

[deployer]*.pom*.whenConfigured {
    pom -> pom.dependencies.find {dep -> dep.groupId == 'com.google.android.gms' && dep.artifactId == 'play-services-ads' }.optional = true
}
[deployer]*.pom*.whenConfigured {
    pom -> pom.dependencies.find {dep -> dep.groupId == 'com.google.android.gms' && dep.artifactId == 'play-services-gcm' }.optional = true
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40029765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档