Fresco一种超强图片加载组件初体验
2015-08-08 23:57
579 查看
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,所以就会报如下错误
所以解决办法是去掉arm64这个目录、新增64位的so文件、最坏的打算就是不使用Fresco,以下是AndroidStudio中在gradle中配置以便去掉生成的arm64目录
ps: 以上配置只有在vivo x5Pro上测试可以使用,像有些so文件是第三方的且没有64位的 我们只能忍痛割爱不用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了。
相关文章推荐
- stackoverflow,stackexchange,zhihu,ilewen,segmentfault,answerhub,question2answer,,
- Android开发中导入一个项目作为library时出错解决方法
- hdu 2852 KiKi's K-Number(线段树单点更新)
- Palindrome Number
- Unity内置的shader include files
- 轻松搞定面试中的链表题目
- I/O多路复用之总结
- java并发(一) CountDownLatch (在多个线程都结束后再去执行某个任务)
- 值类型 和引用类型以及
- mysql文档摘要续
- 【LeetCode】14 - Longest Common Prefix
- django book学习笔记――高级视图和URL配置
- Java基础——GUI概述
- 《深入浅出struts2》--第23章,自定义插件
- oracle解除锁表
- Microsoft SQL Server 2008 基本安装说明
- shell sed
- Python-Selenium2做Web自动化测试(1)-软件测试分类以及什么时候需要进行自动化测试
- hdu 3480 dp 四边形不等式优化
- hdu1242(Rescue)