android - 在Android中,使用Gradle编译,如何在项目之间共享代码?

标签 android build gradle

在使用 Gradle 构建两个应用程序时,在两个项目之间共享一些代码(例如 Utils 类)的首选方法是什么?

我可以在不创建额外的 jar 文件的情况下执行此操作吗?我只希望我的代码位于应用程序项目之外,导入/编译到两个应用程序项目中。还是这根本不可能?

我熟悉使用 jar 或 Android 库项目的方法,但两者似乎都有些笨拙。

最佳答案

我最喜欢的做法是将其保存在本地 Maven 存储库中。存储库甚至可以存在于您的 SCM 中,因此它在所有工作区中都是相同的。

创建一个 Android Studio 项目,然后将其设置为您的 build.gradle 配置的 maven 项目:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android-library'
apply plugin: 'maven'

repositories {
    mavenCentral()
}

configurations {
    archives {
        extendsFrom configurations.default
    }
}

group = 'com.mypackage.mylibrary'
version = '1.0.0'

uploadArchives {
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            repository(url: uri("relative/path/to/localrepo"))
            pom.project {
                artifactId 'mylibrary'
                name 'My Library'
                packaging 'aar'
            }
        }
    }
}
android {
    // copy old android config here
}

您需要先部署该库,然后才能使用它。使用 uploadArchives 任务 [./gradlew uploadArchives]

现在您应该可以通过执行以下操作在任何项目中使用此库:

repositories {
    maven { url 'relative/path/to/localrepo' }
}
dependencies {
    compile ('com.mypackage.mylibrary:1.0.0')
}

当您对库进行更改时,您必须使用新版本重新部署 (uploadArchives),然后在任何需要新版本的项目中更新依赖项引用。

关于android - 在Android中,使用Gradle编译,如何在项目之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338016/

相关文章:

android - 在地理定位应用程序中存储路径的最佳做法是什么?

c++ - 使用cmake构建静态库的静态库

android - Cordova 构建失败,未指定 buildToolsVersion

android - Output.json将应用程序版本代码显示为版本名称

Android - ExoPlayer2 字幕

javascript - WebView + addJavascriptInterface + javascript = 问题,webcore 崩溃

c++ - Debug 中不满足的符号但不是 Release

gradle - 将平台约束应用于所有配置

android - Gradle Android Studio中的错误

android - 有没有办法在运行 Android 应用程序时查看打印消息?