Android是如何隐藏类库的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我有3个项目在第4个(主项目)中用作库。

这三个项目的内部编译如下(build.gradle):

库计划:

  • 项目A compile project(":projectA") compile project(":projectB")
  • B项目 compile project(':projectC')

主要项目:

compile(name: 'projectA', ext: 'aar')
compile(name: 'projectB', ext: 'aar')
compile(name: 'projectC', ext: 'aar')

提问于
用户回答回答于

许多项目使用ProGuard来实现这种保护。

但是有一些限制:

  • ProGuard的主要用途是从字节码中删除尽可能多的调试信息,行号和名称,而不改变字节码的实际功能。它取代了成员和参数的名称,例如vehicleLicensePlate可能会变成无意义的类_a。正如任何代码维护者将会涉及的那样,糟糕的成员和变量名称使得维护非常困难。
  • ProGuard可以通过尽可能优化(稍微)修改字节码(计算常量定义为表达式,内联等等。优化在这里列出:http : //proguard.sourceforge.net/FAQ.html#optimization
  • ProGuard不加密字节码--JVM需要查看实际的字节码,否则无法运行程序。
用户回答回答于

如果有人比你需要使用你的库,使用bintray发布它,或者只是将编译后的aar / jar文件添加到应用程序项目中。

以下是整个流程的指南:https//inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en

或者,您可以使用maven构建库项目(我发现它比使用gradle更容易),

和一个具体的项目:https//github.com/fcopardo/BaseViews-Android

扫码关注云+社区