版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myfather103/article/details/85420150
今天终于算是编译完VLC for Andorid了,那么我就记录一下,方便以后参考。
下载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文件