簡體   English   中英

在使用Cordova插件時,如何向Crosswalk添加媒體編解碼器支持?

[英]How do I add media codecs support to Crosswalk while using the Cordova plug-in?

我正在構建一個需要播放AAC音頻的PhoneGap應用程序。 它使用原生WebView很好用,但我想在構建目標API 16-20上使用Crosswalk,因為我的應用程序中的某些CSS功能在Android 4.x上根本不起作用。

當我制作項目的副本以添加Crosswalk Lite時,我可以看到除了指向AAC文件的<audio>元素之外該應用程序正常工作。 這是因為Crosswalk默認情況下不附帶專有編解碼器

鏈接頁面說:

要使用這些編解碼器構建Crosswalk,開發人員必須在打開“必須接受EULA”開關的情況下運行構建:

 $ xwalk/gyp_xwalk -Dmediacodecs_EULA=1 

然后建立Crosswalk。 構建輸出目錄中的ffmpegsumo.dlllibffmpegsumo.so將包含專有編解碼器。

有關更多詳細信息,請參閱Crosswalk構建說明

但是,我使用建議的插件添加Crosswalk,因此我得到了沒有專有編解碼器的預構建庫:

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

如何在Cordova Crosswalk插件中集成專有編解碼器?

我設法理解構建一切的(復雜的)過程。 這個答案涉及編譯完整Crosswalk(不是精簡版)的自定義構建的過程。

實際上, 我決定最終使用標准版本並用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構建

回到args:

gn args out/Default

添加以下行:

target_cpu = "x86"

保存文件,再次運行gclient sync ,然后重復ninja命令。 制作新的AAR文件的副本,該文件現在包含x86庫。

使用AAR文件

標准的Cordova Crosswalk插件使用單個AAR文件和兩個平台的庫。 Raphael Kubo da Costa的這條消息建議如何制作這個單一檔案:

AAR文件只是zip文件; 鑒於ARM和x86 AAR文件之間的唯一區別是不同的共享庫,你可以使用像zipmerge或任何合並zip文件的東西 (甚至將所有東西都提取到某個目錄然后創建一個新的zip文件)來構建一個final,多架構AAR存檔。

最后,要在Cordova插件中使用自定義構建的AAR文件,請參閱如何更改Cordova Crosswalk Webview插件使用的Crosswalk版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM