热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

我想用Gradle构建一个闭源的android库.我的库对开源项目有一些依赖性.我该如何构建我的库?我可以使用gradle吗?解决方法:CanIusegradle?简短回答:是.答

我想用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子模块),这样您就可以确保不会进行任何重大更改.

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


推荐阅读
  • 用户管理_用户管理的小项目
      之前学习链表数据结构的时候,写过(相信很多人都做过)dos窗口版的学生管理系统,通过输入数字来实现CURD学生的信息,顶多就是把数据写入文件来存储数据 ... [详细]
  • Maven 无法打包jar到 Tomcat
    今天新来的同事,让他调试短信验证的接口。跟我说添加的aliyun的短信验证服务无法在tomcat上运行。然后给我看了报错信息:java.lang.NoClassDefFoundEr ... [详细]
  • 我是python小白一枚,对kivy开发手机app产生了兴趣,并没感觉到kivy写代码有多难,折腾打包成手机apk倒是花了好长时间,走过了大大小小的坑,这里把经验记录下来,供大家参 ... [详细]
  • 开发笔记:googletest安装与使用
    本文由编程笔记#小编为大家整理,主要介绍了googletest安装与使用相关的知识,希望对你有一定的参考价值。简介googletest是Google公司 ... [详细]
  • Android JNI学习之Concepts
    2019独角兽企业重金招聘Python工程师标准ConceptsBeforeBeginningThisguideassumesthatyouare:Alreadyfamili ... [详细]
  • 来源|http:sudasuta.comfree-material-design-resources.html如果你正在寻找高品质,免费的设计资源,那么 ... [详细]
  •  在使用PHP多年之后,我对PHP的优势和劣势已经非常清楚,与后起之秀Golang相比,两者已经不在一个重量级。 PHP更像是70kg级别的选手,脚本语言,极速开发,部署方便,性能 ... [详细]
  • 使用Java调用exe可执行文件
    一、出发点平日里,我们看到了很多已经成型的可执行文件,而且经过了一定的封装。因为开源的关系,大多时候可以自己使用eclipse进行编译&# ... [详细]
  • 导读:今天编程笔记来给各位分享关于php变量命名规范是什么的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 前言可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等。msys2可以在wind ... [详细]
  • log4cpp概述与使用实例一、log4cpp概述Log4cpp是一个开源的C类库,它提供了C程序中使用日志和跟踪调试的功能,它的优点如下࿱ ... [详细]
  • 稀松数组
    稀松数组1.稀松数组什么?在一个数组中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该数组为稀疏数组;如图,一个5*5的数组arr上只有3个有效数值 ... [详细]
  • 编译程序有八个步骤。这些步骤包括:1.从源代码文件中读取字符,如果有必要的话,将字符转换成源代码字符集的字符。如果源代码中的行尾字符和换行 ... [详细]
  • 1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。如果是要获得当前执行的脚本的所在目录位置,那么需 ... [详细]
  • MyBatis缓存分为一级缓存和二级缓存一级缓存在SqlSession上二级缓存在SqlSessionFactory上如何配置一级缓存??默认开启&#x ... [详细]
author-avatar
我等到你不再等我_129
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有