Android 使用 Maven 的归档库集成

Android archive library integration using Maven

我正在尝试将 Android 存档 (aar) 从本地 Maven 集成到我的示例项目中的 Android studio。

我在 Android studio 中遇到以下构建错误:

评估项目时出现问题:app 在 org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@181db40 上找不到 属性 HOME。

如果您使用本地 maven 与 android studio 一起工作,您需要这样做意味着要添加对 .aar 包的引用,它必须最好存储在中央 Maven 存储库中。

一个简单且非常直接的选项是在您的开发机器上创建一个本地 Maven 存储库,并在其中安装您的库。然后从您的 gradle 构建中引用它。而且做起来非常简单!.

  1. 由于您正在为 android 开发,我假设您已经安装了最新的 JDK 并设置了 JAVA_HOME 环境变量,但如果您没有 - 现在是时间。
  2. 然后你会想要安装 Maven。您可以在这里下载:http://maven.apache.org/download.cgi 设置MAVEN_HOME环境变量为你解压maven的路径,将maven的bin文件夹添加到PATH环境变量中
  3. 要测试 maven 是否正常工作,请打开一个新控制台 window 和 运行 以下内容:

    mvn -version

  4. 如果一切正常,是时候将您的库添加到 Maven 存储库中了。在命令提示符 运行 以下内容:

    mvn install:install-file -Dfile=d:\mylibrary-{version}.aar -DgroupId=com.example -DartifactId=mylibrary -Dversion={version} -Dpackaging=aar

不要忘记替换您的库的正确路径,设置您的 groupId、artifactId 和版本号。

  1. 最后,编辑您的 build.gradle 以开始查看本地 maven 存储库。例如,如果你想同时使用 maven central 和你的本地仓库,你可以将它们都添加到仓库配置中。 这是使用我们在上面注册的库的 android 应用程序的非常基本的 build.gradle 示例:

     buildscript {
           repositories {
           mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
    }
    
    apply plugin: 'android'
    
    repositories {
        mavenCentral()
        mavenLocal()
    }
    
    dependencies {
        compile('com.example:mylibrary:0.2')
    }
    
    android {
        compileSdkVersion 17
        buildToolsVersion '17.0.0'
    }
    
  2. 最后,运行 用于构建您的应用程序的构建命令: gradle 清理构建。

主要问题是在 maven 发布配置文件中获取生成的 .aar 文件。为此,我们将 运行 调用 android.libraryVariants,这将初始化该对象,并创建构建所需的所有子任务,包括正在创建 .aar 文件的 "bundleRelease"。

这是我的 build.gradle 文件的样子:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
}

apply plugin: 'android-library'
apply plugin: 'maven-publish'

version '0.2'
group 'com.example'

android {
    compileSdkVersion 17
    buildToolsVersion '17.0.0'

    defaultConfig {
        versionCode 2
        versionName '0.2'
    }
}

android.libraryVariants
publishing {
    publications {
        maven(MavenPublication) {
            artifact bundleRelease
        }
    }
}

如果您想将 artifactId 更改为自定义的东西,您可以通过添加以下行来更改 settings.gradle 中的项目名称:

rootProject.name = 'mylibrary' 而已。现在在您的项目文件夹中打开一个命令提示符,然后 运行 构建您的库并将其发布到本地 Maven 存储库:

gradle 清理构建 publishToMavenLocal

我用来让它工作的几篇基本文章:

How to install maven on windows.

Adding local .aar to gradle build