Fresco一种超强图片加载组件初体验

来源:互联网 发布:司法拍卖淘宝网房产 编辑:程序博客网 时间:2024/04/30 15:52

Fresco来自Facebook开源的一个超强图片加载组件,项目体验地址:https://github.com/facebook/fresco

在公司开发应用的时候由于应用中肯定会涉及到图片加载,我们就要考虑到OOM以及内存占用问题,所以我们基本上都是用来自第三方开源的图片下载库:Universalimageloader,picasso,glide,volley等优秀的开源库,苦于自己无力写出更优秀的所以我一直在寻找一种更优秀的库,直到我遇到了Fresco。所以这里记录一些我是如何在AndroidStudio上体验Fresco,并且我准备熟悉之后将运用在自己的应用上替换我应用上的UIL,我的体验环境是MAC OS 10.10.2 +androioid studio 1.3+android-ndk-r10e

第一步,配置NDK环境
解压下载好的NDK.bin
1.chmod a+x android-ndk-r10c-darwin-x86_64.bin
后面为文件存放路径 。
2.执行/android-ndk-r10c-darwin-x86_64.bin将NDK解压出来。

第二步,在local.properties配置ndk路径
ndk.dir=../Applications/Android-NDK/android-ndk-r10e

第三步,把下载好的Frescro.Demo导入到As中来
demo地址:https://github.com/liaohuqiu/fresco-demo-for-gradle

运行起来就能看到画面了:
这里写图片描述

体验过程中发现Fresco占用的内存比UIL等第三方库在内存占有少了许多,我的手机上体验少了10M左右,很好的减少了由于图片的原因占了太多的内存。

关于NDK使用以及介绍可以参考http://fresco-cn.org/docs/index.html#_介绍的非常详细,这绝对是目前最好的图片加载库了,熟悉之后马上替换掉项目中正在用的UIL。

在使用过程中经常发现问题,在不断的搜索中找到一个坑,希望能减少被踩到的人:当你项目中有so文件的时候,如果没有针对64位的手机做适配那么该so文件是不会被调用到,因为Fresco中会生成一个arm64-v8a这种64位的目录,那么系统就会只去找寻这个目录下的so,所以就会报如下错误

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.pba.cosmetics-2/base.apk"],nativeLibraryDirectories=[/data/app/com.pba.cosmetics-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "xxxxxxx.so"

所以解决办法是去掉arm64这个目录、新增64位的so文件、最坏的打算就是不使用Fresco,以下是AndroidStudio中在gradle中配置以便去掉生成的arm64目录

splits {        abi {            enable true            reset()            include 'x86', 'x86_64', 'armeabi-v7a', 'armeabi'            universalApk false        }    }    sourceSets.main {        jni.srcDirs = []    }    tasks.withType(JavaCompile) {        compileTask -> compileTask.dependsOn ndkLibsToJar    }    task ndkLibsToJar(type: Zip, description: 'Create a JAR of the native libs') {        destinationDir new File(buildDir, 'libs')        baseName 'ndk-libs'        extension 'jar'        from(new File(buildDir, 'libs')) { include '**/*.so' }        into 'lib/'    }

ps: 以上配置只有在vivo x5Pro上测试可以使用,像有些so文件是第三方的且没有64位的 我们只能忍痛割爱不用Fresco了。

1 0
原创粉丝点击