您的位置:首页 > 其它

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,所以就会报如下错误

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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: