【问题标题】:Dependency Management with Gradle on Android在 Android 上使用 Gradle 进行依赖管理
【发布时间】:2014-09-05 03:19:33
【问题描述】:

我是使用 Gradle 进行 android 和依赖管理的新手。我是一名 Java 开发人员,通常我使用 Maven 来管理依赖项。

调查发现 Gradle 现在是 Android 上的依赖管理。我通常在服务器端使用图层。我做了一个客户端项目来与客户端进行通信,以防万一是 Android 应用程序。我必须将我的客户端 jar 添加为 Android 项目中的依赖项。

实际上,我在 Archiva 有我的本地存储库。在 pom.xml 中,我通常在 repositories 标签中声明我的本地存储库,这样,我可以将我的项目包含为依赖项。

Gradle 可以做到这一点吗?

我这样做了,但是当我在 android 模拟器中运行项目时,项目失败了。

// 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。

// Build Configuration
buildscript {
    // Repositories
    repositories {
        mavenLocal()
        mavenCentral()
    }
    // Dependencies
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

// Android Plugin
//apply plugin: 'android'
apply plugin: 'android-library'

// Repositories
repositories {
    mavenLocal()
    mavenCentral()
}

// Dependencies Configuration
dependencies {
    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.2'
    **compile 'com.project:myproject-client:1.0.0'**
}

// Android Configuration
android {
    buildToolsVersion '20.0.0'
    compileSdkVersion 20
    sourceSets {
        main {
            manifest {
                srcFile 'app/src/main/AndroidManifest.xml'
            }
            java {
                srcDir 'app/src/main/java'
            }
            res {
                srcDir 'app/src/main/res'
            }
            /*assets {
                srcDir 'assets'
            }*/
            resources {
                srcDir 'app/src/main/resources'
            }
        }
    }
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
    }
    lintOptions {
        // simple xml fails lint checks because it references javax.xml.stream
        abortOnError false
    }
}

【问题讨论】:

    标签: java android maven gradle


    【解决方案1】:

    您需要声明您的 Archiva 存储库。

    repositories {
        mavenLocal()
        mavenCentral()
        maven {
            url 'http://hostname/rep' // replace with url to your internal repo
        }
    }
    

    【讨论】:

    • 我试过了,但是当我重建项目时出现错误:包 com.mycompany.package 不存在。我正在使用 Android Studio
    • 如果您运行gradlew dependencies --configuration compile,您的依赖项是否列在那里?
    • 是的,但是当我重建项目并部署到 Android 模拟器时,它不会加载,因为我的依赖项没有加载到 apk 中。
    • 试试评论stackoverflow.com/a/21134305/957630中提到的解决方案。
    • 谢谢,对我有用的解决方案是将 libs 目录的依赖项添加到我的 android 应用程序中,还在 gradle 中添加依赖项并且工作正常,我不知道这是否可以,因为我看到的问题是我必须每次将 jar 复制到文件夹 libs 中,而不是自动复制。
    猜你喜欢
    • 2015-07-26
    • 2016-01-16
    • 1970-01-01
    • 2013-06-15
    • 2021-01-04
    • 1970-01-01
    • 2022-12-23
    • 2011-09-18
    相关资源
    最近更新 更多