我最近从Eclipse切换到了Android Studio,而且大部分时间都更好。
但是现在我想要创建库以便以后重用。我知道模块,但不想使用它们,因为它似乎在每个项目中复制一个副本(我宁愿在Eclipse中引用一个lib)。
所以我把注意力转向了Maven / Gradle解决方案。理想情况下,我希望能够将我的lib导出到本地仓库和/或maven仓库,并通过gradle引用它。我现在已经找了很长一段时间,每个答案都不一样,但没有一个对我有用。 This是我找到的最接近我所寻找的内容,但javadoc创建时出错。
这些网站(link和link)需要Bintray或Sonatype帐户才能在全球范围内发布图书馆。发布图书馆是我的最终目标,所以我希望尽可能保持该选项的开放,但是现在我只想让我的图书馆成为私人图书馆。
如果有一个插件我可以指定一个maven repo导出,那将是非常好的,但我还没有找到任何看起来很有希望的东西。
所以我的问题是:是否有推荐的"简单"在Android Studio中导出库的方法,我可以通过Gradle引用它?
Bonus Marks:一旦发布,我是否可以使用proguard对库进行模糊处理?目前在我的lib上设置minifyEnabled=true
导致在构建时未生成.aar
文件。
答案 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接口和类(入口点)。如果您发布非模糊库,我不确定它是否在最终存档中被混淆。