gpt4 book ai didi

android - 使用 Gradle 依赖项私下分发 AAR

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:38 25 4
gpt4 key购买 nike

我正在尝试创建一个 Android 闭源 SDK 包以分发给选定数量的客户。

我知道创建一个包含源代码、 list 、布局 XML 和其他资源等的可分发 Android 包的最佳方法是创建一个 AAR 文件,我已经使用 Android Studio 完成了此操作。

理想情况下,人们会通过 Maven 存储库分发 AAR 以允许其他人使用源代码,同时分发列出依赖项的 pom.xml 文件。

但是,我不想被迫将我的 AAR 上传到公共(public)(甚至私有(private))存储库——我只是想有一种方法可以通过电子邮件或作为可下载的 ZIP 文件简单地分发我的 AAR 文件。

问题是我的库项目有很多依赖项(来自 Maven 和本地项目)并且 AAR 本身似乎没有任何内置支持来列出(甚至 bundle )它们的依赖项,这需要处理外部(我认为?)。

这意味着当在另一个应用程序中包含 AAR 时,每当我尝试使用任何 AAR 的依赖项时,我最终都会收到 java.lang.NoClassDefFoundError

我发现的一个解决方法(这并不理想)是将 Maven 依赖项复制到 build.gradle 的主机应用程序的 dependencies 部分。这不是很好,因为它是客户集成 SDK 的额外步骤,而且在管理依赖关系层次结构方面并不干净。

此解决方法也不适用于我拥有的项目依赖项,因为它在构建时被排除在外。我大概可以提供此依赖项作为源代码,并要求我的客户将其添加到他们的项目中,我相信这会奏效,但这只会变得更加困惑。

所以问题是:如何创建一个易于分发的 AAR 文件,该文件可以在不需要存储库的情况下通过自动依赖项解析放入另一个应用程序中?

最佳答案

最接近您所寻求的是将 Maven 风格的存储库作为 ZIP 存档分发。这基本上就是您从 Android SDK 获得的 Android Repository 和 Google Repository。您的客户会在某处(个人工作站、公共(public)文件服务器等)解压存档,并在他们模块的 repositories 闭包中引用它,然后使用正常的 compile 指令。您将使用指向依赖项的指针发送您的 pom.xml。那些本身是私有(private)的依赖项将成为 ZIP 存档的一部分;那些公开的将从 JCenter 或任何地方拉出。

(注意:Android 存储库和 Google 存储库的 repositories 闭包中不需要内容的唯一原因是因为 Google for Android 插件会自动添加它们,更多或少)

但是,当您发布更新时,这会带来一定程度的痛苦。您需要将新的 Artifact 和 pom.xml 文件放入原始存储库的 N 个副本中,其中 N 是您的活跃客户数。提供替换存储库是可能的,但随后该存储库开始随着您的 SDK 受支持版本的数量线性增长。如果您决定取消对旧版本的支持,您将开始破坏尚未升级到新版本的任何人的构建,这可能会增加您的支持负担。或者,您需要制定机制和说明,以便仅使用新内容分发各种 repo “补丁集”,并希望客户正确安装它。

关于android - 使用 Gradle 依赖项私下分发 AAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32766561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com