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

Fresco图片加载库实战

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了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值