Jon*_*lis 5 android gradle maven android-studio aar
我正在尝试创建一个Android开源SDK包,以分发给一定数量的客户。
我知道,创建可分发的Android包以包括源代码,清单,布局XML和其他资源等的最佳方法是创建AAR文件,而我已经使用Android Studio做到了。
理想情况下,然后将通过Maven存储库分发AAR,以允许其他人使用源,以及分发pom.xml列出依赖项的文件。
但是,我不想被迫将AAR上传到公共(甚至是私有)存储库中-我只是想拥有一种通过电子邮件或可下载的ZIP文件简单分发AAR文件的方式。
问题是我的图书馆项目有很多依赖项(都来自Maven和本地项目),AAR本身似乎没有任何内在的支持来列出(甚至捆绑)它们的依赖项,这需要从外部进行处理(我认为?)。
这意味着,当将AAR包含在另一个应用程序中时,java.lang.NoClassDefFoundError无论何时尝试使用AAR的任何依赖项,我最终都会陷入困境。
我发现(不理想的)解决方法是将Maven依赖项复制到的宿主应用程序dependencies部分中build.gradle。这不是很好,因为这是客户集成SDK的额外步骤,并且在管理依赖项层次结构方面还不干净。
对于我具有的项目依赖项,此解决方法也不起作用,因为在构建时将其排除在外。我大概可以将这种依赖关系作为源提供,并要求我的客户将其添加到他们的项目中,我确定它可以正常工作,但这变得更加混乱。
因此,问题是:一个人如何创建一个易于分发的AAR文件,该文件可以在无需存储库的情况下以自动的依赖关系解析方式放入另一个应用程序中?
最接近您所寻求的就是将 Maven 风格的存储库作为 ZIP 存档进行分发。这基本上就是您从 Android SDK 获得的 Android 存储库和 Google 存储库。您的客户会将存档解压缩到某个地方(个人工作站、公共文件服务器等)并在其模块的repositories闭包中引用它,然后使用普通compile指令。您将附带pom.xml指向依赖项的指针。那些本身是私有的依赖项将成为 ZIP 存档的一部分;那些公开的将从 JCenter 或其他地方提取。
(注意:您不需要repositoriesSDK 中的 Android 存储库和 Google 存储库的闭包中的内容的唯一原因是因为 Google for Android 插件或多或少会自动添加它们)
然而,当您发布更新时,这将是相当痛苦的。您需要将新的工件和pom.xml文件放入原始存储库的 N 个副本中,其中 N 是您的活跃客户数量。可以发送替换存储库,但随后该存储库开始随着 SDK 支持的版本数量线性增长。如果您决定取消对旧版本的支持,您就会开始破坏尚未升级到新版本的任何人的构建,这可能会增加您的支持负担。或者,您需要制定仅包含新内容的存储库“补丁集”分发机制和说明,并希望客户正确安装它。
| 归档时间: |
|
| 查看次数: |
1368 次 |
| 最近记录: |