基于 Gradle 构建闭源 Android 库

Build a closed source Android library based on Gradle

我想使用 Gradle 构建一个闭源 android 库。我的库对开源项目有一些依赖性。我应该如何构建我的图书馆?我可以使用 gradle 吗?

Can I use gradle?

简答:

是的。

长答案:

我假设您的库被打包为 aar(包含资源和编译的字节码)。

您需要知道的第一件事是,在撰写本文时 post 无法创建 fat-aar 库,这意味着您必须单独分发库的依赖项。在我看来,最方便的方法是生成 pom.xml 文件并将您的库发布到 Maven 存储库(maven 插件可以完成所有这些),因此客户端将自己获取所有依赖项.由于它是一个 "private" 库,它可能是贵公司的封闭式回购(按访问权限)(简单来说 - 为您的回购创建特殊用户并与相关方共享密码)。

这里的一个缺点是所有依赖项都将在 pom.xml 中公开,您将无法混淆它们。我个人认为这不是问题。

此外,您可以获得能够自动部署构建并让客户使用库的快照版本的巨大优势。当您尝试解决问题并希望快速将它们交付给用户时,这非常有用。在客户端,他们需要做的就是更新 build.gradle 中的版本,或者重新同步项目以防他们使用快照。

第二件事。由于您的库是封闭源代码,因此您需要 运行 proguard 来混淆除库的 public 接口之外的所有内容(所有 public 方法都暴露给最终用户)。

请记住,即使在混淆之后您的代码仍然可以被反编译并且所有字符串文字仍然存在。因此,尽管已经说过百万次了,但要避免在库中存储任何关键数据(例如密码、密钥等)。提取它并不像您想象的那么难:https://www.youtube.com/watch?v=X28Oogg2Q3k

第三件事。我强烈建议您创建将使用您的库的内部测试项目(作为 gradle 子模块),这样您就可以确保没有进行任何重大更改。

希望这个回答至少能让您轻松一些。