VLC多媒體播放器(英語:VLC media player,最初為VideoLAN Client,是VideoLAN計劃的開放源代碼多媒體播放器。)支援衆多音頻與視訊解碼器及檔案格式,并支援DVD影音CD光牒,VCD影音CD光牒及各類流協定,它是一個開源并且支援多種平台。還有一款 Android 與 iOS 平台上的全能多媒體開發架構Vitamio,這裡隻講VCL
官網:https://wiki.videolan.org/AndroidCompile#Get_VLC_Source
環境:
主控端:Windows XP
虛拟機:VirtualBox-4.3.12-93733-Win.exe
虛拟機系統:ubuntu14.04
環境搭建要求:
在Linux系統上,我安裝的是Ubuntu14.04
需要安裝的工具:
apache-ant (or ant), autoconf, automake, autopoint, cmake, gawk (or nawk), gcc, g++, libtool, git,
m4, patch, pkg-config, ragel, subversion, unzip.
提示:
1、如果是編譯Android-x86裝置,應該安裝yasm
一、Android SDK
1.建立一個名為android_tools的目錄
2.到官網上下載下傳最新的SDK http://developer.android.com/sdk/index.html
3.解壓到android目錄下
4.運作:tools/android (也可以運作: "tools/android update sdk -u -t platform,platform-tool,extra")
5.在tool目錄,安裝"SDK Platform Android 4.3, API 18",根據提示操作
注:VLC的工程屬性檔案project.properties的target=android-18一定是已經安裝的,否則會報問題三:
二、Android NDK
1.確定SDK已經安裝成功,NDK要r9 版本以上的,因為在compile.sh檔案中已經配置好了,如果版本過低會提示:You need the NDKv9 or later
2.下載下傳NDK for Linux http://developer.android.com/intl/zh-cn/tools/sdk/ndk/index.html
3.解壓到android_tools目錄下,確定和SDK放在同一目錄下
注意安裝SDK和NDK時一定要注意機器是64還是32位,下載下傳對應的版本安裝,否則會有一些莫名其妙的問題
SDK和NDK的安裝,都是解壓的目前目錄android_tools下
[email protected]:~/android_tools$ sudo tar -xvf /mnt/shared/android-ndk-r9d-linux-x86.tar.bz2
[email protected]:~/android_tools$ sudo unzip /mnt/shared/adt-bundle-linux-x86-20140702.zip
三、配置環境變量
Environment setup
在~/.bashrc最後添加 sudo gedit ~/.bashrc
export ANDROID_SDK=/home/dzt/android_tools/adt-bundle-linux-x86_64-20140321/sdk
export ANDROID_NDK=/home/dzt/android_tools/android-ndk-r9d
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
根據實際安裝路徑寫
設定環境變量等效:
[email protected]:~/android_tools$ sudo source ~/.bashrc
Devices在指令行中指定裝置,這個不是在檔案中配置的,每次編譯後退出再進來都需要重新設定
[email protected]:/home/dzt/android_vlc/android# export ANDROID_ABI=armeabi
[email protected]:/home/dzt/android_vlc/android# export NO_FPU=1
四、編譯
1.Get VLC Source
在之前建立的android目錄下運作以下指令
git clone git://git.videolan.org/vlc-ports/android.git
2.Compile
運作:sh compile.sh
[email protected]:/home/dzt/android_vlc/android# sh compile.sh
For an ARMv6 device without FPU:
$ export NO_FPU=1
For an ARMv5 device:
$ export NO_ARMV6=1
If you plan to use a release build, run 'compile.sh release'
VLC source not found, cloning
正克隆到 'vlc'...
remote: Counting objects: 426425, done.
remote: Compressing objects: 100% (80869/80869), done.
remote: Total 426425 (delta 343977), reused 425830 (delta 343585)
接收對象中: 100% (426425/426425), 237.54 MiB | 201.00 KiB/s, done.
處理 delta 中: 100% (343977/343977), done.
檢查連接配接... 完成。
Checking out files: 100% (3413/3413), done.
切換到一個新分支 'android'
Building tools
我下載下傳的是r9d
需要更新compile.sh檔案,如果NDK版本過低或過高會提示:You need the NDKv9 or later
此時就需要修改compile.sh檔案
[email protected]:/home/dzt/android_vlc/android# gedit compile.sh
# try to detect NDK version
REL=$(grep -o '^r[0-9]*.*' $ANDROID_NDK/RELEASE.TXT 2>/dev/null|cut -b2-)
echo $REL //列印出版本
case "$REL" in
9|9*) #主要修改這一行
GCCVER=4.8
CXXSTL="/"${GCCVER}
;;
7|8|*)
echo "You need the NDKv9 or later"
exit 1
;;
esac
相關庫的下載下傳:http://download.videolan.org/pub/contrib/有可能會進不去,我是用了VPN
依賴的一些庫,這些庫在編譯過程中會進行下載下傳,但有可能會下載下傳失敗,此時就需要手動去下載下傳,拷貝到這個目錄下。
[email protected]:~/android_vlc/android/vlc/contrib/tarballs$ ls
a52dec-0.7.4.tar.gz libebml-1.3.0.tar.bz2 LibVNCServer-0.9.9.tar.gz
ffmpeg-2763179.tar.gz libgcrypt-1.6.1.tar.bz2 libvorbis-1.3.4.tar.xz
flac-1.3.0.tar.xz libgpg-error-1.13.tar.bz2 libxml2-2.9.1.tar.gz
freetype-2.5.3.tar.gz libgsm_1.0.13.tar.gz live.2014.05.27.tar.gz
fribidi-0.19.6.tar.bz2 libiconv-1.14.tar.gz nettle-2.6.tar.gz
gmp-6.0.0.tar.bz2 libmad-0.15.1b.tar.gz openjpeg-1.5.0.tar.gz
gnutls-3.1.25.tar.xz libmatroska-1.4.1.tar.bz2 opus-1.1.tar.gz
jpegsrc.v9a.tar.gz libmodplug-0.8.8.5.tar.gz postproc-git.tar.gz
libass-0.11.2.tar.gz libmpeg2-0.5.1.tar.gz speexdsp-git.tar.gz
libdvbpsi-1.2.0.tar.bz2 libogg-1.3.2.tar.xz speex-git.tar.gz
libdvdcss-1.2.13.tar.bz2 libpng-1.6.12.tar.xz taglib-1.9.1.tar.gz
libdvdnav-git.tar.xz libssh2-1.4.3.tar.gz zlib-1.2.8.tar.gz
libdvdread-4.9.9.tar.bz2 libtheora-1.1.1.tar.xz
以上庫的下載下傳位址: http://pan.baidu.com/s/1jGJukq6
在編譯過程中遇到的問題整理
問題一
=== configuring in gettext-runtime (/home/dzt/android_vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gettext/gettext-runtime)
configure: running /bin/bash ./configure --disable-option-checking '--prefix=/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi' '--datarootdir=/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/share' '--includedir=/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/include' '--libdir=/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/lib' '--build=i686-linux-gnu' '--host=arm-linux-androideabi' '--target=arm-linux-androideabi' '--program-prefix=' '--enable-static' '--disable-shared' '--disable-dependency-tracking' '--with-pic' '--disable-java' '--disable-native-java' '--without-emacs' 'build_alias=i686-linux-gnu' 'host_alias=arm-linux-androideabi' 'target_alias=arm-linux-androideabi' 'CC=arm-linux-androideabi-gcc --sysroot=/home/dzt/android_vlc/android/android-ndk-r9d/platforms/android-9/arch-arm' 'CFLAGS= -g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2 -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/include -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/include -g' 'LDFLAGS= -L/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/lib' 'CPPFLAGS= -g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2 -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/include -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/include' 'CXX=arm-linux-androideabi-g++ --sysroot=/home/dzt/android_vlc/android/android-ndk-r9d/platforms/android-9/arch-arm' 'CXXFLAGS= -g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2 -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/include -I/home/dzt/android_vlc/android/android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I/home/dzt/android_vlc/android/vlc/contrib/arm-linux-androideabi/include -g' --cache-file=/dev/null --srcdir=.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-linux-androideabi-strip... arm-linux-androideabi-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for arm-linux-androideabi-gcc... arm-linux-androideabi-gcc --sysroot=/home/dzt/android_vlc/android/android-ndk-r9d/platforms/android-9/arch-arm
checking whether the C compiler works... no
configure: error: in `/home/dzt/android_vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gettext/gettext-runtime':
configure: error: C compiler cannot create executables
See `config.log' for more details
configure: error: ./configure failed for gettext-runtime
make: *** [.gettext] 錯誤 77
fix:
由于我的機器的32位的,我用了64位的軟體,把SDK和NDK換成32位的就沒這個問題了。
問題二:
checking whether byte ordering is bigendian... no
checking for pthread_create in -lpthread... no
configure: error: pthread needed
make: *** [.dvdnav] 錯誤 1
Fix:
我按照上面的步驟重新下載下傳一遍就沒有報這個錯誤。
我之前是
第一步git clone git://git.videolan.org/vlc-ports/android.git
再做後面的事,是以才報了這個問題,我全部删除後再按上面的步驟執行相當順利。
問題三:
-set-mode-check:
-set-debug-files:
-check-env:
[checkenv] Android SDK Tools Revision 23.0.2
[checkenv] Installed at /home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk
-setup:
[echo] Project Name: VLC
[gettype] Project Type: Application
-set-debug-mode:
-debug-obfuscation-check:
-pre-build:
-build-setup:
[getbuildtools] Using latest Build Tools: 20.0.0
[echo] Resolving Build Target for VLC...
BUILD FAILED
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-19'
Total time: 6 seconds
make: *** [vlc-android/bin/VLC-debug.apk] 錯誤 1
rm android-libs/libmedia.c android-libs/libutils.c android-libs/libstagefright.c android-libs/libbinder.c
[email protected]:/home/dzt/android_vlc/android#
Fix:
出錯原因
BUILD FAILED
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-19'
因為我沒有安裝"android-19"的SDK,
解決辦法有兩種(經實驗第一種方法不可行)
1、修改工程屬性檔案vlc-android/project.properties檔案
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-18
android.library.reference.1=../java-libs/appcompat
android.library.reference.2=../java-libs/SlidingMenu
android.library.reference.3=../java-libs/WheelView
2、安裝"android-19"SDK即可,運作以下指令
[email protected]:/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk# tools/android
出現如下畫面,下載下傳你需要的SDK即可,但不一定都能下載下傳,因為最近連google都無法連上,你懂的
問題四:
BUILD FAILED
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:601: The following error occurred while executing this line:
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-19'
Total time: 11 seconds
make: *** [vlc-android/bin/VLC-debug.apk] 錯誤 1
rm android-libs/libmedia.c android-libs/libutils.c android-libs/libstagefright.c android-libs/libbinder.c
Fix:
這裡根據自己所安裝的SDK包進行更改
android/vlc-android/project.properties
還有java-libs目錄下,最好是查找出來,修改所有的android-x,包括AndroidManifest.xml檔案
[email protected]:~/android_vlc/android/java-libs$ find ./ -name project.properties
./SlidingMenu/project.properties
./WheelView/project.properties
./appcompat/project.properties
android/java-libs/SlidingMenu/project.properties
android/java-libs/WheelView/project.properties
android/java-libs/appcompat/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中可以設定
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="18" />,重新執行編譯指令。
如果還是報錯就建議安裝提示的SDK最簡單
問題五:
-compile:
[javac] Compiling 95 source files to /home/dzt/android_vlc/android/vlc-android/bin/classes
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:64: 找不到符号
[javac] 符号: 類 Presentation
[javac] 位置: 軟體包 android.app
[javac] import android.app.Presentation;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:80: 找不到符号
[javac] 符号: 類 MediaRouter
[javac] 位置: 軟體包 android.media
[javac] import android.media.MediaRouter;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:127: 找不到符号
[javac] 符号: 類 MediaRouter
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity
[javac] private MediaRouter mMediaRouter;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:128: 軟體包 MediaRouter 不存在
[javac] private MediaRouter.SimpleCallback mMediaRouterCallback;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2141: 找不到符号
[javac] 符号: 類 Presentation
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity
[javac] private final class SecondaryDisplay extends Presentation {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/audio/AudioService.java:672: 找不到符号
[javac] 符号: 變量 JELLY_BEAN
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2140: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:245: 找不到符号
[javac] 符号: 變量 JELLY_BEAN
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:496: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:554: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1024: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1686: 找不到符号
[javac] 符号: 變量 JELLY_BEAN
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2086: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2113: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/libvlc/LibVLC.java:103: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR2
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/libvlc/LibVlcUtil.java:63: 找不到符号
[javac] 符号: 變量 JELLY_BEAN
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/libvlc/LibVlcUtil.java:68: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/libvlc/LibVlcUtil.java:73: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR2
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/libvlc/LibVlcUtil.java:78: 找不到符号
[javac] 符号: 變量 KITKAT
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/audio/AudioService.java:733: 找不到符号
[javac] 符号: 變量 bigContentView
[javac] 位置: 類 android.app.Notification
[javac] notification.bigContentView = view_expanded;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/BrowserAdapter.java:149: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/DirectoryAdapter.java:468: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR1
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:251: 找不到符号
[javac] 符号: 類 MediaRouter
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity
[javac] mMediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:251: 找不到符号
[javac] 符号: 變量 MEDIA_ROUTER_SERVICE
[javac] 位置: 類 android.content.Context
[javac] mMediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:252: 軟體包 MediaRouter 不存在
[javac] mMediaRouterCallback = new MediaRouter.SimpleCallback() {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:271: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] setContentView(mPresentation == null ? R.layout.player : R.layout.player_remote_control);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:388: 運算符 != 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation != null && !mSettings.getBoolean("enable_secondary_display_hardware_acceleration", false)) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:411: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation == null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:502: 運算符 != 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation != null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:504: 找不到符号
[javac] 符号: 方法 dismiss()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] mPresentation.dismiss();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:559: 找不到符号
[javac] 符号: 變量 MediaRouter
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity
[javac] mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_LIVE_VIDEO, mMediaRouterCallback);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:696: 找不到符号
[javac] 符号: 變量 JELLY_BEAN_MR2
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1030: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation == null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1034: 找不到符号
[javac] 符号: 方法 getWindow()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] sw = mPresentation.getWindow().getDecorView().getWidth();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1035: 找不到符号
[javac] 符号: 方法 getWindow()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] sh = mPresentation.getWindow().getDecorView().getHeight();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1041: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation == null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1115: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation == null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1206: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (coef > 2 && mPresentation == null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1642: 運算符 != 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation != null) mOverlayBackground.setVisibility(View.VISIBLE);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1668: 運算符 != 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation != null) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1692: 找不到符号
[javac] 符号: 變量 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
[javac] 位置: 類 android.view.View
[javac] layout = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1692: 找不到符号
[javac] 符号: 變量 SYSTEM_UI_FLAG_LAYOUT_STABLE
[javac] 位置: 類 android.view.View
[javac] layout = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1692: 不相容的類型
[javac] 找到: boolean
[javac] 需要: int
[javac] layout = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:1705: 運算符 == 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation == null)
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2092: 軟體包 MediaRouter 不存在
[javac] MediaRouter.RouteInfo route = mMediaRouter.getSelectedRoute(
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2093: 找不到符号
[javac] 符号: 變量 MediaRouter
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity
[javac] MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2101: 找不到符号
[javac] 符号: 方法 setOnDismissListener(android.content.DialogInterface.OnDismissListener)
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] mPresentation.setOnDismissListener(mOnDismissListener);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2103: 找不到符号
[javac] 符号: 方法 show()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] mPresentation.show();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2104: 找不到符号
[javac] 符号: 類 InvalidDisplayException
[javac] 位置: 接口 android.view.WindowManager
[javac] } catch (WindowManager.InvalidDisplayException ex) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2123: 運算符 != 不能應用于 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay,<nulltype>
[javac] if (mPresentation != null) mPresentation.dismiss();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2123: 找不到符号
[javac] 符号: 方法 dismiss()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] if (mPresentation != null) mPresentation.dismiss();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2133: 運算符 == 不能應用于 android.content.DialogInterface,org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] if (dialog == mPresentation) {
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2154: 找不到符号
[javac] 符号: 方法 setOwnerActivity(android.app.Activity)
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] setOwnerActivity((Activity) context);
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2181: 找不到符号
[javac] 符号: 方法 getOwnerActivity()
[javac] 位置: 類 org.videolan.vlc.gui.video.VideoPlayerActivity.SecondaryDisplay
[javac] VideoPlayerActivity activity = (VideoPlayerActivity)getOwnerActivity();
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java:2164: 方法不會覆寫或實作超類型的方法
[javac] @Override
[javac] ^
[javac] /home/dzt/android_vlc/android/vlc-android/src/org/videolan/vlc/util/AndroidDevices.java:70: 找不到符号
[javac] 符号: 變量 JELLY_BEAN
[javac] 位置: 類 android.os.Build.VERSION_CODES
[javac] (VERSION.SDK_INT <= VERSION_CODES.JELLY_BEAN)));
[javac] ^
[javac] 56 錯誤
BUILD FAILED
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:720: The following error occurred while executing this line:
/home/dzt/android_tools/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:734: Compile failed; see the compiler error output for details.
Total time: 26 seconds
make: *** [vlc-android/bin/VLC-debug.apk] 錯誤 1
rm android-libs/libmedia.c android-libs/libutils.c android-libs/libstagefright.c android-libs/libbinder.c
[email protected]:/home/dzt/android_vlc/android#
Fix:
使用最新的SDK就可以了
總結:
在編譯的過程中碰到很多問題,有問題可以先百度一下,看别人有沒有碰到類似的情況,一般都能在網上找到答案,需要具體問題具體分析,如果找不到要想下自己執行的步驟跟官網上的是否一緻;
實在沒辦法就按步驟多試幾遍也許能行。