[英]How to include google-play-services library in android library module in aar package as optional
我正在創建一個android庫模塊,該模塊僅對google-play-service廣告和gcm包具有一定的代碼依賴性。 我希望他們在為jcenter創建軟件包期間將其標記為可選軟件包。
下面是我想要我的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>
以下是我用來從android studio創建我的android庫包的內容。
我也想將source和javadocs jar創建為空文件,以便我也可以將我的倉庫同步到maven-central。 為此,下面的腳本中要更新什么?
而這個./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
}
在尋找答案之后,想出了下面的方法,它運行良好。
只需在上述gradle文件下面添加即可為jcenter創建軟件包。
最后,您將在項目庫模塊的build文件夾中找到一個zip文件,其中包含google-play-service廣告和gcm(可選)。
它將幫助您在您的應用中使用任何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.