Android Studio发布本地库

Kev*_*vin 11 android gradle maven android-studio

我最近从Eclipse切换到了Android Studio,它在大多数情况下都更好.

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

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

这些站点(链接链接)需要Bintray或Sonatype帐户才能在全球范围内发布库.发布库是我的最终目标,所以我希望尽可能保持该选项的开放,但是现在我只想让我的库是私有的.

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

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

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

Mar*_*rga 11

您可以使用maven-publish插件将工件发布到您有权访问的任何存储库.我将它与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"
    }
}
Run Code Online (Sandbox Code Playgroud)

发布- >资料库- >添加中,可以指定要上传档案的全部回购的地方.

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

repositories {
...
    mavenLocal()
...
}
Run Code Online (Sandbox Code Playgroud)

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


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