问题 Android Studio发布本地库


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

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

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

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

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

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

奖励标记:一旦发布,我是否可以使用proguard对库进行模糊处理?目前设定 minifyEnabled=true 在我的lib结果中 .aar 构建时未生成文件。


942
2017-09-29 12:59


起源

你得到“执行失败的任务':app:compileReleaseJavaWithJavac'。>找不到tools.jar”? - Shine


答案:


您可以使用 Maven的发布 插件将您的工件发布到您有权访问的任何存储库。 我正在将它与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接口和类(入口点)。如果您发布非模糊库,我不确定它是否在最终存档中被混淆。


11
2017-10-07 04:11