diff --git a/docs-translations/zh-CN/api/web-contents.md b/docs-translations/zh-CN/api/web-contents.md index 1b7011bb0fa8..f168849863af 100644 --- a/docs-translations/zh-CN/api/web-contents.md +++ b/docs-translations/zh-CN/api/web-contents.md @@ -242,6 +242,7 @@ var webContents = win.webContents; * `result` Object * `requestId` Integer * `finalUpdate` Boolean - 标识是否还有更多的值可以查看. + * `activeMatchOrdinal` Integer (可选) - 活动匹配位置 * `matches` Integer (可选) - 匹配数量. * `selectionArea` Object (可选) - 协调首个匹配位置. diff --git a/docs-translations/zh-CN/api/web-view-tag.md b/docs-translations/zh-CN/api/web-view-tag.md index f1f3ef9080c5..e1e31f6f5a02 100644 --- a/docs-translations/zh-CN/api/web-view-tag.md +++ b/docs-translations/zh-CN/api/web-view-tag.md @@ -528,6 +528,7 @@ webview.addEventListener('console-message', function(e) { * `result` Object * `requestId` Integer * `finalUpdate` Boolean - 指明下面是否还有更多的回应. + * `activeMatchOrdinal` Integer (可选) - 活动匹配位置 * `matches` Integer (optional) - 匹配数量. * `selectionArea` Object (optional) - 整合第一个匹配域. diff --git a/docs-translations/zh-CN/development/build-instructions-linux.md b/docs-translations/zh-CN/development/build-instructions-linux.md new file mode 100644 index 000000000000..0f76e78b9a5d --- /dev/null +++ b/docs-translations/zh-CN/development/build-instructions-linux.md @@ -0,0 +1,123 @@ +# Build Instructions (Linux) + +遵循下面的引导,在 Linux 上构建 Electron . + +## Prerequisites + +* Python 2.7.x. 一些发行版如 CentOS 仍然使用 Python 2.6.x ,所以或许需要 check 你的 Python 版本,使用 `python -V`. +* Node.js v0.12.x. 有很多方法来安装 Node. 可以从 [Node.js](http://nodejs.org)下载原文件并且编译它 .也可以作为一个标准的用户在 home 目录下安装 node .或者尝试使用仓库 [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories). +* Clang 3.4 或更新的版本. +* GTK+开发头文件和libnotify. + +在 Ubuntu, 安装下面的库 : + +```bash +$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ + libnotify-dev libgnome-keyring-dev libgconf2-dev \ + libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + libxss1 libnss3-dev gcc-multilib g++-multilib +``` + +在 Fedora, 安装下面的库 : + +```bash +$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-devel \ + xorg-x11-server-utils libcap-devel cups-devel libXtst-devel \ + alsa-lib-devel libXrandr-devel GConf2-devel nss-devel +``` + +其它版本的也许提供了相似的包来安装,通过包管理器,例如 pacman. +或一个可以编译源文件的. + +## 使用虚拟机 + +如果在虚拟机上构建 Electron,你需要一个固定大小的设备,至少需要 25 gigabytes . + +## 获取代码 + +```bash +$ git clone https://github.com/atom/electron.git +``` + +## Bootstrapping + +bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.需要使用 Python 2.7.x 来让脚本成功执行.正确下载文件会花费较长的时间. +注意我们使用的是 `ninja` 来构建 Electron,所以没有生成 `Makefile` 项目. + +```bash +$ cd electron +$ ./script/bootstrap.py -v +``` + +### 交叉编译 + +如果想创建一个 `arm` target ,应当还要下载下面的依赖 : + +```bash +$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \ + g++-arm-linux-gnueabihf +``` + +为了编译 `arm` 或 `ia32` targets, 你应当为 `bootstrap.py` 脚本使用 +`--target_arch` 参数: + +```bash +$ ./script/bootstrap.py -v --target_arch=arm +``` + +## 构建 + +创建 `Release` 、 `Debug` target: + +```bash +$ ./script/build.py +``` + +这个脚本也许会在目录 `out/R` 下创建一个巨大的可执行的 Electron . 文件大小或许会超过 1.3 gigabytes. 原因是 Release target 二进制文件包含了 调试符号 .运行 `create-dist.py` 脚本来减小文件的 size : + +```bash +$ ./script/create-dist.py +``` +这会在 `dist` 目录下创建一个有大量小文件的工作空间. 运行 create-dist.py 脚本之后, 或许你想删除仍然在 `out/R` 下的 1.3+ gigabyte 二进制文件. + +可以只创建 `Debug` target: + +```bash +$ ./script/build.py -c D +``` + +创建完毕, 可以在 `out/D`下面找到 `electron`. + +## Cleaning + +删除构建文件 : + +```bash +$ ./script/clean.py +``` + +## 解决问题 + +确保你已经安装了所有的依赖 . + +### Error While Loading Shared Libraries: libtinfo.so.5 + +预构建的 `clang` 会尝试链接到 `libtinfo.so.5`. 取决于 host 架构, 适当的使用 `libncurses`: + +```bash +$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 +``` + +## Tests + +测试你的修改是否符合项目代码风格,使用: + +```bash +$ ./script/cpplint.py +``` + +测试有效性使用: + +```bash +$ ./script/test.py +``` \ No newline at end of file diff --git a/docs-translations/zh-CN/development/build-instructions-osx.md b/docs-translations/zh-CN/development/build-instructions-osx.md new file mode 100644 index 000000000000..18074a3085aa --- /dev/null +++ b/docs-translations/zh-CN/development/build-instructions-osx.md @@ -0,0 +1,62 @@ +# Build Instructions (OS X) + +遵循下面的引导,在 OS X 上构建 Electron . + +## 前提 + +* OS X >= 10.8 +* [Xcode](https://developer.apple.com/technologies/tools/) >= 5.1 +* [node.js](http://nodejs.org) (外部) + +如果你通过 Homebrew 使用 Python 下载,需要安装下面的 Python 模块: + +* pyobjc + +## 获取代码 + +```bash +$ git clone https://github.com/atom/electron.git +``` + +## Bootstrapping + +bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.注意我们使用的是 `ninja` 来构建 Electron,所以没有生成 Xcode 项目. + +```bash +$ cd electron +$ ./script/bootstrap.py -v +``` + +## 构建 + +创建 `Release` 、 `Debug` target: + +```bash +$ ./script/build.py +``` + +可以只创建 `Debug` target: + +```bash +$ ./script/build.py -c D +``` + +创建完毕, 可以在 `out/D` 下面找到 `Electron.app`. + +## 32位支持 + +在 OS X 上,构建 Electron 只支持 64位的,不支持 32位的 . + +## 测试 + +测试你的修改是否符合项目代码风格,使用: + +```bash +$ ./script/cpplint.py +``` + +测试有效性使用: + +```bash +$ ./script/test.py +``` \ No newline at end of file diff --git a/docs-translations/zh-CN/development/build-instructions-windows.md b/docs-translations/zh-CN/development/build-instructions-windows.md new file mode 100644 index 000000000000..7b11dc7f57f3 --- /dev/null +++ b/docs-translations/zh-CN/development/build-instructions-windows.md @@ -0,0 +1,136 @@ +# Build Instructions (Windows) + +遵循下面的引导,在 Windows 上构建 Electron . + +## 前提 + +* Windows 7 / Server 2008 R2 or higher +* Visual Studio 2013 with Update 4 - [download VS 2013 Community Edition for + free](https://www.visualstudio.com/news/vs2013-community-vs). +* [Python 2.7](http://www.python.org/download/releases/2.7/) +* [Node.js](http://nodejs.org/download/) +* [Git](http://git-scm.com) + +如果你现在还没有安装 Windows , [modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads) 有一个 timebombed 版本的 Windows ,你可以用它来构建 Electron. + +构建 Electron 完全的依赖于命令行,并且不可通过 Visual Studio. +可以使用任何的编辑器来开发 Electron ,未来会支持 Visual Studio. + +**注意:** 虽然 Visual Studio 不是用来构建的,但是它仍然 +**必须的** ,因为我们需要它提供的构建工具栏. + +**注意:** Visual Studio 2015 不可用. 请确定使用 MSVS +**2013**. + +## 获取代码 + +```powershell +$ git clone https://github.com/atom/electron.git +``` + +## Bootstrapping + +bootstrap 脚本也是必要下载的构建依赖,来创建项目文件.注意我们使用的是 `ninja` 来构建 Electron,所以没有生成 Visual Studio 项目. + +```powershell +$ cd electron +$ python script\bootstrap.py -v +``` + +## 构建 + +创建 `Release` 、 `Debug` target: + +```powershell +$ python script\build.py +``` + +可以只创建 `Debug` target: + +```powershell +$ python script\build.py -c D +``` + +创建完毕, 可以在 `out/D`(debug target) 或 `out\R` (release target) 下面找到 `electron.exe`. + +## 64bit Build + +为了构建64位的 target,在运行 bootstrap 脚本的时候需要使用 `--target_arch=x64` : + +```powershell +$ python script\bootstrap.py -v --target_arch=x64 +``` + +其他构建步骤完全相同. + +## Tests + +测试你的修改是否符合项目代码风格,使用: + +```powershell +$ python script\cpplint.py +``` + +测试有效性使用: + +```powershell +$ python script\test.py +``` +在构建 debug 时为 Tests包含原生模块 (例如 `runas`) 将不会执行(详情 [#2558](https://github.com/atom/electron/issues/2558)), 但是它们在构建 release 会起效. + +运行 release 构建使用 : + +```powershell +$ python script\test.py -R +``` + +## 解决问题 + +### Command xxxx not found + +如果你遇到了一个错误,类似 `Command xxxx not found`, 可以尝试使用 `VS2012 Command Prompt` 控制台来执行构建脚本 . + +### Fatal internal compiler error: C1001 + +确保你已经安装了 Visual Studio 的最新安装包 . + +### Assertion failed: ((handle))->activecnt >= 0 + +如果在 Cygwin 下构建的,你可能会看到 `bootstrap.py` 失败并且附带下面错误 : + +``` +Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430 + +Traceback (most recent call last): + File "script/bootstrap.py", line 87, in + sys.exit(main()) + File "script/bootstrap.py", line 22, in main + update_node_modules('.') + File "script/bootstrap.py", line 56, in update_node_modules + execute([NPM, 'install']) + File "/home/zcbenz/codes/raven/script/lib/util.py", line 118, in execute + raise e +subprocess.CalledProcessError: Command '['npm.cmd', 'install']' returned non-zero exit status 3 +``` + +这是由同时使用 Cygwin Python 和 Win32 Node 造成的 bug.解决办法就是使用 Win32 Python 执行 bootstrap 脚本 (假定你已经在目录 `C:\Python27` 下安装了 Python): + +```powershell +$ /cygdrive/c/Python27/python.exe script/bootstrap.py +``` + +### LNK1181: cannot open input file 'kernel32.lib' + +重新安装 32位的 Node.js. + +### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm' + +简单创建目录 [应该可以解决问题](http://stackoverflow.com/a/25095327/102704): + +```powershell +$ mkdir ~\AppData\Roaming\npm +``` + +### node-gyp is not recognized as an internal or external command + +如果你使用 Git Bash 来构建,或许会遇到这个错误,可以使用 PowerShell 或 VS2012 Command Prompt 来代替 . \ No newline at end of file diff --git a/docs-translations/zh-CN/development/build-system-overview.md b/docs-translations/zh-CN/development/build-system-overview.md new file mode 100644 index 000000000000..95aea7fb1f57 --- /dev/null +++ b/docs-translations/zh-CN/development/build-system-overview.md @@ -0,0 +1,42 @@ +# Build System Overview + +Electron 使用 `gyp` 来生成项目 ,使用 `ninja` 来构建项目. 项目配置可以在 `.gyp` 和 `.gypi` 文件中找到. + +## Gyp 文件 + +下面的 `gyp` 文件包含了构建 Electron 的主要规则 : + +* `atom.gyp` 定义了 Electron 它自己是怎样被构建的. +* `common.gypi` 调整 node 的构建配置,来让它结合 Chromium 一起构建. +* `vendor/brightray/brightray.gyp` 定义了 `brightray` 是如何被构建的,并且包含了默认配置来连接到 Chromium. +* `vendor/brightray/brightray.gypi` 包含了常用的创建配置. + +## 创建组件 + +在 Chromium 还是一个相当大的项目的时候,最后链接阶段会花了好几分钟,这让开发变得很困难. 为了解决这个困难,Chromium 引入了 "component build" ,这让每个创建的组建都是分隔开的共享库,让链接更快,但是这浪费了文件大小和性能. + +在 Electron 中,我们采用了一个非常相似的方法 : 在创建 `Debug` , 二进制文件会被链接进入一个 Chromium 组件的共享版本库来达到快速链接; 在创建 `Release`, 二进制文件会被链接进入一个静态版本库, 所以我们可以有最小的二进制文件size和最佳的体验. + +## Minimal Bootstrapping + +在运行 bootstrap 脚本的时候,所有的 Chromium 预编译二进制文件会被下载.默认静态库和共享库会被下载,并且项目的最后大小会在 800MB 到 2GB 之间,这取决于平台类型. + +默认,`libchromiumcontent` 是从 Amazon Web Services 上下载下来的.如果设置了 `LIBCHROMIUMCONTENT_MIRROR` 环境变量,bootstrap脚本会从这里下载下来. [`libchromiumcontent-qiniu-mirror`](https://github.com/hokein/libchromiumcontent-qiniu-mirror) 是 `libchromiumcontent` 的映射.如果你不能连接 AWS,你可以切换下载路径:`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/` +如果只是想快速搭建一个 Electron 的测试或开发环境,可以通过 `--dev` 参数只下载共享版本库: + +```bash +$ ./script/bootstrap.py --dev +$ ./script/build.py -c D +``` + +## Two-Phase Project Generation + +在 `Release` 和 `Debug` 构建的时候后,Electron 链接了不同配置的库 .然而 `gyp`不支持为不同的配置文件进行不同的链接设置. + +为了规避这个问题,Electron 在运行 `gyp` 的时候,使用了一个 `gyp` 的变量 `libchromiumcontent_component`来控制应该使用哪个链接设置,并且只生成一个目标. + +## Target Names + +与大多数的项目不同,它们使用 `Release` 和 `Debug` 作为目标名字,而 Electron 使用使用的是 `R` 和 `D`.这是因为如果只定义了一个 `Release` 或 `Debug` 构建配置,`gyp` 会随机崩溃,并且在同一时候,Electron 只生成一个目标,如上所述. + +这只对开发者可用,如果想重新构建 Electron ,将不会成功. \ No newline at end of file diff --git a/docs-translations/zh-CN/development/setting-up-symbol-server.md b/docs-translations/zh-CN/development/setting-up-symbol-server.md new file mode 100644 index 000000000000..01098bcc77cd --- /dev/null +++ b/docs-translations/zh-CN/development/setting-up-symbol-server.md @@ -0,0 +1,38 @@ +# Setting Up Symbol Server in Debugger + +调试 symbols 让你有更好的调试 sessions. 它们有可执行的动态库的函数信息,并且提供信息来获得洁净的呼叫栈. 一个 Symbol 服务器允许调试器自动加载正确的 symbols, 二进制文件 和 资源文件,不用再去强制用户下载巨大的调试文件. 服务器函数类似 +[Microsoft's symbol server](http://support.microsoft.com/kb/311503) ,所以这里的记录可用. + +注意,因为公众版本的 Electron 构建是最优化的,调试不一定一直简单.调试器将不会给显示出所有变量内容,并且因为内联,尾调用,和其它编译器优化,执行路径会看起来很怪异 . 唯一的解决办法是搭建一个不优化的本地构建. + +Electron 使用的官方 symbol 服务器地址为 +`http://54.249.141.255:8086/atom-shell/symbols` . +你不能直接访问这个路径,必须将其添加到你的调试工具的 symbol 路径上.在下面的例子中,使用了一个本地缓存目录来避免重复从服务器获取 PDB. 在你的电脑上使用一个恰当的缓存目录来代替 `c:\code\symbols` . + +## Using the Symbol Server in Windbg + +Windbg symbol 路径被配制为一个限制带星号字符的字符串. 要只使用 Electron 的 symbol 服务器, 将下列记录添加到你的 symbol 路径 (__注意:__ 如果你愿意使用一个不同的地点来下载 symbols,你可以在你的电脑中使用任何可写的目录来代替 `c:\code\symbols`): + +``` +SRV*c:\code\symbols\*http://54.249.141.255:8086/atom-shell/symbols +``` + +使用 Windbg 菜单或通过输入 `.sympath` 命令,在环境中设置一个 `_NT_SYMBOL_PATH` 字符串.如果你也想从微软的 symbol 服务器获得 symbols ,你应当首先将它们先列出来 : + +``` +SRV*c:\code\symbols\*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols\*http://54.249.141.255:8086/atom-shell/symbols +``` + +## 在 Visual Studio 中使用 symbol 服务器 + + + + +## Troubleshooting: Symbols will not load + +在 Windbg 中输入下列命令,打印出未什么 symbols 没有加载 : + +``` +> !sym noisy +> .reload /f chromiumcontent.dll +``` \ No newline at end of file diff --git a/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md b/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md new file mode 100644 index 000000000000..45cff454a961 --- /dev/null +++ b/docs-translations/zh-CN/tutorial/mac-app-store-submission-guide.md @@ -0,0 +1,147 @@ +# Mac App Store 应用提交向导 + +自从 v0.34.0, Electron 就允许提交应用包到 Mac App Store +(MAS) . 这个向导提供的信息有 : 如何提交应用和 MAS 构建的限制. + +__注意:__ 从 v0.36.0,当应用成为沙箱之后,会有一个 bug 阻止 GPU 进程开启 , 所以在这个 bug 修复之前,建议使用 v0.35.x .更多查看 [issue #3871][issue-3871] . + +__注意:__ 提交应用到 Mac App Store 需要参加 [Apple Developer +Program][developer-program] , 这需要花钱. + +## 如何提交 + +下面步骤介绍了一个简单的提交应用到商店方法.然而,这些步骤不能保证你的应用被 Apple 接受;你仍然需要阅读 Apple 的 [Submitting Your App][submitting-your-app] 关于如何满足 Mac App Store 要求的向导. + +### 获得证书 + +为了提交应用到商店,首先需要从 Apple 获得一个证书.可以遵循 [existing guides][nwjs-guide]. + +### App 签名 + +获得证书之后,你可以使用 [Application Distribution](application-distribution.md) 打包你的应用, 然后前往提交你的应用.这个步骤基本上和其他程序一样,但是这 key 一个个的标识 Electron 的每个依赖. + +首先,你需要准备2个授权文件 . + +`child.plist`: + +```xml + + + + + com.apple.security.app-sandbox + + com.apple.security.inherit + + + +``` + +`parent.plist`: + +```xml + + + + + com.apple.security.app-sandbox + + + +``` + +然后使用下面的脚本标识你的应用 : + +```bash +#!/bin/bash + +# Name of your app. +APP="YourApp" +# The path of you app to sign. +APP_PATH="/path/to/YouApp.app" +# The path to the location you want to put the signed package. +RESULT_PATH="~/Desktop/$APP.pkg" +# The name of certificates you requested. +APP_KEY="3rd Party Mac Developer Application: Company Name (APPIDENTITY)" +INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)" + +FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" + +codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A" +codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/" +codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/" +codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/" +if [ -d "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A" ]; then + # Signing a non-MAS build. + codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Mantle.framework/Versions/A" + codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/ReactiveCocoa.framework/Versions/A" + codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A" +fi +codesign -fs "$APP_KEY" --entitlements parent.plist "$APP_PATH" + +productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH" +``` +如果你是 OS X 下的应用沙箱使用新手,应当仔细阅读 Apple 的 [Enabling App Sandbox][enable-app-sandbox] 来有一点基础,然后向授权文件添加你的应用需要的许可 keys . + +### 上传你的应用并检查提交 + +在签名应用之后,可以使用应用 Loader 来上传到 iTunes 链接处理 , 确保在上传之前你已经 [created a record][create-record]. 然后你能 [submit your app for review][submit-for-review]. + +## MAS构建限制 + +为了让你的应用沙箱满足所有条件,在 MAS 构建的时候,下面的模块被禁用了 : + +* `crashReporter` +* `autoUpdater` + +并且下面的行为也改变了: + +* 一些机子的视频采集功能无效. +* 某些特征不可访问. +* Apps 不可识别 DNS 改变. + +也由于应用沙箱的使用方法,应用可以访问的资源被严格限制了 ; 阅读更多信息 [App Sandboxing][app-sandboxing] . + +## Electron 使用的加密算法 + +取决于你所在地方的国家和地区 , Mac App Store 或许需要记录你应用的加密算法 , 甚至要求你提交一个 U.S 加密注册(ERN) 许可的复印件. + +Electron 使用下列加密算法: + +* AES - [NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf), [NIST SP 800-38D](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf), [RFC 3394](http://www.ietf.org/rfc/rfc3394.txt) +* HMAC - [FIPS 198-1](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf) +* ECDSA - ANS X9.62–2005 +* ECDH - ANS X9.63–2001 +* HKDF - [NIST SP 800-56C](http://csrc.nist.gov/publications/nistpubs/800-56C/SP-800-56C.pdf) +* PBKDF2 - [RFC 2898](https://tools.ietf.org/html/rfc2898) +* RSA - [RFC 3447](http://www.ietf.org/rfc/rfc3447) +* SHA - [FIPS 180-4](http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf) +* Blowfish - https://www.schneier.com/cryptography/blowfish/ +* CAST - [RFC 2144](https://tools.ietf.org/html/rfc2144), [RFC 2612](https://tools.ietf.org/html/rfc2612) +* DES - [FIPS 46-3](http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf) +* DH - [RFC 2631](https://tools.ietf.org/html/rfc2631) +* DSA - [ANSI X9.30](http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.30-1%3A1997) +* EC - [SEC 1](http://www.secg.org/sec1-v2.pdf) +* IDEA - "On the Design and Security of Block Ciphers" book by X. Lai +* MD2 - [RFC 1319](http://tools.ietf.org/html/rfc1319) +* MD4 - [RFC 6150](https://tools.ietf.org/html/rfc6150) +* MD5 - [RFC 1321](https://tools.ietf.org/html/rfc1321) +* MDC2 - [ISO/IEC 10118-2](https://www.openssl.org/docs/manmaster/crypto/mdc2.html) +* RC2 - [RFC 2268](https://tools.ietf.org/html/rfc2268) +* RC4 - [RFC 4345](https://tools.ietf.org/html/rfc4345) +* RC5 - http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf +* RIPEMD - [ISO/IEC 10118-3](http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%2010118-3:2004) + +如何获取 ERN 许可, 可看这篇文章: [How to legally +submit an app to Apple’s App Store when it uses encryption (or how to obtain an +ERN)][ern-tutorial]. + +[developer-program]: https://developer.apple.com/support/compare-memberships/ +[submitting-your-app]: https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/AppDistributionGuide/SubmittingYourApp/SubmittingYourApp.html +[nwjs-guide]: https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline#first-steps +[enable-app-sandbox]: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html +[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.html +[submit-for-review]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html +[app-sandboxing]: https://developer.apple.com/app-sandboxing/ +[issue-3871]: https://github.com/atom/electron/issues/3871 +[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/ \ No newline at end of file diff --git a/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md b/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md new file mode 100644 index 000000000000..d5df1646c48e --- /dev/null +++ b/docs-translations/zh-CN/tutorial/using-widevine-cdm-plugin.md @@ -0,0 +1,67 @@ +# 使用 Widevine CDM 插件 + +在 Electron ,你可以使用 Widevine CDM 插件装载 Chrome 浏览器 . + +## 获取插件 + +Electron 没有为 Widevine CDM 插件 配制许可 reasons, 为了获得它,首先需要安装官方的 chrome 浏览器,这匹配了体系架构和 Electron 构建使用的 chrome 版本 . + +__注意:__ Chrome 浏览器的主要版本必须和 Electron 使用的版本一样,否则插件不会有效,虽然 `navigator.plugins` 会显示你已经安装了它 . + +### Windows & OS X + +在 Chrome 浏览器中打开 `chrome://components/` ,找到 `WidevineCdm` 并且确定它更新到最新版本,然后你可以从 `APP_DATA/Google/Chrome/WidevineCDM/VERSION/_platform_specific/PLATFORM_ARCH/` 路径找到所有的插件二进制文件 . + +`APP_DATA` 是系统存放数据的地方,在 Windows 上它是 +`%LOCALAPPDATA%`, 在 OS X 上它是 `~/Library/Application Support`. `VERSION` 是 +Widevine CDM 插件的版本字符串, 类似 `1.4.8.866`. `PLATFORM` 是 `mac` 或 +`win`. `ARCH` 是 `x86` 或 `x64`. + +在 Windows,必要的二进制文件是 `widevinecdm.dll` and +`widevinecdmadapter.dll`, 在 OS X ,它们是 `libwidevinecdm.dylib` 和 +`widevinecdmadapter.plugin`. 你可以将它们复制到任何你喜欢的地方,但是它们必须要放在一起. + +### Linux + +在 Linux ,Chrome 浏览器将插件的二进制文件装载在一起 , 你可以在 `/opt/google/chrome` 下找到,文件名是 `libwidevinecdm.so` 和 +`libwidevinecdmadapter.so`. + +## 使用插件 + +在获得了插件文件后,你可以使用 `--widevine-cdm-path` 命令行开关来将 `widevinecdmadapter` 的路径传递给 Electron , 插件版本使用 `--widevine-cdm-version` 开关. + +__注意:__ 虽然只有 `widevinecdmadapter` 的二进制文件传递给了 Electron, `widevinecdm` 二进制文件应当放在它的旁边. + +必须在 `app` 模块的 `ready` 事件触发之前使用命令行开关,并且 page 使用的插件必须激活. + +示例代码 : + +```javascript +// You have to pass the filename of `widevinecdmadapter` here, it is +// * `widevinecdmadapter.plugin` on OS X, +// * `libwidevinecdmadapter.so` on Linux, +// * `widevinecdmadapter.dll` on Windows. +app.commandLine.appendSwitch('widevine-cdm-path', '/path/to/widevinecdmadapter.plugin'); +// The version of plugin can be got from `chrome://plugins` page in Chrome. +app.commandLine.appendSwitch('widevine-cdm-version', '1.4.8.866'); + +var mainWindow = null; +app.on('ready', function() { + mainWindow = new BrowserWindow({ + webPreferences: { + // The `plugins` have to be enabled. + plugins: true + } + }) +}); +``` + +## 验证插件 + +为了验证插件是否工作,你可以使用下面的方法 : + +* 打开开发者工具查看是否 `navigator.plugins` 包含了 Widevine +CDM 插件. +* 打开 `https://shaka-player-demo.appspot.com/` 加载一个使用 +`Widevine` 的 manifest. +* 打开 http://www.dash-player.com/demo/drm-test-area/, 检查是否界面输出 `bitdash uses Widevine in your browser`, 然后播放 video. \ No newline at end of file