简体   繁体   English

如何在Aar包中的android库模块中包括google-play-services库作为可选

[英]How to include google-play-services library in android library module in aar package as optional

I am creating an android library module, which has some code dependency on google-play-service ads and gcm package only. 我正在创建一个android库模块,该模块仅对google-play-service广告和gcm包具有一定的代码依赖性。 I want them to mark as optional package during package creation for jcenter. 我希望他们在为jcenter创建软件包期间将其标记为可选软件包。

Below is what i want my pom.xml to include <optional>true</optional> during package creation. 下面是我想要我的pom.xml在包创建过程中包含<optional>true</optional>

<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>

Below is what i am using to create package of my android library from android studio. 以下是我用来从android studio创建我的android库包的内容。

Also i wanted source and javadocs jar to be created as empty files so that i can sync my repo to maven-central as well. 我也想将source和javadocs jar创建为空文件,以便我也可以将我的仓库同步到maven-central。 For that what is to be updated in below script? 为此,下面的脚本中要更新什么?

And this ./gradlew clean build generateRelease is what i am currently using to run below packaging script to run. 而这个./gradlew clean build generateRelease是我当前用来在打包脚本下运行的东西。

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
}

After searching for answer came up with below which is working perfectly. 在寻找答案之后,想出了下面的方法,它运行良好。

Just add below the above mentioned gradle file to create package for jcenter. 只需在上述gradle文件下面添加即可为jcenter创建软件包。

At the end you will have zip file in your build folder of project library module with google-play-service ads and gcm as optional. 最后,您将在项目库模块的build文件夹中找到一个zip文件,其中包含google-play-service广告和gcm(可选)。

It will help you in using any google play service version with your app ir-respective of which version was used to build library. 它将帮助您在您的应用中使用任何Google Play服务版本,无论使用哪个版本来构建库。

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
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Android Studio中导入Google Play服务库 - Import Google Play Services library in Android Studio 如何将 JAR 依赖项包含到 AAR 库中 - How to include JAR dependency into an AAR library google-play-services不会在Eclipse的Android Maps HelloWorld项目中内置 - google-play-services won't build into Android Maps HelloWorld project in Eclipse [Android Maps API]:Google-play-services提示在手机上更新但不在模拟器中更新。 - [Android Maps API]: Google-play-services prompting update on phone but not in emulator. 谷歌钱包服务错过了谷歌钱包服务 - Google Wallet API miss in google-play-services Android aar库混淆 - Android aar library obfuscation Xamarin.Android通过AAR绑定的Google Play服务依赖性 - Xamarin.Android Google Play Services dependency via AAR Binding 使用Maven Android失败:com.google.android.gms的POM:google-play-services:jar:13.0.0缺失,没有相关信息可用 - Failure with Maven Android : The POM for com.google.android.gms:google-play-services:jar:13.0.0 is missing, no dependency information available 任何google-play-services功能的java.lang.NoClassDefFoundError - java.lang.NoClassDefFoundError for any google-play-services feature 如何将android aar库与其他aar依赖项上传到maven Central? - How to upload an android aar library to maven central with other aar dependencies?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM