【问题标题】:Android Studio publish local libraryAndroid Studio 发布本地库
【发布时间】:2015-12-26 23:25:37
【问题描述】:

我最近从 Eclipse 切换到了 Android Studio,而且大部分情况下它更好。

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

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

这些站点(linklink)需要 Bintray 或 Sonatype 帐户才能在全球范围内发布库。发布库是我的最终目标,因此我希望尽可能保持该选项处于打开状态,但现在我只希望我的库是私有的。

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

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

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

【问题讨论】:

  • 您收到“任务 ':app:compileReleaseJavaWithJavac' 执行失败。> 找不到 tools.jar”?

标签: android maven android-studio gradle


【解决方案1】:

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

如果您使用外部存储库,请将其添加到存储库部分,但仅使用插件应该可以选择发布到本地 maven。 gradle 任务称为 publishToMavenLocal。您需要定义您的出版物。发布只是您的构建创建的一组工件,在您的情况下,它可能是一个 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"
    }
}

发布 -> 存储库 -> 添加 是您指定要上传档案的所有存储库的地方。

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

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

然后使用组 ID、工件 ID 和版本引用您的库以了解任何其他依赖项。


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2013-07-12
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多