Android Studio发布本地库

时间:2015-09-29 12:59:57

标签: android maven android-studio gradle

我最近从Eclipse切换到了Android Studio,而且大部分时间都更好。

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

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

这些网站(linklink)需要Bintray或Sonatype帐户才能在全球范围内发布图书馆。发布图书馆是我的最终目标,所以我希望尽可能保持该选项的开放,但是现在我只想让我的图书馆成为私人图书馆。

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

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

Bonus Marks:一旦发布,我是否可以使用proguard对库进行模糊处理?目前在我的lib上设置minifyEnabled=true导致在构建时未生成.aar文件。

1 个答案:

答案 0 :(得分:11)

您可以使用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()
...
}

然后将您的lib引用到具有组ID,工件ID和版本的任何其他依赖项。

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