[英]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.