gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:41:00 25 4
gpt4 key购买 nike

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

 compile 'com.squareup.picasso:picasso:2.5.2'

我想知道我需要采取什么步骤?我很少读文章和网站。这很让人困惑。

最佳答案

要使库作为远程依赖项可用,只需执行三个步骤:
构建库并提供必要的存储库元数据
将包含元数据的库放在存储库中
告诉项目在存储库中查找依赖项
在此之后,您可以在应用程序的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文件包含一个校验和来验证文件的完整性。(为了简洁起见,我还遗漏了一些校验和文件。)
要构建这个结构,可以使用maven gradle插件。将其放入库的build.gradle并配置MavenDeployer属性:
库build.gradle:
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'
}

上面的示例是一个stock library build.gradle,android studio 1.4为一个新库生成了它,但是添加并配置了maven gradle插件。
第二行: *.sha1,添加插件。 apply plugin: 'maven'闭包配置它。
uploadArchives是组织/组的名称。这将写入 pom.groupId文件,但主要用于实际将库作为远程依赖项查找。
.pom是库的名称。同样,这将被放入 pom.artifactId文件中,但用于实际查找库。
.pom是库的版本。当你发布一个新版本时,你必须增加这个值。同时放入 pom.version并用于定位lib。
该行将插件配置为将结构写入相对于项目根目录的文件系统目录。
如果在项目的根目录中运行以下gradle命令,您应该会看到正在构建的maven目录结构。
./gradlew clean uploadArchives

这将首先清理生成,然后生成并执行uploadarchives任务,该任务将创建releases目录。
将包含元数据的库放在存储库中
您现在已经有了一个本地maven存储库,即位于lib util的项目目录中的本地文件系统上。
要使它成为一个在线远程maven存储库,只需通过http(或https)get请求就可以访问它。如果您有一个带有像apache、nginx或iis这样的web服务器的服务器,您可以将其配置为托管文件。或者您可以将它们签入您的github帐户并让它作为宿主。您甚至可以将这些文件复制到Dropbox并使用它托管它们。
如果你想在Maven Central或JCenter上公开它,你必须去他们的网站注册一个账户,在那里你可以申请你的“GroupID”,然后你可以使用他们的系统上传文件,这样他们就可以托管这些文件。
告诉项目在存储库中查找依赖项
默认情况下,android studio注册您的项目以在jcenter中查找依赖项。以前它默认为maven central。所以,如果你真的把你的库上传到那些存储库,你就不必做任何事情,因为它已经工作了。
假设您希望将项目配置为在/users/rob/projects/lib util/releases和位于 http://developer.example.com/repo/的自托管maven存储库中查找本地文件系统的远程依赖项。将这些存储库URL添加到项目的build.gradle中(因此不在库中):
项目build.gradle:
// 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()
}
}

上面的示例是stock project build.gradle,因为android studio只为它提供了两个额外的存储库。查找依赖项按列出的顺序进行。因此在本例中,它首先检查本地文件系统,然后检查自托管repo,最后在jcenter中查找。

关于android - Android Studio如何使用gradle构建具有远程依赖关系的aar文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com