这里我们主要讲一下lib中动态链接库的优化策略,也就是SO文件。如果你有NDK的开发经验可能会更容易理解一些。
为了支持不同指令集的情况,应用可能会包含armeabi、armeabi-v7a、x86的SO文件等。
目前主流的机型都是支持armeabi-v7a的,并且armeabi-v7a兼容armeabi。所以在一般的开发中我们只需要使用armeabi-v7a 进行ABI支持。
有些SO库可以采用网络下载,把负担放到用户安装完应用之后。对于哪些SO文件可以放到网络中加载,还需要看具体业务情况。
题外话,如果运行时找不到SO的话,会导致应用崩溃。
java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader: findLibrary returned nullat java.lang.Runtime.loadLibrary(Runtime.java:365)at java.lang.System.loadLibrary(System.java:535)at com.your.app.NativeClass.(Native.java:16)... 63 moreCaused by: java.lang.UnsatisfiedLinkError: Library stlport_shared not foundat java.lang.Runtime.loadLibrary(Runtime.java:461)at java.lang.System.loadLibrary(System.java:557)at com.your.app.NativeClass.(Native.java:16)... 5 more
我们也是有办法应对的,可以参见这个开源项目ReLinker
网友评论