今天一时兴起,想看看Fresco的源码,本以为Download下来see see是很轻松的事儿。先不说生在天朝的苦恼了,单就运行下Demo都绝非易事。博主借此记录下自己运行Demo遇到的问题点,希望能帮助到朋友们。
运行源码的环境
- 源码版本:commit df2854a
- 操作系统:OS X 10.9.5
- Android Studio 版本:2.1 preview 4
- NDK Toolchain版本:4.9
问题点描述
一、 在执行imagepipeline
的ndk_clean_bitmaps
时无法启动ndk-build
:
Error:Execution failed for task’:imagepipeline:ndk_clean_bitmaps’.A problem occurred starting process ‘command ‘ndk-build”
查看imagepipeline
的build.gradle
文件,我们看到getNdkBuildFullPath
就是获取ndk_build
的文件目录,通过查看代码我们不能发现,只要能让该方法获取到正确的NDK目录即可,SO 我们就在该模块的gradle.property文件中添加ndk.path
:
ndk.path=/your/ndk/directory
补充: statik-webp模块也存在同样的问题,按照上述方式修改之。
二、 类似toolchains
下的xxx-4.8
等目录下的文件或目录找不到,如:
make: /your/ndk/directory/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++: No such file or directory
由于博主下载的是最新的ndk包,其toolchains是4.9版本,所以会提示上述的错误信息。这是我们只要修改下模块下的编译脚本即可,比如:
- 打开
imagepipeline/src/main/jni
目录下的Application.mk
文件 - 搜索
NDK_TOOLCHAIN_VERSION
关键字,将其值修改为你自己的toolchain版本,如NDK_TOOLCHAIN_VERSION = 4.9
补充: statik-webp模块也存在同样的问题,按照上述方式修改其模块的Application.mk文件即可。
三、 libwebp.so
文件重复,类似信息:
[armeabi-v7a/libwebp.so] fresco/imagepipeline/build/webpimage/armeabi-v7a/libwebp.so [armeabi-v7a/libwebp.so] fresco/imagepipeline/build/imagepipeline/armeabi-v7a/libwebp.so: Error: Duplicate resources
从上面的信息中我们看到,webpimage与imagepipeline同时编译了libwebp.so
包。定位到问题就好解决了。打开imagepipeline
的Android.mk
文件(imagepipeline/src/jni/imagepipeline目录),在文件末尾,注释到下面这行即可:
$(call import-module,libwebp-0.4.3)
即,修改为:
#$(call import-module,libwebp-0.4.3)
再次运行Demo,就可以看到可爱的运行界面啦。
以上即为本博主运到的问题,欢迎朋友们留言交流。