我想用Gradle构建一个闭源的android库.我的库对开源项目有一些依赖性.我该如何构建我的库?我可以使用gradle吗?
解决方法:
Can I use gradle?
简短回答:
是.
答案很长:
我假设您的库打包为aar(包含资源和编译的字节码).
首先要知道的是,在写这篇文章的那一刻,没有办法创建fat-aar库,这意味着你必须分别分配库的依赖项.在我看来,最方便的方法是生成pom.xml文件并在Maven存储库上发布您的库(maven插件可以完成所有这些),因此客户端将只获取所有依赖项.由于它是一个“私人”图书馆,这可能是贵公司通过访问权限关闭的回购(简单来说 – 为您的回购创建特殊用户并与感兴趣的各方共享密码).
这里的一个缺点是所有依赖项都将在pom.xml中公开,您将无法对它们进行模糊处理.就个人而言,我不认为这是一个问题.
此外,您可以获得巨大的优势,能够自动部署构建并让客户端使用库的快照版本.当您尝试修复问题并希望快速将其交付给用户时,这非常有用.在客户端,他们需要做的只是在build.gradle中更新版本,或者只是重新同步项目,以防他们使用快照.
第二件事.由于您的库是封闭源代码,因此您需要运行proguard来模糊除库的公共接口之外的所有内容(所有公共方法都向最终用户公开).
请记住,即使在混淆之后,您的代码仍然可以被反编译,并且所有字符串文字仍然存在.因此,尽管已经说了数百万次,但要避免在库中存储任何关键数据(例如密码,密钥等).提取它并不像你想象的那样难:https://www.youtube.com/watch?v=X28Oogg2Q3k
第三件事.我强烈建议您创建将使用您的库的内部测试项目(作为gradle子模块),这样您就可以确保不会进行任何重大更改.
希望这个答案让你的事情变得更轻松.