如何在使用 Cordova 插件时向人行横道添加媒体编解码器支持?



我正在构建一个需要播放AAC音频的PhoneGap应用程序。它使用本机WebView运行良好,但我想在针对 API 16-20 的构建上使用 Crosswalk,因为我应用程序中的某些 CSS 功能在 Android 4.x 上根本不起作用。

当我复制项目以添加 Crosswalk Lite 时,我可以看到该应用程序除了指向 AAC 文件的<audio>元素外工作。这是因为默认情况下,Crosswalk 不附带专有编解码器。

链接页面说:

若要使用这些编解码器构建人行横道,开发人员必须运行生成 打开"必须接受 EULA"开关时:

$ xwalk/gyp_xwalk -Dmediacodecs_EULA=1

然后建造人行横道。ffmpegsumo.dlllibffmpegsumo.so构建输出目录将包含专有编解码器。

有关更多详细信息,请参阅人行横道构建说明。

但是,我正在使用建议的插件添加人行横道,因此我获得了没有专有编解码器的预构建库:

phonegap plugin add cordova-plugin-crosswalk-webview  --variable XWALK_MODE="lite" --save

如何将专有编解码器集成到科尔多瓦人行横道插件中?

我设法理解了构建一切的(复杂的)过程。这个答案涉及编译完整人行横道(不是精简版)的自定义版本的过程。

实际上,我决定最终使用标准版本并用 MP3 替换 AAC 音频,但我认为这个答案可能对将来的参考有用。

环境

我在 Ubuntu 16.04 Docker 容器中编译了 Crosswalk,以避免"污染"我的系统并确保我拥有正确的 Linux 版本。标准映像非常准系统,所以我安装了一些依赖项。我还设置了一个共享文件夹来访问编译的文件:

docker run -it -v /home/andrea/shared:/shared ubuntu:16.04 /bin/bash
apt update
apt install -y python git nano lsb-release sudo wget curl software-properties-common
export EDITOR=nano # life it too short to learn vi

最后,有必要添加多元宇宙存储库:

apt-add-repository multiverse

注意:此过程需要大量空间。在继续之前,请确保至少有 25GB 的可用空间。

要求

按照文档中概述的depot_tools安装:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:/path/to/depot_tools

使用以下命令初始化工作目录:

mkdir crosswalk-checkout
cd crosswalk-checkout
export XWALK_OS_ANDROID=1
gclient config --name src/xwalk https://github.com/crosswalk-project/crosswalk.git

然后使用nano .gclient编辑配置文件并添加以下行:

target_os = ['android']

保存文件。

获取源

尝试首次同步:

gclient sync

此命令将失败,但没关系。说明说:

如果gyp_xwalk由于缺少依赖项而失败,请不要担心;安装它们将在后面的部分中介绍,之后您可以再次手动运行gyp_xwalk

调整install-build-deps.sh文件,然后运行它:

sed -si "s/msttcorefonts/ttf-mscorefonts-installer/g" src/build/install-build-deps.sh
sudo ./src/build/install-build-deps-android.sh

再次运行gclient sync并等待它正确完成。

建筑

通过检查文件src/xwalk/build/common.gypisrc/tools/mb/mb_config.pyl,我们可以看到我们需要在构建参数中添加ffmpeg_branding="Chrome"

为了防止以后出现错误,请安装与 libnotify 相关的开发包:

sudo apt install libnotify-dev

移动到src目录并打开配置:

cd src/
gn args out/Default

确保内容如下:

import("//xwalk/build/android.gni")
target_os = "android"
is_debug = false
ffmpeg_branding = "Chrome"
use_sysroot = false

参数use_sysroot = false可防止另一个错误。保存文件时,您应该看到如下所示的内容:

Waiting for editor on "/home/utente/crosswalk-checkout/src/out/Default/args.gn"...
Generating files...
Done. Wrote 6060 targets from 1003 files in 2416ms

发出cd ..并再次运行gclient sync

最后,要构建核心库,请执行以下操作:

cd src/
ninja -C out/Default xwalk_core_library

这将为 ARM 构建库,生成位于以下位置的 AAR 文件:

src/out/Default/xwalk_core_library.aar

将此文件复制到安全的位置。

为 x86 构建

回到参数:

gn args out/Default

添加以下行:

target_cpu = "x86"

保存文件,再次运行gclient sync,然后重复ninja命令。复制新的 AAR 文件,该文件现在包含 x86 库。

使用 AAR 文件

标准的 Cordova 人行横道插件使用单个 AAR 文件,其中包含适用于两个平台的库。Raphael Kubo da Costa的这条消息建议如何制作这个单一的档案:

AAR 文件只是 zip 文件;给定 ARM 之间的唯一区别 和x86 AAR文件是不同的共享库,您可以使用 像zipmerge或任何合并zip文件的东西(甚至 将所有内容提取到某个目录中,然后创建一个新的zip文件) 构建一个最终的多架构 AAR 存档。

最后,要在Cordova 插件中使用自定义构建的 AAR 文件,请参阅如何更改 Cordova Crosswalk Webview 插件使用的人行横道版本。

相关内容

  • 没有找到相关文章

最新更新