1. 程式人生 > >Linux下編譯VLC for Android原始碼總結

Linux下編譯VLC for Android原始碼總結

由於專案需要,需要一個在android平臺能夠支援RTSP協議的播放器,由於之前沒有android平臺的經驗,所以找了著名的video LAN的VLC播放器,更令人驚奇的是這款播放器居然還是完全開源的。在此向那些開源軟體的作者和組織致以崇高的敬意,是你們的存在使得計算機軟體產業蓬勃發展,你們幫助了很多囊中羞澀的個人和企業,讓他們也有機會用上高質量的軟體,同時不可避免的吸引了一批有志之士加入到你們的行業。

既然有現成的程式碼,所以就想編譯一下vlc for android的程式碼,經過幾天的折騰,終於編譯成功,並在android平臺上成功執行,期間查了很多資料,也遇到很到問題,在這裡做個總結,也真心希望會給大家一些幫助,如果大家有這方面的問題,歡迎給我留言,只要能力所及,有時間一定會給出答案,一起學習。

這幾天一直在做vlc ndroid原始碼編譯和移植的工作,首先說一下編譯android原始碼需要注意的幾個問題:

1.      Linux平臺,我用的是ubuntu12.04,編譯vlc for android原始碼時最好是在最新的平臺上,我之前在ubuntu10.04上編譯過,遇到過很多問題,其中的大部分問題都是軟體版本過低,不滿足要求,最後乾脆換到12.04,之前的很多問題就不會再現了。

2.      最好切換到root使用者來編譯,否則中間會出現很多permission denied類似的問題,就是沒有許可權執行一些指令碼和建立一些檔案

3.      編譯時不可避免的遇到一些問題,甚至出錯而導致編譯終止,此時一定要檢視打印出來的提示或者系統log,大多數問題都是很容易解決的,切忌心浮氣躁。

好了,下面說一下我具體的編譯步驟,網上很多網友也提到了,大體就是那些步驟,可能那些步驟都是針對之前的vlc for android版本的,略微會存在一些差別。
  在64位系統下要注意安裝32位系統的庫檔案,我發現我下載64位sdk檔案裡面的adb還是32位的,所以需要安裝32位的庫,否則64位的ubuntu是不能與執行32位程式的。

一:安裝android SDK, NDK, JDK三個工具,SDK是android系統用的,有些SDK還包含了eclipse,

NDK是用來編譯C/C++程式碼的,這樣使得android應用程式可能通過java來呼叫c/c++程式、JDK不用說,是java執行必須的環境。

下載最新的版本,並解壓到你的工作目錄下。

二:根據第一步解壓的三個工具,配置這三個工具的環境變數(PATH),方法很多,可以修改~/.bashrc /etc/profile等等,這一步一定要正確,否則系統會找不到這三個工具,後面的編譯會用到這幾個工具,當然也就會出錯了,因為系統預設不知道這幾個程式的位置,這跟windows下的環境變數一個道理。為了驗證環境變數是否配置正確,可以到別的目錄下執行這幾個程式,比如到根目錄下看能否執行ndk-build adb等程式,或者echo $PATH列印一下當前的環境變數並驗證。這一步很簡單,貌似說的廢話有點多。下面是我新增的環境變數,需要根據個人情況加以修改,XXXX代表以上三個程式的解壓目錄。

export PATH=XXXX /sdk/platform-tools:XXXX/android-ndk-r8e:$PATH

export JAVA_HOME=XXXX/jdk1.7.0_21

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

 三:下載vlc依賴的庫檔案和一些要用到的工具

Sudo apt-get install git-core

 Sudo apt-get install ant

 Sudo apt-get install libtool

 Sudo apt-get install cmake

 Sudo apt-get install autopoint
 

四:設定編譯時候要用到的變數,生成的Makefile會用到這些變數

export ANDROID_SDK=XXXX/sdk

export ANDROID_NDK=XXXX/android-ndk-r8e

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

export ANDROID_ABI=armeabi-v7a

注意:最後export ANDROID_ABI=armeabi-v7a這一步需要根據各個android平臺而定,可以執行adb shell 連結到android平臺,然後cat  /proc/cpuinfo 檢視一下自己的平臺是否為armv7的,是否支援neon,然後根據情況修改

五:獲取配置程式碼

 git clone git://git.videolan.org/vlc-ports/android.git 

然後進入到android目錄,執行./compile.sh,這個指令碼會執行所有的獲取vlc原始碼,各種依賴檔案,編譯所需要的工具, 最後編譯,生成so檔案,最後生成apk檔案。不過執行這個指令碼不出意外的會出現各種問題,要不然編譯這個android程式碼也太easy了。根據出錯的提示加以解決,大部分都是給出的檔案的下載連結錯誤,還有許可權問題。這個過程會經歷很長時間,一般幾個小時,因為下載的速度很慢,是指令碼所給連結的伺服器問題。可以將這些檔案下載好放到vlc/contrib/tarballs目錄中,大概包括下面這些安裝包

最後會BUILD SUCCESSFULL ,本來準備把編譯生成的動態庫so和apk檔案放到這裡供大家下載的,可是這些檔案都比較大,一般都好幾M有的幾十M,大家還是多折騰一下,只要下決心,最後肯定會編譯成功的。

閱讀(2892) | 評論(1) | 轉發(1) | 給主人留下些什麼吧!~~ 51_avatar_small.jpg

2013-05-28 10:12:26

共享一下背,網路硬碟那麼多

回覆 | 舉報 評論熱議