AndroidStudio中配置NDK開發環境和編譯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.0

配置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 的環境變量,步驟如下:

  • 定位到.bash_profile文件
    啓動終端Terminal,一般默認啓動時就是在當前用戶的目錄,所以接下來直接輸入
open .bash_profile

注:如果是第一次使用,可能還沒有這個文件,所以需要先創建這個文件

touch .bash_profile
open .bash_profile
  • 添加 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

從上面的內容可以看到,其中 ANDROID_SDK_ROOT 這個變量指向的是 sdk 的文件夾路徑,而ANDROID_NDK_ROOT變量指向的是 ndk 的文件夾路徑,然後還有個ANDROID_TOOL指向的是platform-tools文件夾的路徑,接下來保存並退出,在終端執行更新的命令:

source .bash_profile
  • 驗證是否添加成功
    在終端執行
ndk-build

如果有反應,則說明配置成功,如下圖:
這裏寫圖片描述

編譯Fresco

配置好 NDK 後,就可以開始編譯 Fresco 源碼了,首先從 從github下載Fresco源碼 下載完成,開始在 AndroidStudio 中導入項目,首先打開AndroidStudio,選擇 File->Open-> 選擇 Fresco 文件夾,等待 AndroidStudio 導入並編譯,在編譯的時候可能會出現一些問題,下面是我遇到的一個問題,以及解決辦法:

錯誤描述:

Execution failed for task ‘:imagepipeline:ndk_build_gifimage’,
> A problem occurred starting process ’ command’ ndk-build”

錯誤原因: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?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章