如何隐藏Android库中的函数定义
Posted
技术标签:
【中文标题】如何隐藏Android库中的函数定义【英文标题】:How to hide definitions of functions in Android library 【发布时间】:2022-01-08 01:23:36 【问题描述】:我开发了一些算法来使用心率计算与健康相关的参数。我想把它交给其他开发者。但不想暴露功能的实现。就像 ios 使用框架一样。有没有像这样在 android 中创建框架的解决方案?
【问题讨论】:
【参考方案1】:Android 的构建系统 (Gradle) 允许定义对其他工件/库的依赖项。
iOS 上的库相当于 Android 上的 jar
文件。
iOS 上的框架相当于 Android 上的 aar
文件(aar = Android 存档)。
https://developer.android.com/studio/projects/android-library 详细解释了库是如何创建的。 有多种方法可以将库链接到项目:
该库是项目中的一个库模块,在这种情况下,它是同一代码库的一部分,该库的使用者(其他开发人员)将看到实现的详细信息 库作为 jar 或 aar 文件链接(您将创建 jar/aar 文件并将其提交到项目 repo),在这种情况下,库的使用者将看不到实现的详细信息(稍后会详细介绍) 该库发布到 Maven 存储库(公共或私有),消费者只需将其定义为项目依赖项(典型的implementation("group:artifact:version")
依赖项),有很多文章解释了 Maven 存储库的发布或工件,其中一篇是我自己的文章:https://medium.com/nerd-for-tech/the-better-maven-central-90d7e529d606
注意:无论你做什么,库的使用者仍然可以看到实现的细节,因为 IDE 可以反编译代码。根据您要隐藏实施细节的原因,有不同的解决方案:
代码是专有的,需要作为知识产权保护:使用 ProGuard 甚至 DexGuard 进行混淆 我不希望我的库的使用者使用未记录的功能:正确设计库,例如通过针对隐藏具体类的接口进行编码,例如使用工厂类或依赖注入检索【讨论】:
以上是关于如何隐藏Android库中的函数定义的主要内容,如果未能解决你的问题,请参考以下文章
java - 如何在spring boot java中编写一个函数来处理JPA存储库中的自定义查询?