Third party libraries can be some serious time savers for Android development. They allow us to do awesome things in our app without having to write any of the functionality ourselves. That’s a pretty big convenience. What’s not convenient though is the code-bloat they can often come with.

Video Link


Third Party Library

在自己的app中使用第三方库有哪些优点呢?

  • 第三方库可以为我们提供便捷的功能
  • 它们都经过了良好全面的测试,并且在生产环境中得到验证

而缺点可能就不那么明显

  • 你必须引用整个第三方库,即使用到的只是其中一个简单的类——这被叫做code bloat(代码膨胀)
  • 这会使你的apk体积增大
  • 甚至可能触及65k的方法数天花板(关于65k,请查阅这一篇Building Apps with Over 65K Methods

对于MultiDex,小哥给出了非常幽默的描述

It’s pretty much as much fun going to the dentist…


Proguard

作用

  • Shrink:精简代码,去除无用的类
  • Optimize:优化逻辑
  • Obfuscate:混淆,增加逆向工程的难度

一个例子是,使用Proguard后,原本8.4mb的Google IO app被缩减到了4.1mb

开启 proguard 也十分简单,只要在 gradle 文件中将 minifyEnabled 属性声明为 true,并写明 proguardFiles 路径

1
2
3
4
5
6
7
8
9
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}

需要注意的是,proguard会导致应用到“反射”的代码无法正常工作,因为它会改变方法名&类名,需要用 keep 在相关代码上关闭proguard

ProGuard 官方文档


===Ending===