Android Studio如何使用gradle构建具有远程依赖关系的aar文件。

Android Studio如何使用gradle构建具有远程依赖关系的aar文件。,android,android-studio,android-gradle-plugin,build.gradle,Android,Android Studio,Android Gradle Plugin,Build.gradle,我用Android Studio创建了一个Android库模块,我可以在应用程序中使用它,现在我需要在我的其他应用程序中使用它。所以我在考虑使用像毕加索这样的远程设备 我想知道我需要采取哪些步骤?我读了一些文章和网站。这很令人困惑 要使库作为远程依赖项可用,只需执行三个步骤: 构建您的库并提供必要的存储库元数据 将包含元数据的库放在存储库中 告诉您的项目在该存储库中查找依赖项 之后,您可以在应用程序的build.gradle文件中具有如下远程依赖项: compile 'com.example.d

我用Android Studio创建了一个Android库模块,我可以在应用程序中使用它,现在我需要在我的其他应用程序中使用它。所以我在考虑使用像毕加索这样的远程设备


我想知道我需要采取哪些步骤?我读了一些文章和网站。这很令人困惑

要使库作为远程依赖项可用,只需执行三个步骤:

  • 构建您的库并提供必要的存储库元数据
  • 将包含元数据的库放在存储库中
  • 告诉您的项目在该存储库中查找依赖项
  • 之后,您可以在应用程序的build.gradle文件中具有如下远程依赖项:

    compile 'com.example.developer:lib-util:1.0.0'
    
    这将查找您为名为“com.example.developer”的组或组织注册的所有存储库,然后查找名为“lib util”且版本为“1.0.0”的工件

    构建您的库并提供必要的存储库元数据 这听起来可能很复杂,但其实没那么难。它只是一个目录结构,看起来有点像这样:

    com
     |-- example
          |-- developer
               |-- lib-util
                    |-- 1.0.0
                    |    |-- lib-util-1.0.0.aar
                    |    |-- lib-util-1.0.0.aar.md5
                    |    |-- lib-util-1.0.0.pom
                    |    |-- lib-util-1.0.0.pom.md5
                    |-- maven-metadata.xml
                    |-- maven-metadata.xml.md5
    
    文件
    lib-util-1.0.0.aar
    是已编译的库(Android存档格式)。
    lib-util-1.0.0.pom
    文件包含有关库本身的信息,例如作者及其依赖项。
    maven metadata.xml
    文件包含了解哪些版本可用的必要信息(在本例中只有一个)。最后,
    *.md5
    文件包含一个校验和,用于验证文件的完整性。(为了简洁起见,我省略了
    *.sha1
    校验和文件。)

    要构建此结构,可以使用Maven Gradle插件。将其放入库的build.gradle中,并配置mavenDeployer属性:

    library build.gradle:

    上面的例子是一个stocklibrary build.gradle,Android Studio 1.4为一个新库生成了它,但添加并配置了Maven gradle插件

    第二行:
    applyplugin:'maven'
    ,添加插件。
    uploadArchives
    闭包配置它

    • pom.groupId
      是组织/组的名称。这将写入
      .pom
      文件,但主要用于实际查找作为远程依赖项的库
    • pom.artifactId
      是库的名称。同样,这将被放入
      .pom
      文件中,但用于实际查找库
    • pom.version
      是库的版本。当你发布一个新版本时,你必须增加这个值。还可以放入
      .pom
      ,用于定位库
    存储库(url:/file:./releases/”
    将插件配置为将结构写入相对于项目根目录的文件系统目录

    如果在项目的根目录中运行以下Gradle命令,您应该会看到正在构建的Maven目录结构

    ./gradlew clean uploadArchives
    
    这将首先清理您的构建,然后构建并执行uploadArchives任务,该任务将创建releases目录

    将包含元数据的库放在存储库中 您现在已经有了一个本地Maven存储库,即位于lib util项目目录中的本地文件系统上

    要使其成为在线远程Maven存储库,只需通过http(或https)get请求即可访问。如果您有一个带有Web服务器(如Apache、Nginx或IIS)的服务器,您可以将其配置为托管文件。或者,您可以将它们签入您的Github帐户,并让它托管。您甚至可以将这些文件复制到Dropbox并使用它来承载它们

    如果你想通过Maven Central或JCenter将其公开,你必须去他们的网站注册一个帐户,在那里你可以申请你的“groupId”,然后你可以使用他们的系统上传文件,这样他们就可以托管这些文件

    告诉您的项目在该存储库中查找依赖项 默认情况下,Android Studio会注册您的项目以在JCenter中查找依赖项。以前它默认为Maven Central。所以,如果你已经将你的库上传到了那些存储库,你就不必做任何事情,因为它已经可以工作了

    假设您希望将项目配置为在/Users/rob/projects/lib util/releases中查找本地文件系统上的远程依赖项,并在的自托管Maven存储库中查找。将这些存储库URL添加到项目的build.gradle(因此不在库的中):

    project build.gradle:


    上面的例子是股票项目build.gradle,因为Android Studio只提供了两个额外的存储库。按照列出的顺序查找依赖项。因此,在本例中,它首先检查本地文件系统,然后检查自托管的repo,最后在JCenter中查找。

    您的意思是希望您自己的库作为远程依赖项可用吗?是的@robmeeuwise,从我现在的位置到远程依赖项。我将写一个答案来帮助您开始。我有一个本地和自托管的maven存储库正在工作。给我点时间把它全部写下来。
    apply plugin: 'com.android.library'
    apply plugin: 'maven'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.1"
    
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 1
            versionName "1.0.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    uploadArchives {
        repositories.mavenDeployer {
            pom.groupId = 'com.example.developer'
            pom.artifactId = 'lib-util'
            pom.version = android.defaultConfig.versionName
            // Add other pom properties here if you want (developer details / licenses)
            repository(url: "file:./releases/")
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.0.1'
    }
    
    ./gradlew clean uploadArchives
    
    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.3.0'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            maven { url '/Users/rob/projects/lib-util/releases/' }
            maven { url 'http://developer.example.com/repo/' }
            jcenter()
        }
    }