基于Gradle构建一个封闭源码的Android库

时间:2015-03-20 13:53:09

标签: android maven gradle android-library

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

1 个答案:

答案 0 :(得分:5)

  

我可以使用gradle吗?

简答:

答案很长:

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

你需要知道的第一件事是,在撰写这篇文章的那一刻,没有办法创建fat-aar库,这意味着你必须分别分配你的库的依赖项。在我看来,最方便的方法是生成pom.xml文件并在Maven存储库上发布您的库(maven插件可以完成所有这些),因此客户端将只获取所有依赖项。由于它是一个“私人”图书馆,这可能是贵公司通过访问权限关闭的回购(简单来说 - 为您的回购创建特殊用户并与感兴趣的各方共享密码)。

这里的一个缺点是所有依赖关系都会在pom.xml中公开,你将无法对它们进行模糊处理。就个人而言,我认为这不是一个问题。

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

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

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

第三件事。我强烈建议您创建内部测试项目(作为gradle子模块),它将使用您的库,因此您将确保不会进行任何重大更改。

希望这个答案让你的事情变得更轻松。