大概一周之前,Facebook开源了专为Android系统定制的图片下载缓存工具,当天该消息就上了各大技术论坛网站的头条,也成为了各个技术群里讨论的最主要的话题。也就在当天stay4it的QQ群里面就有人尝试着用Android Studio导入Fresco,折腾了半天还是失败了,发生这种情况的不止一个人,很多人都碰到这样的问题,导入不成功,编译不了,更别说运行了。前两天正好清明节放假,我怀着好奇的心情也尝试了一次,发现确实很麻烦,但是最终还是成功的编译运行了。先分享一下sample运行的效果图,勾引一下大家:

  

现在就把我的导入过程分享给大家,希望大家不要走弯路。本来有想过在我的Android Studio系列视频课程里面再额外增加一节课来专门讲解Fresco的导入,但是想了想还是决定写成博客分享给大家,原因大家往下看就知道了。

先介绍一下我电脑的系统以及环境:

  • Macbook Pro
  • Yousemite
  • Android Studio 1.2 beta (刚刚升级的,大部分人应该还是1.1的版本)
  • Gradle 2.2.1-all

另外你还需要预先下载Android NDK,并且将Android NDK的路径配置到环境变量里面,具体的下载与配置我这里就不再描述了,作为一个优秀的程序员这些都不是问题,记得FQ哦。

    相信大部分朋友用的是Windows系统,但是由于我本人已抛弃Windows太久,家里的Windows机器已过花甲之年,也已病入膏肓所以就没有在Windows系统上尝试,但是从Github上的Fresco issues来看,Windows的导入还是存在问题的,至少在我写这篇文章的时候还没有解决。由于Facebook的团队都是用Mac或者Linux来开发的,所以Windows上并没有测试过,所以会出现各种各样的bug,这里有一个Github上关于Windows的open issue大家可以参考一下或者实时跟进。

     好了,让我们继续来看Mac上怎么导入的,首先,将Fresco从Github上clone下来。这里跟大家提醒一下,整个导入过程最好FQ,因为在导入以及后面build的时候,有部分资源是必须FQ才能访问的。而且导入以及build的过程比较耗时,需要下载很多相关资源,所以最好确保自己在网络状况良好的情况下尝试导入。这也是我为什么没有录制成视频课程的主要原因。打开Android Studio,选择Import Project,如图:

  选择你clone下来的Fresco的路径,点击确定,接下来就是一个长时间的下载以及导入的过程,如图:

  这是一个漫长的过程,这段时间大家可以干点别的事情,玩个游戏休息一下或者看看Fresco的中文文档之类的,导入的过程当中主要下载的资源有:

  1. 项目中依赖的jar包 (每个module中的build.gradle文件中依赖的jar包,jcentral或者maven)
  2. 各式各样的插件 (包括1.0.1的gradle插件,基于JVM的自动化测试工具robolectric插件等等,很多)

  当你各种资源下载完成进入到Android Studio的主界面之后,你已经成功了一半了。下一步就是build,这里大家要特别注意,只能用命令行进行build,不能使用菜单栏上面的build->make project或者rebuild project,因为利用后者build会失败。我碰到的报错如下图:

  当然,在碰到上述错误的情况下我也尝试过去搜索解决方案,Github上有这样一条关于[Mac导入build的issue],里面有人提到要将imagepipeline module的build.gradle中的ndk路径全部配成你本地的绝对路径,我尝试了一下,还是失败了,具体错误我就不再贴了,我觉得这里还存在bug,有兴趣的朋友可以关注一下刚提到的issue。

  既然GUI的build不行,我们就用命令行来build,打开Android Studio左下角的terminal tab,检查一下terminal的路径是不是Fresco工程的根目录,因为gradlew和gradle wrapper均在工程的根目录下。接着运行./gradlew clean将工程clean一下,可能你会碰到这样的错误:

  没关系,不用管他,我们可以进行手动clean,将每个module中的build文件夹都删掉就行,其实clean的过程就是如此。删干净之后我们就可以运行./gradlew build了,整个build的过程可以分为三个阶段:

  1. 又是一轮download,主要是imagepipeline中需要一些资源,如图:

  2. 所有资源download成功之后又会进入clonewebp的阶段,这个阶段将会持续一段时间,并且没有任何log出现在命令行,如图:

    注意,在clonewebp的过程当中,如果你没有FQ的话可能会出现这样一个错误,如图:

    大家一看便知为什么会失败,chromium相关的资源,需要从googlesource去download的

  3. 还有一个常见问题也会发生,就是取消lint error的问题,如图:

    解决方案很简单,就是在imagepipeline的build.gradle文件中的android的代码块中添加如下图所示的代码:

  经历过上述三个阶段之后,你的build也应该会成功了,整个build的过程应该在10分钟左右,说实话我也头一次见过build这么长时间的工程。build成功之后应该如下图:

  好了,等你到了这一步,Fresco的导入也完成了,祝贺你成功了,下面我们来运行一下吧:

  大家可以通过Spinner随便选一个加载工具将所有图片和gif下载下来,然后切换加载工具进行比较,你会发现Fresco的缓存加载效率比我们常用的picasso和imageloader高太多,效果太明显了。至于下载速度我个人觉得区别不大,这个跟网络环境有关,就算相同网络环境下的下载速度应该差距不大。

  这就是我导入Fresco的全部过程,时间有限,能力一般,如果哪里有讲解错误,或者你有更好的解决方案请给我留言,咱们一块讨论讨论。

转载于:https://www.cnblogs.com/stay/p/4398432.html

Android Studio导入Fresco相关推荐

  1. Android studio 导入fresco报错can not resolve 'com.facebook.fresco:fresco'的解决思想

    导入fresco出现了can not resolve 'com.facebook.fresco:fresco的问题 通过网络查找后发现解决问题: 原:compile 'can not resolve ...

  2. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  3. Android Studio导入第三方类库的方法

     Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...

  4. 【Android 安装包优化】Android 应用中 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 )

    文章目录 一.Android Studio 导入可执行 7zr 程序 二.从 Assets 资源文件拷贝 7zr 到内置存储空间 三.参考资料 一.Android Studio 导入可执行 7zr 程 ...

  5. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )

    文章目录 安卓直播推流专栏博客总结 一. x264 简介 二. x264 交叉编译 三. Android Studio 导入函数库 四. 交叉编译版本 五. GitHub 项目地址 安卓直播推流专栏博 ...

  6. Android studio导入第三方库的各种方法和eclipse的导入方式对比

    1.1.Eclipse IDE 短信SDK使用项目依赖的方式完成集成.具体步骤如下: 1.复制"SMSSDK"目录到您自己项目的同一目录下,并将其导入到Eclipse中(查看视频教 ...

  7. android studio 导入第三方库的记录

    android studio 导入第三方库的记录.jar包 和 库 一.jar包 1.jar包的话很简单,首先换成project模式,将你要用的jar包复制到lib下面.如图 2.然后右键选择Add ...

  8. Android Studio导入别人的module提示错误Plugin with id ‘com.jfrog.bintray‘ not found.

    1 问题 Android Studio导入别人的module提示错误如下 Plugin with id 'com.jfrog.bintray' not found. Plugin with id 'c ...

  9. Android Studio 导入 Android 系统模块并编译和调试

    FAQ: AS导入系统模块源码,并且能够编译调试,正常查看java doc ???? Android AOSP基础(五)Android Studio调试系统源码的三种方式 http://liuwang ...

最新文章

  1. debian卸载php_如何卸载软件
  2. 并查集-----好忧伤的并查集
  3. MongoDB入门简单介绍
  4. android 百度地图 在线建议查询,Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能...
  5. __set() And __get() 使用详解.
  6. 【转】snmpwalk命令常用方法
  7. Linux 命令(75)—— uptime 命令
  8. Leetcode Merge Sorted Array
  9. 常用的WebService
  10. iOS 6分享列表——UIActivityViewController详解
  11. 【python简洁之道】-----1. 注释规则
  12. 【POJ 1113】Wall【凸包+一点思维】
  13. windows平台HTTP代理服务器搭建(CCproxy)
  14. 【悟空】恍恍惚惚进入软件测试行业
  15. IOI2017 Day1 Toy Train 题解
  16. 为什么大数据与云计算密不可分?
  17. windows PE 是什么?
  18. 音频调整测试软件 使用,音频测试-示波器-使用方法
  19. IBM云对象存储Cleversafe 大力拓展全新战场
  20. Python中os.sep的用法

热门文章

  1. [java]OutOfMemoryError 原因及解决办法
  2. Android抽象布局——include、merge 、ViewStub
  3. 在Linux上部署aspnet mvc3
  4. Windows磁盘驱动基础教程
  5. 教你怎样快速DIY自己的博客园SKIN
  6. linux程序重读分区表,重读分区表, 求教~~, 系统是 Cent6.5,
  7. 用 Flask 来写个轻博客 (30) — 使用 Flask-Admin 增强文章管理功能
  8. Windows 8.1 PLSQL_32连接到RHEL6.1 Oracle10gr2_64
  9. Altium Designer原理图和PCB中对元件垂直、水平镜像翻转
  10. 使用Session服务未开启错误解决方案