我想参与VLC for Android项目。所以首先我需要编译这个项目,我按照https://wiki.videolan.org/AndroidCompile/上的所有步骤进行操作,但是当我最后执行sh compile.sh -a armeabi-v7a
时出现此错误:
contribs: make failed
Error:Execution failed for task ':libvlc:buildDebugARMv5'. > Process 'command './compile-libvlc.sh'' finished with non-zero exit value 1
我正在使用Android Studio。
更新
所以我下载了一个ubuntu 12.04 vm,我已经构建了VLC android项目。出现同样的错误,但它也告诉我,我的gettext是旧的,它应该是0.19.1版本或更高版本。 所以我退出VM并在我的真机上检查了我的gettext版本(0.18.4),我把gettext更新了,它知道了0.19.4版本。
我构建了项目并且contribs: make failed
错误消失了但是这知道了新的错误:
FAILURE: Build failed with an exception.
* Where:
Build file '/home/edouard/3DSoundLabs/android/android/build.gradle' line: 16
* What went wrong:
A problem occurred evaluating root project 'android'.
> Failed to apply plugin [id 'android-sdk-manager']
> Specified SDK directory './3DSoundLabs/android/android-sdk-linux/' in 'local.properties' is not found.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
这是我的local.properties,它似乎很好,我不明白
local.properties:
sdk.dir=./3DSoundLabs/android/android-sdk-linux/
ndk.dir=./3DSoundLabs/android/android-ndk-r10e/
已决定!!
好吧,对于第二个错误,它只是一个路径问题,我的坏。
更正:
sdk.dir=../android-sdk-linux/
ndk.dir=../android-ndk-r10e/
所以主要的错误是我的旧版本的gettext版本,而且我没有在begening中找到它,因为日志没有说明这个问题。
答案 0 :(得分:16)
你还没有提到你正在使用的Ubuntu的哪个位版本和VLC AndroidComile wiki说
这些工具的最新版本。
所以我继续在64位Ubuntu 14.04上进行测试。
已安装的最低要求包:
sudo apt-get update
sudo apt-get install ant autoconf automake autopoint cmake gawk gcc g++ libtool m4 patch pkg-config libprotobuf-dev libprotobuf-c0-dev protobuf-c-compiler ragel subversion unzip
导航到VLC Android目录并运行:
./compile.sh
*** No ANDROID_ABI defined architecture: using ARMv7
inflating: ...
...
:wrapper
BUILD SUCCESSFUL
Total time: 4.992 secs
Downloading https://services.gradle.org/distributions/gradle-2.2.1-bin.zip
...........................................................................
Unzipping /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27/gradle-2.2.1-bin.zip to /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27
Set executable permissions for: /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27/gradle-2.2.1/bin/gradle
------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_80 (Oracle Corporation 24.80-b11)
OS: Linux 3.13.0-53-generic amd64
VLC source not found, cloning
Cloning into 'vlc'...
VLC source found
Configuring
Lots of configuration and make logs
...
make[1]: Leaving directory `/<...>/vlc/android/vlc/extras/tools/cmake'
touch .cmake
You are ready to build VLC and its contribs
Bootstraping
NOTE: GNU gettext appears to be missing or out-of-date.
Please install or update GNU gettext.
Also check if you have cvs, a dependency of autopoint.
Otherwise, you will not be able to build a source tarball.
==============================================================
generating modules/**/Makefile.am
.....
+ autoreconf --install --force --verbose -I m4
autoreconf: Entering directory `.'
autoreconf: running: true --force
....
bin/Makefile.am: installing 'autotools/depcomp'
autoreconf: Leaving directory `.'
+ rm -f po/Makevars.template
+ rm -f stamp-h*
+ set +x
Successfully bootstrapped
Building the contribs
Generating EGL pkg-config file
Generating GLESv2 pkg-config file
Guessing build system... x86_64-linux-gnu
Creating configuration file... config.mak
Bootstrap completed.
Run "make" to start compilation.
Other targets:
* make install same as "make"
* make prebuilt fetch and install prebuilt binaries
* make list list packages
* make fetch fetch required source tarballs
* make fetch-all fetch all source tarballs
* make distclean clean everything and undo bootstrap
* make mostlyclean clean everything except source tarballs
* make clean clean everything
* make package prepare prebuilt packages
curl -f -L -- "http://downloads.videolan.org/pub/contrib/a52dec-0.7.4.tar.gz" > "../../contrib/tarballs/a52dec-0.7.4.tar.gz"
Lots of fetching and cloning
...
Lots of configuration and make logs
...
Libraries have been installed in:
/<...>/vlc/android/vlc/contrib/arm-linux-androideabi/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[4]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
make[3]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
make[2]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
make[1]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
touch .gmp
contribs: make failed
make保持失败,但每次使用不同的lib,我不得不多次重复./compile.sh
命令。但在与zvbi
make[4]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
make[3]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
make[2]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
make[1]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
touch .zvbi
contribs: make failed
这次出现了不同的错误消息:
mkdir -p -- /<...>/vlc/android/vlc/contrib/arm-linux-androideabi/share/aclocal && cd libgpg-error && autoreconf -fiv -I/<...>/vlc/android/vlc/contrib/arm-linux-androideabi/share/aclocal
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autopoint: *** The AM_GNU_GETTEXT_VERSION declaration in your configure.ac
file requires the infrastructure from gettext-0.19.3 but this version
is older. Please upgrade to gettext-0.19.3 or newer.
autopoint: *** Stop.
autoreconf: autopoint failed with exit status: 1
make: *** [.gpg-error] Error 1
contribs: make failed
$ gettext --version
gettext (GNU gettext-runtime) 0.18.3
在撰写本文时,即使vivid(v0.19.2-2)也没有那么高级别的gettext。所以,我作弊并手动降级所需的gettext版本为0.18:
$ grep --include=configure.ac -rn AM_GNU_GETTEXT_VERSION .
./vlc/configure.ac:439:AM_GNU_GETTEXT_VERSION([0.19.2])
./vlc/contrib/contrib-android-arm-linux-androideabi/gnutls/configure.ac:148:AM_GNU_GETTEXT_VERSION([0.18])
./vlc/contrib/contrib-android-arm-linux-androideabi/libgpg-error/configure.ac:158:AM_GNU_GETTEXT_VERSION([0.19.3])
还有一个./compile.sh
和宾果:
[armeabi-v7a] SharedLibrary : libvlcjni.so
[armeabi-v7a] Install : libvlcjni.so => libs/armeabi-v7a/libvlcjni.so
rm jni/../../android-libs/libbinder.c jni/../../android-libs/libui.c jni/../../android-libs/libutils.c jni/../../android-libs/libstagefright.c jni/../../android-libs/libcutils.c jni/../../android-libs/libhardware.c jni/../../android-libs/libmedia.c
make: Leaving directory `/<...>/vlc/android/libvlc'
Download https://jcenter.bintray.com/com/android/tools/build/gradle/1.2.1/gradle-1.2.1.pom
...
> Configuring > 0/3 projects > root project
然后它永远挂在那里(可能是因为代理配置中存在冲突)。 ps x
透露:
/bin/sh ./compile.sh
java -Dorg.gradle.appname=gradlew -classpath /<...>/vlc/android/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain assembleVanillaARMv7Debug
所以,我决定取消 Ctrl + C ./compile.sh
并尝试将项目导入Android Studio。
推出AS并选择“打开现有的Android Studio项目”。 AS还从jcenter和宾果游戏中获取了一些包(这次是真的)!
Information:Gradle tasks [:libvlc:generateDebugSources, :libvlc:generateDebugAndroidTestSources, :vlc-android:generateChromeARMv5DebugSources, :vlc-android:generateChromeARMv5DebugAndroidTestSources]
:libvlc:preBuild UP-TO-DATE
:libvlc:preDebugBuild UP-TO-DATE
:libvlc:checkDebugManifest
:libvlc:prepareDebugDependencies
:libvlc:compileDebugAidl
:libvlc:compileDebugRenderscript
:libvlc:generateDebugBuildConfig
:libvlc:generateDebugAssets UP-TO-DATE
:libvlc:mergeDebugAssets
:libvlc:generateDebugResValues
:libvlc:generateDebugResources
:libvlc:packageDebugResources
:libvlc:processDebugManifest
:libvlc:processDebugResources
:libvlc:generateDebugSources
:libvlc:preDebugAndroidTestBuild UP-TO-DATE
:libvlc:prepareDebugAndroidTestDependencies
:libvlc:compileDebugAndroidTestAidl
:libvlc:compileLint
:libvlc:copyDebugLint UP-TO-DATE
:libvlc:mergeDebugProguardFiles
:libvlc:processDebugJavaRes UP-TO-DATE
:libvlc:compileDebugJava
Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/LibVlcUtil.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/VLCObject.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:libvlc:packageDebugJar
:libvlc:compileDebugNdk UP-TO-DATE
:libvlc:packageDebugJniLibs
:libvlc:packageDebugLocalJar UP-TO-DATE
:libvlc:packageDebugRenderscript UP-TO-DATE
:libvlc:bundleDebug
:libvlc:compileDebugSources
:libvlc:assembleDebug
:libvlc:processDebugAndroidTestManifest
:libvlc:compileDebugAndroidTestRenderscript
:libvlc:generateDebugAndroidTestBuildConfig
:libvlc:generateDebugAndroidTestAssets UP-TO-DATE
:libvlc:mergeDebugAndroidTestAssets
:libvlc:generateDebugAndroidTestResValues
:libvlc:generateDebugAndroidTestResources
:libvlc:mergeDebugAndroidTestResources
:libvlc:processDebugAndroidTestResources
:libvlc:generateDebugAndroidTestSources
:vlc-android:preBuild UP-TO-DATE
:vlc-android:preChromeARMv5DebugBuild UP-TO-DATE
:vlc-android:checkChromeARMv5DebugManifest
:libvlc:copyReleaseLint UP-TO-DATE
:libvlc:mergeReleaseProguardFiles
:libvlc:preReleaseBuild UP-TO-DATE
:libvlc:checkReleaseManifest
:libvlc:prepareReleaseDependencies
:libvlc:compileReleaseAidl
:libvlc:compileReleaseRenderscript
:libvlc:generateReleaseBuildConfig
:libvlc:generateReleaseAssets UP-TO-DATE
:libvlc:mergeReleaseAssets
:libvlc:generateReleaseResValues
:libvlc:generateReleaseResources
:libvlc:packageReleaseResources
:libvlc:processReleaseManifest
:libvlc:processReleaseResources
:libvlc:generateReleaseSources
:libvlc:processReleaseJavaRes UP-TO-DATE
:libvlc:compileReleaseJava
Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/LibVlcUtil.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/VLCObject.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:libvlc:packageReleaseJar
:libvlc:compileReleaseNdk UP-TO-DATE
:libvlc:packageReleaseJniLibs
:libvlc:packageReleaseLocalJar UP-TO-DATE
:libvlc:packageReleaseRenderscript UP-TO-DATE
:libvlc:bundleRelease
:vlc-android:preChromeARMv5ReleaseBuild UP-TO-DATE
:vlc-android:preChromeARMv6fpuDebugBuild UP-TO-DATE
:vlc-android:preChromeARMv6fpuReleaseBuild UP-TO-DATE
:vlc-android:preChromeARMv6nofpuDebugBuild UP-TO-DATE
:vlc-android:preChromeARMv6nofpuReleaseBuild UP-TO-DATE
:vlc-android:preChromeARMv7DebugBuild UP-TO-DATE
:vlc-android:preChromeARMv7ReleaseBuild UP-TO-DATE
:vlc-android:preChromeARMv8DebugBuild UP-TO-DATE
:vlc-android:preChromeARMv8ReleaseBuild UP-TO-DATE
:vlc-android:preChromeMIPS64DebugBuild UP-TO-DATE
:vlc-android:preChromeMIPS64ReleaseBuild UP-TO-DATE
:vlc-android:preChromeMIPSDebugBuild UP-TO-DATE
:vlc-android:preChromeMIPSReleaseBuild UP-TO-DATE
:vlc-android:preChromeX86DebugBuild UP-TO-DATE
:vlc-android:preChromeX86ReleaseBuild UP-TO-DATE
:vlc-android:preChromeX86_64DebugBuild UP-TO-DATE
:vlc-android:preChromeX86_64ReleaseBuild UP-TO-DATE
:vlc-android:preTvARMv5DebugBuild UP-TO-DATE
:vlc-android:preTvARMv5ReleaseBuild UP-TO-DATE
:vlc-android:preTvARMv6fpuDebugBuild UP-TO-DATE
:vlc-android:preTvARMv6fpuReleaseBuild UP-TO-DATE
:vlc-android:preTvARMv6nofpuDebugBuild UP-TO-DATE
:vlc-android:preTvARMv6nofpuReleaseBuild UP-TO-DATE
:vlc-android:preTvARMv7DebugBuild UP-TO-DATE
:vlc-android:preTvARMv7ReleaseBuild UP-TO-DATE
:vlc-android:preTvARMv8DebugBuild UP-TO-DATE
:vlc-android:preTvARMv8ReleaseBuild UP-TO-DATE
:vlc-android:preTvMIPS64DebugBuild UP-TO-DATE
:vlc-android:preTvMIPS64ReleaseBuild UP-TO-DATE
:vlc-android:preTvMIPSDebugBuild UP-TO-DATE
:vlc-android:preTvMIPSReleaseBuild UP-TO-DATE
:vlc-android:preTvX86DebugBuild UP-TO-DATE
:vlc-android:preTvX86ReleaseBuild UP-TO-DATE
:vlc-android:preTvX86_64DebugBuild UP-TO-DATE
:vlc-android:preTvX86_64ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaARMv5DebugBuild UP-TO-DATE
:vlc-android:preVanillaARMv5ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaARMv6fpuDebugBuild UP-TO-DATE
:vlc-android:preVanillaARMv6fpuReleaseBuild UP-TO-DATE
:vlc-android:preVanillaARMv6nofpuDebugBuild UP-TO-DATE
:vlc-android:preVanillaARMv6nofpuReleaseBuild UP-TO-DATE
:vlc-android:preVanillaARMv7DebugBuild UP-TO-DATE
:vlc-android:preVanillaARMv7ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaARMv8DebugBuild UP-TO-DATE
:vlc-android:preVanillaARMv8ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaMIPS64DebugBuild UP-TO-DATE
:vlc-android:preVanillaMIPS64ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaMIPSDebugBuild UP-TO-DATE
:vlc-android:preVanillaMIPSReleaseBuild UP-TO-DATE
:vlc-android:preVanillaX86DebugBuild UP-TO-DATE
:vlc-android:preVanillaX86ReleaseBuild UP-TO-DATE
:vlc-android:preVanillaX86_64DebugBuild UP-TO-DATE
:vlc-android:preVanillaX86_64ReleaseBuild UP-TO-DATE
:vlc-android:prepareAndroidLibvlcUnspecifiedLibrary
:vlc-android:prepareComAndroidSupportAppcompatV72211Library
:vlc-android:prepareComAndroidSupportCardviewV72211Library
:vlc-android:prepareComAndroidSupportRecyclerviewV72211Library
:vlc-android:prepareComAndroidSupportSupportV42211Library
:vlc-android:prepareChromeARMv5DebugDependencies
:vlc-android:compileChromeARMv5DebugAidl
:vlc-android:compileChromeARMv5DebugRenderscript
:vlc-android:generateChromeARMv5DebugBuildConfig
:vlc-android:generateChromeARMv5DebugAssets UP-TO-DATE
:vlc-android:mergeChromeARMv5DebugAssets
:vlc-android:generateChromeARMv5DebugResValues
:vlc-android:generateChromeARMv5DebugResources
:vlc-android:mergeChromeARMv5DebugResources
:vlc-android:processChromeARMv5DebugManifest
:vlc-android:processChromeARMv5DebugResources
warning: string 'advanced_debugging' has no default translation.
warning: string 'beta_warning' has no default translation.
warning: string 'enable_iomx' has no default translation.
warning: string 'enable_wheel_bar' has no default translation.
warning: string 'filebrowser_title' has no default translation.
warning: string 'main_prefs_category' has no default translation.
warning: string 'new_app' has no default translation.
warning: string 'new_app_go' has no default translation.
warning: string 'new_app_msg' has no default translation.
:vlc-android:generateChromeARMv5DebugSources
:vlc-android:preChromeARMv5DebugAndroidTestBuild UP-TO-DATE
:vlc-android:prepareChromeARMv5DebugAndroidTestDependencies
:vlc-android:compileChromeARMv5DebugAndroidTestAidl
:vlc-android:processChromeARMv5DebugAndroidTestManifest
:vlc-android:compileChromeARMv5DebugAndroidTestRenderscript
:vlc-android:generateChromeARMv5DebugAndroidTestBuildConfig
:vlc-android:generateChromeARMv5DebugAndroidTestAssets UP-TO-DATE
:vlc-android:mergeChromeARMv5DebugAndroidTestAssets
:vlc-android:generateChromeARMv5DebugAndroidTestResValues
:vlc-android:generateChromeARMv5DebugAndroidTestResources
:vlc-android:mergeChromeARMv5DebugAndroidTestResources
:vlc-android:processChromeARMv5DebugAndroidTestResources
:vlc-android:generateChromeARMv5DebugAndroidTestSources
Information:BUILD SUCCESSFUL
Information:Total time: 22.922 secs
Information:0 errors
Information:0 warnings
Information:See complete output in console
按 Shift + F10 和:
Uploading file
local path: /<...>/vlc/android/vlc-android/build/outputs/apk/VLC-Android-CHROME-1.4.0-ARMv5.apk
remote path: /data/local/tmp/org.videolan.vlc.debug
Installing org.videolan.vlc.debug
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/org.videolan.vlc.debug"
pkg: /data/local/tmp/org.videolan.vlc.debug
Success
Launching application: org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity.
DEVICE SHELL COMMAND: am start -n "org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity }
我在这里提供了丰富的信息和日志,希望这对其他人有用。
答案 1 :(得分:1)
在64位Ubuntu 15.04(Vivid)上,无需使用Android工作室即可获得成功。只需更改此行:
这
AM_GNU_GETTEXT_VERSION([0.19.3])
到
AM_GNU_GETTEXT_VERSION([0.19.2])
在
./vlc/contrib/contrib-android-arm-linux-androideabi/libgpg-error/configure.ac
失败之后:
make: *** [.gpg-error] Error 1
contribs: make failed
正如所建议的那样:ozbek。
答案 2 :(得分:1)
我被困在了:
contribs:make failed
我发现another guide帮助我让这个版本正常运行。
为我做的部分是下载和安装protobuf3。一旦我这样做,vlc为我建造。
这是教程中使一切正常工作的片段
下载:
https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.tar.gz
然后做:
sudo tar zxvf ./protobuf-cpp-3.1.0.tar.gz # decompression
cd ./protobuf-3.1.0/ # Extracted folder
./configure # Run configure
make
make check
sudo make install
make clean
sudo ldconfig # Update shared library cache
在此之后,运行:
./compile.sh
工作正常。
自从我在Ubuntu 16.04上尝试以来,我已经在Ubuntu 14.04上重建了libvlc,我注意到这并没有解决我对Ubuntu 14.04的问题。一旦我创建了另一个Ubuntu 16.04虚拟机,就可以实现这一目的。
我认为它也与gettext程序有关。 Libvlc可能要求只在16.04上提供gettext版本。
答案 3 :(得分:0)
构建VLC播放器真的很复杂,需要花费很多时间。你得到的错误只是你试图修复的许多错误中的第一个。
我建议你一个简单的方法 - 不要自己建立VLC。主要的想法是 - 如果你不想修改VLC源,那么从原始的VLC.apk获取.so文件就足够了(你可以解压缩apk)并从vlc sources复制org.videolan.libvlc.*
个文件在你的项目中。
您可以查看this project以了解它是如何运作的。
答案 4 :(得分:0)
在新年假期过了四天后,我找到了建立这个项目的方法。 谢谢ozbek和所有帮助。
我再次安装ubuntu 15.10并从https://github.com/hieu19926/vlc克隆它 因为我无法从原始网站克隆。
按照vlc的wiki构建,并遵循上面的ozbek。
也许您会遇到卷曲错误,如下:curl Failed to connect to localhost port 80
或:https://github.com/rvm/rvm/issues/2989
那说:$echo ip4 >> ~/.curlrc
并注销,再次登录。
在第2步之后,如果您看到contrib的错误,如果是iconv错误,只需在文件中编辑:$vi vlc/contrib/src/iconv/rules.mak
第26行:注释掉这一行:
$(APPLY)$(SRC)/iconv/libiconv-android-ios.patch
现在我继续找到如何将libvlc导入android studio T_T,任何能够记住一些lib在构建成功后安装的人,请在这里评论或发帖给大家,谢谢!