编译fresco源码
同步发表于http://avenwu.net/fresco/2015/05/07/build_fresco_sample
fresco出来已经有一阵子了,曾经尝试过一次clone源码编译,主要是看其自带的sample样例,但是除了一些错误,只能暂时搁置,今天再次想起这事,索性在来一遍,顺便分享一下遇到的问题即解决方案;
Clone fresco
首先是获取代码,这个过程很快。
git clone git@github.com:facebook/fresco.git
导入AndroidStudio也不是难事,只不过很多人都遇到了ndk-build的问题,问题在于机器上实际已经装了ndk,并且已经配置在path中,但死活就是编译不过;
解决编译问题
官网的说明中提到两点,一是ndk必须是10c以上的版本,二者需要手动配置ndk.path,注意不是ndk.dir虽然本质都是指向本地的ndk目录.


可以在用户目录下.gradle/中新建gradle.properties然后写上
#osx/*nix
ndk.path=/path/to/android_ndk/r10d
#windows
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
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起来了,但是屏幕上只有一些参数,并没有想象中的图片加载.观察一下日志
05-07 00:45:53.280 30024-30189/com.facebook.fresco.sample E/unknown:FrescoSample﹕ Exception fetching album
java.net.SocketTimeoutException: failed to connect to api.imgur.com/199.27.79.193 (port 443) after 15000ms
at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
at libcore.io.IoBridge.connect(IoBridge.java:112)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
at java.net.Socket.connect(Socket.java:843)
at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
at com.android.okhttp.Connection.connect(Connection.java:101)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.downloadContentAsString(ImageUrlsFetcher.java:110)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.getImageUrls(ImageUrlsFetcher.java:75)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.access$000(ImageUrlsFetcher.java:41)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:63)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:60)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
05-07 00:46:23.460 30024-30424/com.facebook.fresco.sample E/unknown:FrescoSample﹕ Exception fetching album
java.net.SocketTimeoutException: failed to connect to api.imgur.com/199.27.79.193 (port 443) after 15000ms
at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
at libcore.io.IoBridge.connect(IoBridge.java:112)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
at java.net.Socket.connect(Socket.java:843)
at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
at com.android.okhttp.Connection.connect(Connection.java:101)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.downloadContentAsString(ImageUrlsFetcher.java:110)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.getImageUrls(ImageUrlsFetcher.java:75)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher.access$000(ImageUrlsFetcher.java:41)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:63)
at com.facebook.fresco.sample.urlsfetcher.ImageUrlsFetcher$1.doInBackground(ImageUrlsFetcher.java:60)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
这个原因比较明显,我大天朝,外网不是想上就能上的。开启vpn翻墙,退出app,再次进入,开始加载图片
编译fresco源码的更多相关文章
- Windows编译Nginx源码
Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- (转载)Linux如何编译安装源码包软件
一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- [原]在win上编译 subversion 源码实践Tonyfield的专栏
(百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...
- 在Mac mini上编译Android源码
参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...
- 用vs2013编译lua源码方法(一)
用vs2013编译lua源码方法 来源:网络 编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...
- [原]编译Android源码过程中遇到的问题
编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...
随机推荐
- Android性能优化方法(七)
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如果 ...
- 无需部署的轻量级数据库—SQLLite,使用Demo
当有程序需要保存轻量数据,而又烦躁序列化到本地的不便,轻量级数据库—SQLLite是一个很好的选择,只需引用System.Data.SQLite.DLL,无需部署数据库,便可像拥有数据库一样保存数据, ...
- [f]添加css3动画的方法
添加css3的一些动画的属性 使用方法: css3(oDiv[0], 'scale', 300)('rotate', 300);css3(oDiv[0], 'animation', '"dd ...
- Java中获取路径的各种方法
1. java文件中获得路径 Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.cl ...
- Yaf零基础学习总结3-Hello Yaf
Yaf零基础学习总结3-Hello Yaf 上一次我们已经学习了如何安装yaf了,准备工作做好了之后我们来开始实际的编码了,码农都知道一个经典的语句就是“Hello World”了,今天我们开始入手Y ...
- codeforces 429D
题意:给定一个数组你个数的数组a,定义sum(i, j)表示sigma(a[i],...a[j]),以及另外一个函数f(i, j) = (i - j)^2 + sum(i+1, j)^2 求最小的f( ...
- kafka go producer 启动基本配置
1.官网上下载kafka安装包:http://kafka.apache.org/downloads.html 2.执行命令运行zookeeper 实例(单点): bin/zookeeper-serve ...
- IQueryable和IQueryProvider初尝
前言 相信大家对Entity Framework一定不陌生,我相信其中Linq To Sql是其最大的亮点之一,但是我们一直使用到现在却不曾明白内部是如何实现的,今天我们就简单的介绍IQueryabl ...
- PostgreSQL学习记录-- 2016-03-11
1.日期字段 “年月日” 使用 date “年月日 时分秒” 使用 timestamp without time zone 2.布尔字段 使用 boolean 3.字符字段 使用 character ...
- 学习WPF——了解路由事件
入门 我们先来看一个例子 前台代码: 后台代码: 点击按钮的运行效果第一个弹出窗口 第二个弹出窗口: 第三个弹出窗口: 说明 当点击按钮之后,先触发按钮的click事件,再上查找,发现stackpan ...