在继续分析 Fresco 中圆角实现原理之前,需要先查看分析 Fresco 的源码,因此本文记录在 AndroidStudio 中配置 NDK 开发环境并编译 Fresco 源码。

有两种方法可以查看 Fresco 的源码,第一种是比较常见的,在 AndroidStudio 中通过 Gradle 的 compile 导入 Fresco,然后就能查看 Fresco 的源码了,第二种是通过 下载 github 上的 Fresco 源码,在本地编译使用。两种方法并没有太大区别,稍有不同的就是本地编译的方式可以查看官方给出的 demo 效果并且项目目录结构比较清晰,方便整理。为了持续深入研究 Fresco 源码,于是选择第二种方式,在本地编译 Fresco,下面记录了本地编译的过程和遇到的问题以及解决办法

使用工具:

  • OS X 10.11
  • AndroidStudio 1.5.1
  • Fresco 0.7

配置NDK

在之前版本的 AndroidStudio (大概是1.3之前)中对 NDK 的支持不是很完善,需要手动下载 Android NDK 并进行相关配置,而在之后的版本中逐渐完善了对 NDK 的支持,可以在 AndroidStudio 的 SDK Manager 中直接下载 NDK 并进行相关配置

下载 NDK

在 AndroidStudio 中首先打开 SDK Manager,找到 SDK Tools,可以看到如下图所示的 Android NDK, 如果之前没有勾选,说明还没有下载 NDK, 需要勾选然后下载

\"这里写图片描述\"

等待下载完成,就可以在sdk目录中看到下载的 ndk 的目录 ndk-bundle:

\"这里写图片描述\"

配置环境变量

mac下的环境变量在当前用户目录的 .bash_profile 文件中,因此需要在这个文件中添加 ndk 的环境变量,步骤如下:

  • 定位到.bashprofile文件 启动终端Terminal,一般默认启动时就是在当前用户的目录,所以接下来直接输入 open .bashprofile 注:如果是第一次使用,可能还没有这个文件,所以需要先创建这个文件 touch .bashprofile open .bashprofile

  • 添加 NDK 的路径到环境变量中 添加如下内容到.bash_profile文件中:

    export ANDROID_SDK_ROOT=/Users/TC/Dev/Android/sdk export ANDROID_NDK_ROOT=/Users/TC/Dev/Android/sdk/ndk-bundle export ANDROID_TOOL=/Users/TC/Dev/Android/sdk/platform-tools export PATH=$ PATH:$ ANDROID_SDK_ROOT export PATH=$PATH:$ANDROID_NDK_ROOT export PATH=$PATH:$ANDROID_TOOL

从上面的内容可以看到,其中 ANDROIDSDKROOT 这个变量指向的是 sdk 的文件夹路径,而 ANDROIDNDKROOT 变量指向的是 ndk 的文件夹路径,然后还有个ANDROIDTOOL 指向的是 platform-tools 文件夹的路径,接下来保存并退出,在终端执行更新的命令: source .bashprofile – 验证是否添加成功 在终端执行 ndk-build 如果有反应,则说明配置成功,如下图:

\"这里写图片描述\"

编译Fresco

配置好 NDK 后,就可以开始编译 Fresco 源码了,首先从 从github下载Fresco源码 下载完成,开始在 AndroidStudio 中导入项目,首先打开AndroidStudio,选择 File -> Open -> 选择 Fresco 文件夹,等待 AndroidStudio 导入并编译,在编译的时候可能会出现一些问题,下面是我遇到的一个问题,以及解决办法:

错误描述:

错误原因:ndk-build 路径错误导致找不到 ndk-build 文件夹

解决办法:

  • 定位到 Fresco的文件夹下 -> imagepipeline 目录 -> build.gradle 文件
  • 用文本编辑器打开
  • 找到如下代码:

    def getNdkBuildName() {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    return "ndk-build.cmd"
    }else {
    return "ndk-build"
    }
    }

  • 修改为如下:

    def getNdkBuildName() {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    return "ndk-build.cmd"
    } else { //将 ndk-build 的路径修改为绝对路径
    return "/Users/TC/Dev/Android/sdk/ndk-bundle/ndk-build"
    }
    }

按照以上步骤修改,然后保存,在 AndroidStudio 中 Rebuild 一下,基本就能解决这个问题。

完成以上操作,就能顺利的编译 Fresco 的源码了

参考资料:

Mac可设置环境变量的位置,查看和添加环境变量

Mac os How to build?

Windows os How to build?

发表评论

电子邮件地址不会被公开。 必填项已用*标注