将本地 .aar 文件添加到我的 gradle 构建中

新手上路,请多包涵

所以我创建了一个 Android 库并成功地将它编译成一个 .aar 文件。我将此 aar 文件命名为: "projectx-sdk-1.0.0.aar" 。现在我希望我的新项目依赖于这个 aar,所以我所做的就是关注 这篇文章

但是这篇文章让我感到困惑,因为我没有得到想要的结果:

aar 的包名是: com.projectx.photosdk 里面的模块叫做 sdk

这是我当前的项目结构:

 |-SuperAwesomeApp
|--.idea
|--gradle
|--App
|---aars
|----projectx-sdk-1.0.0.aar
|---build
|---jars
|---src
|---build.gradle

这是我的 Gradle 构建文件:

 apply plugin: 'android'

buildscript {
    repositories {
        mavenCentral()
        flatDir {
            dirs 'aars'
        }
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'

    compile 'com.projectx.photosdk:sdk:1.0.0@aar'
//    compile files( 'aars/sdk-1.0.0.aar' ) // Does not work either
}

编辑

我得到的错误:

 Failed to refresh Gradle project 'SuperAwesomeApp'
     Could not find com.projectx.photosdk:sdk:1.0.0.
     Required by:
     SuperAwesomeApp:App:unspecified

原文由 sn0ep 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 683
2 个回答

您将 flatDir 块放在错误的 repostories 块中。 repositories 内部的块 buildscript 告诉 Gradle 在哪里可以找到 Android-Gradle 插件,而不是其余的依赖项。你需要有另一个顶级 repositories 像这样的块:

 repositories {
    mavenCentral()
    flatDir {
        dirs 'aars'
    }
}

我对此进行了测试,它在我的设置中运行良好。

原文由 Scott Barta 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用最新版本的 Android Studio,使用 1.3 进行测试,要使用本地 .AAR 文件而不是从 maven/jcenter 存储库中获取的文件,只需转到 File > New > New module 并选择 Import .JAR/.AAR Package

您最终会得到项目中的一个新模块,其中包含非常简单的 build.gradle 文件,大致如下所示:

 configurations.create("default")
artifacts.add("default", file('this-is-yours-package-in-aar-format.aar'))

当然,其他项目必须使用常规 编译项目 指令来引用这个新模块。因此,在使用这个简单的新模块的项目中,本地 .aar 文件的 build.gradle 中有这个

[...]
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:23.1.0'
    [...]

    compile project(':name-of-module-created-via-new-module-option-described-above')
}
[...]

原文由 pelotasplus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题