首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用Cordova插件时向人行横道添加媒体编解码器支持?

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

Stack Overflow用户
提问于 2017-03-26 19:05:38
回答 1查看 553关注 0票数 3

我正在构建一个PhoneGap应用程序,需要播放AAC音频。它可以很好地使用本机WebView,但我想使用人行横道在构建目标为16-20的app,因为我的应用程序中的一些CSS功能在Android4.x上根本行不通。

当我制作一个项目的副本来添加人行横道Lite时,我可以看到,除了指向AAC文件的<audio>元素之外,应用程序可以工作。这是因为在默认情况下,人行横道不带专有编解码器。

链接页面上写着:

要使用这些编解码器构建人行横道,开发人员必须在打开“必须接受EULA”开关的情况下运行生成: $ xwalk/gyp_xwalk -Dmediacodecs_EULA=1 那就建人行横道。构建输出目录中的ffmpegsumo.dll或libffmpegsumo.so将包含专有的编解码器。 有关详细信息,请参阅人行横道建造指令

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

代码语言:javascript
复制
phonegap plugin add cordova-plugin-crosswalk-webview  --variable XWALK_MODE="lite" --save

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-30 21:36:14

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

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

环境

我在Ubuntu16.04 Docker容器中编译了人行横道,以避免“污染”我的系统,并确保我有正确的Linux版本。标准映像非常简单,所以我安装了一些依赖项。我还设置了一个共享文件夹来访问已编译的文件:

代码语言:javascript
复制
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

最后,添加多体存储库是必要的。

代码语言:javascript
复制
apt-add-repository multiverse

注意:这个过程需要很大的空间。在继续之前,请确保至少有25 at的空闲空间。

要求

按照概述的depot_tools安装在文件中

代码语言:javascript
复制
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:/path/to/depot_tools

使用以下方法初始化工作目录:

代码语言:javascript
复制
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编辑配置文件,并添加以下行:

代码语言:javascript
复制
target_os = ['android']

保存文件。

获取源

尝试第一次同步:

代码语言:javascript
复制
gclient sync

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

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

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

代码语言:javascript
复制
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相关的开发包:

代码语言:javascript
复制
sudo apt install libnotify-dev

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

代码语言:javascript
复制
cd src/
gn args out/Default

确保内容如下:

代码语言:javascript
复制
import("//xwalk/build/android.gni")
target_os = "android"
is_debug = false
ffmpeg_branding = "Chrome"
use_sysroot = false

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
cd src/
ninja -C out/Default xwalk_core_library

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

代码语言:javascript
复制
src/out/Default/xwalk_core_library.aar

将此文件复制到一个安全的位置.

x86建筑

回到args上:

代码语言:javascript
复制
gn args out/Default

增加以下一行:

代码语言:javascript
复制
target_cpu = "x86"

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

使用AAR文件

标准的Cordova人行横道插件在两个平台上都使用一个带有库的AAR文件。拉斐尔·库波·达·科斯塔( Raphael Kubo da Costa )的这条信息提出了如何生成这个单一存档的建议:

AAR文件只是压缩文件;考虑到ARM和文件之间唯一的区别是不同的共享库,您可以使用类似于或任何合并zip文件(甚至将所有内容都解压缩到某个目录中,然后创建一个新的zip文件)来构建最终的、多体系结构的AAR归档文件。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43033247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档