我最近从 Eclipse 切换到 Android Studio,它在很大程度上更好。
但现在我正想创建库以供日后重用。我知道模块,但不想使用它们,因为它似乎在每个项目中复制了一个副本(我宁愿像在 Eclipse 中那样引用一个库)。
因此,我将注意力转向了 Maven/Gradle 解决方案。理想情况下,我希望能够将我的库导出到本地仓库和/或 Maven 仓库,并通过 gradle 引用它。我已经找了好久了,每个答案都不一样,但没有一个对我有用。 This是我找到的最接近我正在寻找的东西,但在创建 javadoc 时出错。
这些站点(link 和 link)需要 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/