【问题标题】:How to hide definitions of functions in Android library如何隐藏Android库中的函数定义
【发布时间】:2022-01-08 01:23:36
【问题描述】:

我开发了一些算法来使用心率计算与健康相关的参数。我想把它交给其他开发者。但不想暴露功能的实现。就像 iOS 使用框架一样。有没有像这样在 Android 中创建框架的解决方案?

【问题讨论】:

    标签: android kotlin frameworks hidden


    【解决方案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 进行混淆
    • 我不希望我的库的使用者使用未记录的功能:正确设计库,例如通过针对隐藏具体类的接口进行编码,例如使用工厂类或依赖注入检索

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 2018-03-18
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多