一、準備工作
安裝所有必需的軟件
#
apt-get install apache-ant(or ant) autoconf automake autopoint libtool gawk(or nawk) gcc g++ pkg-config cmake patch subversion git
ant工具在最後編譯android源碼生成apk文件會用到,所以需要安裝。並且這裏需要1.8及以上版本(apt-get
install ant1.8)。如果是手動安裝ant,需要在環境變量中配置好ant的path,或者在進行編譯之前在命令行執行export
PATH=$PATH:/xxx/ant/bin,保證可以在執行編譯的命令行中執行ant命令即可。
除了以上軟件/工具之外,還有兩個必須的工具,就是Android的SDK和NDK。SDK和NDK的安裝方法就不再詳述了,網上有很多安裝方法的文章。這裏需要注意的是,需要安裝android4.0及以上的一個SDK包,vlc-
android(0.0.5)編譯時需要4.0的界面元素。
當然爲了在Eclipse中開發C/C++,還可以安裝 CDT。
二、環境變量配置
配置ANDROID_SDK
# export ANDROID_SDK=/root/program/android-sdk-linux(請把path改爲自己的路徑)
配置ANDROID_NDK
# export ANDROID_NDK=/root/program/android-ndk-linux
配置PATH變量
# export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
配置jdk(不在詳述)
配置NEON相關信息(一般編譯的時候,會編譯NO_NEON和支持NEON兩種包出來)
# export NO_NEON=1
如果設備不支持NEON技術,請務必配置此項;如果機器支持NEON技術,可以不用配置此項。關於NEON的簡單信息:根據維基百科英文版ARM架構
中的介紹,Cortex-A8架構的設備,均支持NEON技術,而在Cortex-A9架構的設備中,則是可選的。更多信息,請參考:
http://www.arm.com/zh/products/processors/technologies/neon.php
http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29
配置ABI
# export ANDROID_ABI=armeabi-v7a
三、獲取源碼
# git clone git://git.videolan.org/vlc-ports/android.git
源碼下載完成後,需將源碼直接放置在根目錄下,否則後續的編譯過程中會出現找不到庫文件的錯誤。
四、編譯源碼
下載完成後,如果沒有進行前面的環境變量的配置,進入android文件夾將compile.sh文件中相應的環境變量的路徑信息修改爲自己的pash,保存後執行sh
compile.sh,開始自動編譯。
在編譯過程中會下載各種vlc-android需要的依賴包,此過程較漫長,每次如果遇到下載失敗,可以重新執行該命令。
compile.sh的執行過程,就是整個的編譯過程,大致過程如下:
a. 下載vlc代碼:compile.sh的42行 git
clone git://git.videolan.org/vlc.git vlc。
b. 並check
out vlc代碼到e75d2024這個版本:compile.sh的44行 git
checkout -B android
${TESTED_HASH}
c. 編譯所有需要的第三方庫,先下載再編譯,這個過程需要很長時間,還可能下載不成
功,如果無法下載某些庫,就手動下載下來,並放到這個目錄下即可:
android/vlc/contrib/tarballs。
d. vlc的Configuring。
e. vlc的編譯。
f. 編譯android部分代碼並鏈接vlc
so庫。
附:編譯過程中可能遇到的問題
1,checking
host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized
configure: error: /bin/bash autotools/config.sub arm-linux-androideabi failed
解決辦法:到http://git.savannah.gnu.org /gitweb/?p=config.git;a=tree下載最新的包並解壓得到config.guess和config.sub兩個文件,將此兩個文件拷貝到/usr/share/misc目錄下覆蓋,重新執行編譯命令。
2,jni/libvlcjni.c: In function 'read_track_info_internal':
jni/libvlcjni.c:797:57: error: 'libvlc_media_track_info_t' has no member named 'psz_language'
jni/libvlcjni.c:803:69: error: 'struct ' has no member named 'f_frame_rate'
解決辦法:找到文件android/vlc-android/jni /libvlcjni.c,並將該兩行注釋掉即可,然後重新執行編譯命令。
3, BUILD
FAILED
/androidApp/android-sdk-linux/tools/ant/build.xml:569: The following error occurred while executing this line:
/androidApp/android-sdk-linux/tools/ant/build.xml:517: Unable to resolve project target 'android-16'
解決辦法:這里根據自己所安裝的SDK包進行更改android/vlc- android/project.properties, android/java-libs/SlidingMenu/project.properties, android/java-libs/ActionBarSherlock/project.properties文件中的 android-x,但是對於vlc-android0.0.5版本的一定是4.0及以上版本(因爲0.0.5版本的界面需要4.0及以上的特性)所以這裏一定是14及以上,否則還會報錯error: Error retrieving parent for item: No resource found that matches the given name'android:Widget.Holo.ActionBar'.
編譯時只是這裏需要4.0這個包的界面特性,但是不影響最終生成的APK的運行目標(只要不調用4.0及以上的API),比如我這裏在AndroidManifest.xml中可以設置
重新執行編譯命令。
4,導入Eclipse時注意除了vlc-android工程外還需要導入另外兩個依賴的工程即android/java-libs目錄下的SlidingMenu和ActionBarSherlock兩個工程,否者會報錯。
如果編譯過程中出現其它錯誤,請根據錯誤提示安裝對應的工具(或者在執行編譯之前就把第一步提到的工具全部安裝好),部分錯誤也可參考
http://blog.chinaunix.net/uid-25885064-id-3357019.html。
最後提示BUILD
SUCESSFUL,說明編譯成功了,在android/vlc-android/bin目錄下會生成一個apk文件,可以直接拿來安裝。如果想自己調整界面部分,或者添加、修改其它功能,可以直接把項目導入eclipse進行開發。
參考文獻:http://wiki.videolan.org /AndroidCompile