VLC for Android完全编译手册

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myfather103/article/details/85420150

今天终于算是编译完VLC for Andorid了,那么我就记录一下,方便以后参考。

1.compile.sh

下载Gradle的命令改成如下所示

GRADLE_VERSION=4.9

if [ ! -d "gradle/wrapper" ]; then

    if [ ! -f "gradle-${GRADLE_VERSION}-all.zip" ]; then
	    diagnostic "Downloading gradle"
	    
	    GRADLE_URL=https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
	    wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL}
	    checkfail "gradle: download failed"
    fi

    unzip -o gradle-${GRADLE_VERSION}-all.zip -d ../
    checkfail "gradle: unzip failed"

    cd ../gradle-${GRADLE_VERSION}

    ./bin/gradle --offline wrapper
    checkfail "gradle: wrapper failed"

    ./gradlew -version
    checkfail "gradle: wrapper failed"
    cd ../vlc-android
    mkdir -p gradle
    mv ../gradle-${GRADLE_VERSION}/gradle/wrapper/ ../vlc-android/gradle/wrapper
    mv ../gradle-${GRADLE_VERSION}/gradlew ../vlc-android
    chmod a+x gradlew
    rm -rf gradle-${GRADLE_VERSION}-bin.zip
fi

2.脚本修改

vlc/extras/tools/tools.mak

搜索改成

.automake: automake .autoconf
	(cd $<; ./configure --prefix=$(PREFIX))
	touch $@

因为会有错误

help2man: can't get `--help' info from man/cp.td/cp Try `--no-discard-stderr'

修改vlc-android/vlc/extras/tools/automake/Makefile

doc/aclocal-$(APIVERSION).1: $(aclocal_script) lib/Automake/Config.pm
    $(update_mans) aclocal-$(APIVERSION)
doc/automake-$(APIVERSION).1: $(automake_script) lib/Automake/Config.pm
    $(update_mans) automake-$(APIVERSION) --no-discard-stderr

自己手动编译

make && make install

automake

Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at {path}/automake line 3939.

修改为

# substitute_ac_subst_variables ($TEXT)
# -------------------------------------
# Replace any occurrence of ${FOO} in $TEXT by @FOO@ if FOO is an AC_SUBST
# variable.
sub substitute_ac_subst_variables
{
  my ($text) = @_;
  # $text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
  $text =~ s/\$[{]([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
  return $text;
}

还是tools.mak,删除

(find $(PREFIX) -name 'protobuf*.pc' -exec rm -f {} \;)

3.armeabi-v7a中编译soxr会报错。

首先先让它爆出错误,因为要进行环境设置。
然后注释掉contrib/src/soxr中

	rm -f $</CMakeCache.txt
	cd $< && $(HOSTVARS_PIC) $(CMAKE) \
		$(SOXR_EXTRA_CONF) \
		-DBUILD_SHARED_LIBS=OFF \
		-DBUILD_EXAMPLES=OFF \
		-DBUILD_TESTS=OFF \
		-DWITH_LSR_BINDINGS=OFF \
		-DWITH_OPENMP=OFF \
		-DWITH_AVFFT=ON \
		-Wno-dev $(CMAKE_GENERATOR)
	cd $< && $(MAKE) install
	touch $@

./go

的方式来编译。

4.x86

提示错误

Warning:warning: shared library text segment is not shareable
Error:error: treating warnings as errors

libvlc中的Android.mk中加上

LOCAL_LDLIBS += -Wl,--no-warn-shared-textrel

最终效果

在这里插入图片描述

没提示出来的编译平台应改回默认情况。

5.APK部分

顶层的build.gradle在jcenter()之前加上maventCentral()。

如果用的是JDK 11的话会有

javax/xml/bind/JAXBException

换成JDK 8。

最终的APK文件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/myfather103/article/details/85420150