同步发表于http://avenwu.net/fresco/2015/05/07/build_fresco_sample

fresco出来已经有一阵子了,曾经尝试过一次clone源码编译,主要是看其自带的sample样例,但是除了一些错误,只能暂时搁置,今天再次想起这事,索性在来一遍,顺便分享一下遇到的问题即解决方案;

Clone fresco

首先是获取代码,这个过程很快。

  1. git clone git@github.com:facebook/fresco.git

导入AndroidStudio也不是难事,只不过很多人都遇到了ndk-build的问题,问题在于机器上实际已经装了ndk,并且已经配置在path中,但死活就是编译不过;

解决编译问题

官网的说明中提到两点,一是ndk必须是10c以上的版本,二者需要手动配置ndk.path,注意不是ndk.dir虽然本质都是指向本地的ndk目录.

可以在用户目录下.gradle/中新建gradle.properties然后写上

  1. #osx/*nix
  2. ndk.path=/path/to/android_ndk/r10d
  3. #windows
  4. ndk.path=C\:\\path\\to\\android_ndk\\r10d

笔者的用的是osx 10.10,设置后无效,依然报错.实际上这里变量的配置是为了让imagepipeline/build.gradle的正常执行,所以也可以像配置sdk.dir一样在项目中直接配置,写到local.properties或者gradle.properties中,再次编译通过。

genymotion上无法部署

说也奇怪,居然不能在模拟器上跑,但build.gradle中实际上已经配置了arm/arm7/x86三种不同架构的flavor

  1. Unable to identify the apk for variant arm-debug and device genymotion-nexus_4___4_4_2___api_19___768x1280-192.168.56.101:5555

换真机正常跑起了sample样例

无数据空白页面

最后一步,app起来了,但是屏幕上只有一些参数,并没有想象中的图片加载.观察一下日志

  1. 05-07 00:45:53.280 30024-30189/com.facebook.fresco.sample E/unknown:FrescoSample Exception fetching album
  2. java.net.SocketTimeoutException: failed to connect to api.imgur.com/199.27.79.193 (port 443) after 15000ms
  3. at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
  4. at libcore.io.IoBridge.connect(IoBridge.java:112)
  5. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
  6. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
  7. at java.net.Socket.connect(Socket.java:843)
  8. at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
  9. at com.android.okhttp.Connection.connect(Connection.java:101)
  10. at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
  11. at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
  12. at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
  13. at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
  14. at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
  15. at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
  16. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.downloadContentAsString(ImageUrlsFetcher.java:110)
  17. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.getImageUrls(ImageUrlsFetcher.java:75)
  18. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.access$000(ImageUrlsFetcher.java:41)
  19. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:63)
  20. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:60)
  21. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  22. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  23. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  24. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  25. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  26. at java.lang.Thread.run(Thread.java:841)
  27. 05-07 00:46:23.460 30024-30424/com.facebook.fresco.sample E/unknown:FrescoSample Exception fetching album
  28. java.net.SocketTimeoutException: failed to connect to api.imgur.com/199.27.79.193 (port 443) after 15000ms
  29. at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
  30. at libcore.io.IoBridge.connect(IoBridge.java:112)
  31. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
  32. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
  33. at java.net.Socket.connect(Socket.java:843)
  34. at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
  35. at com.android.okhttp.Connection.connect(Connection.java:101)
  36. at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
  37. at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
  38. at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
  39. at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
  40. at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
  41. at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
  42. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.downloadContentAsString(ImageUrlsFetcher.java:110)
  43. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.getImageUrls(ImageUrlsFetcher.java:75)
  44. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.access$000(ImageUrlsFetcher.java:41)
  45. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:63)
  46. at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:60)
  47. at android.os.AsyncTask$2.call(AsyncTask.java:288)
  48. at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  49. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
  50. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  51. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  52. at java.lang.Thread.run(Thread.java:841)

这个原因比较明显,我大天朝,外网不是想上就能上的。开启vpn翻墙,退出app,再次进入,开始加载图片

编译fresco源码的更多相关文章

  1. Windows编译Nginx源码

    Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...

  2. 重新编译jdk源码,启用debug信息

    我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...

  3. (转载)Linux如何编译安装源码包软件

    一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...

  4. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  5. Android反编译(一)之反编译JAVA源码

    Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具  dex2jar   http://code.go ...

  6. [原]在win上编译 subversion 源码实践Tonyfield的专栏

    (百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...

  7. 在Mac mini上编译Android源码

    参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...

  8. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  9. [原]编译Android源码过程中遇到的问题

    编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...

随机推荐

  1. redis-cli 命令总结

    redis-cli 命令总结 Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如使用Redis 的Java语言包,这 ...

  2. python 静态方法,类方法 ,类的继承

    转自:  http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 1.关于定义类的一些奇特之处  今天在Python中 ...

  3. kettle etl

    使用注意点 1 如果服务器资源有限的话,尽量少开任务窗口,但是要有容错机制,可以分为按天按分钟 2 如果不想写较长的sql可以用detail来启动 3 在设置每天提交的条数时,如果数据很少,而设置值很 ...

  4. UIPageControl页控制器

    一.基本知识 #import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>{ ...

  5. Swing Note

                                      2. Swing容器:   内容窗格.分层窗格.玻璃窗格和一个可选的菜单条.(这四个同时包含在根窗格里)(请分别向其中添加组件)   ...

  6. hdu - 3952 Fruit Ninja(简单几何)

    思路来自于:http://www.cnblogs.com/wuyiqi/archive/2011/11/06/2238530.html 枚举两个多边形的两个点组成的直线,判断能与几个多边形相交 因为最 ...

  7. linux-5重要进程守护

    当给一台主机安装上linux系统后可以工作了-包括接受用户的输入/计算/存储/再将结果输出等等,这都是系统服务帮助我们完成的.而有一些系统服务时刻等待用户的输入(r如键盘进程)或随时响应用户的请求(如 ...

  8. 安装windows git客户端

    从git官网下载安装包,双击安装,一路默认配置,直到完成 打开git bash,运行 ssh-keygen -t rsa -C "573215750@qq.com" 回车,输入“y ...

  9. iBoxDB for .NET v1.5发布, 移动NoSQL数据库

    iBoxDB for .NET是一个无须安装配置就可以运行的数据库. 拥有非常高效的性能同时能提供事务支持. 可嵌入到应用程序中也可以使用TCP与应用程序进行远程数据交互 使用易用的操作接口,不需要阅 ...

  10. Arcgis for Javascript 出现“init.js->TypeError: f is not a function”

    环境 采用离线JS包,版本为v3.8 问题描述 在为map添加了 app.map.on("pan-start", this.showHandBeignPan()); 在拖动地图的时 ...