簡體   English   中英

如何在Aar包中的android庫模塊中包括google-play-services庫作為可選

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM