Android Studio 发布本地库

标签 android maven android-studio gradle

我最近从 Eclipse 切换到 Android Studio,它在很大程度上更好。

但现在我正想创建库以供日后重用。我知道模块,但不想使用它们,因为它似乎在每个项目中复制了一个副本(我宁愿像在 Eclipse 中那样引用一个库)。

因此,我将注意力转向了 Maven/Gradle 解决方案。理想情况下,我希望能够将我的库导出到本地仓库和/或 Maven 仓库,并通过 gradle 引用它。我已经找了好久了,每个答案都不一样,但没有一个对我有用。 This是我找到的最接近我正在寻找的东西,但在创建 javadoc 时出错。

这些站点(linklink)需要 Bintray 或 Sonatype 帐户才能在全局发布库。发布库是我的最终目标,所以我希望尽可能保持该选项打开,但现在我只希望我的库是私有(private)的。

如果有一个插件我可以指定要导出到的 maven 存储库,那就太好了,但我还没有找到任何看起来很有前途的东西。

所以我的问题是:是否有推荐的“简单”方法来导出 Android Studio 中的库,然后我可以通过 Gradle 引用它?

奖励标记:一旦发布,我能否使用混淆器混淆库?当前在我的库上设置 minifyEnabled=true 会导致构建时未生成 .aar 文件。

最佳答案

您可以使用 maven-publish插件将您的 Artifact 发布到您有权访问的任何存储库。 I am using it combined with Amazon S3 .存储库可以是您的本地 Maven 存储库(.m2 目录)、本地 Artifactory、Archiva 或任何其他 Maven 存储库服务器或托管解决方案。 S3 运行良好,我确信那里有托管的 Artifactories 等。

如果您使用的是外部存储库,请将其添加到存储库部分,但仅使用插件应该可以让您选择发布到本地 maven。 gradle 任务称为 publishToMavenLocal。您需要定义您的出版物。发布只是您的构建创建的一组 Artifact ,在您的情况下它可能是一个 jar,但它可以是任何东西。简短示例如何将它与 S3 一起使用。

apply plugin: 'maven'
apply plugin: 'java'
apply plugin: 'maven-publish'

repositories {
    maven {
        name "s3Repo"
        url "your S3 URL"
        credentials(AwsCredentials) {
            accessKey awsAccessKey
            secretKey awsSecretKey
        }
    }
    maven {
        ... any other repo here
    }
}

publishing {
    publications {
        maven(MavenPublication) {
            artifactId 'artifact that you want'
            from components.java
            artifact distZip {
                ... example artifact created from zip distribution
            }
        }
    }
    repositories {
        add "s3Repo"
    }
}

publishing -> repositories -> add 是您指定要上传文件的所有存储库的地方。

如果你想使用本地 maven 的库,只需添加:

repositories {
...
    mavenLocal()
...
}

然后使用组 ID、 Artifact ID 和版本将您的库与任何其他依赖项联系起来。


据我所知,混淆库与非混淆库是一样的,只是标识符的名称发生了变化。如果要求是发布混淆库,那应该没问题。只是不要混淆 API 接口(interface)和类(入口点)。如果您发布非混淆库,我​​不确定它是否在最终存档中被混淆。

关于Android Studio 发布本地库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844692/

相关文章:

java - 使用 Tycho 的测试插件片段无法解析导入,但可以在 Eclipse 中使用

android - 如何在 Android Studio 中查看项目的当前依赖项列表?

android - Android Studio:找不到MessageSource的ResourceBundle [messages]:找不到基本名称消息的包,语言环境en_US

java - 在Android Studio中运行我的应用程序时出现DuplicatedError

maven - 将 GPG 加密凭证(或特定环境变量)与 boot-clj 和 s3-wagon-private 一起使用

android - 将 flash 游戏移植到原生 android

android - 当我从手机上取下耳机时如何在主屏幕上显示警告对话框

android - 组合多个 Kotlin 流以获得它们的当前值

Android Studio 4.0.2 Gradle 错误 : No value has been specified for property 'enableGradleWorkers'

java - OnItemClickListener 不适用于复选框