📝 Update Korean docs as upstream
* Update docs * Small fixes [ci skip]
This commit is contained in:
parent
c8e77f47ab
commit
720fbc1003
18 changed files with 160 additions and 49 deletions
|
@ -93,4 +93,5 @@ Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기
|
||||||
* [빌드 설명서 (OS X)](development/build-instructions-osx.md)
|
* [빌드 설명서 (OS X)](development/build-instructions-osx.md)
|
||||||
* [빌드 설명서 (Windows)](development/build-instructions-windows.md)
|
* [빌드 설명서 (Windows)](development/build-instructions-windows.md)
|
||||||
* [빌드 설명서 (Linux)](development/build-instructions-linux.md)
|
* [빌드 설명서 (Linux)](development/build-instructions-linux.md)
|
||||||
* [디버거에서 디버그 심볼 서버 설정](development/setting-up-symbol-server.md)
|
* [디버그 설명서 (Windows)](development/debug-instructions-windows.md)
|
||||||
|
* [디버거 심볼 서버 설정](development/setting-up-symbol-server.md)
|
||||||
|
|
|
@ -521,6 +521,19 @@ if (browserOptions.transparent) {
|
||||||
이 메서드는 시스템이 다크 모드 상태인 경우 `true`를 반환하고 아닐 경우 `false`를
|
이 메서드는 시스템이 다크 모드 상태인 경우 `true`를 반환하고 아닐 경우 `false`를
|
||||||
반환합니다.
|
반환합니다.
|
||||||
|
|
||||||
|
### `app.importCertificate(options, callback)` _LINUX_
|
||||||
|
|
||||||
|
* `options` Object
|
||||||
|
* `certificate` String - pkcs12 파일의 위치.
|
||||||
|
* `password` String - 인증서의 암호.
|
||||||
|
* `callback` Function
|
||||||
|
* `result` Integer - 가져오기의 결과.
|
||||||
|
|
||||||
|
pkcs12 형식으로된 인증서를 플랫폼 인증서 저장소로 가져옵니다. `callback`은 가져오기의
|
||||||
|
결과를 포함하는 `result` 객체를 포함하여 호출됩니다. 값이 `0` 일 경우 성공을 의미하며
|
||||||
|
다른 값은 모두 Chrominum의 [net_error_list](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h)에
|
||||||
|
따라 실패를 의미합니다.
|
||||||
|
|
||||||
### `app.commandLine.appendSwitch(switch[, value])`
|
### `app.commandLine.appendSwitch(switch[, value])`
|
||||||
|
|
||||||
Chrominum의 명령줄에 스위치를 추가합니다. `value`는 추가적인 값을 뜻하며 옵션입니다.
|
Chrominum의 명령줄에 스위치를 추가합니다. `value`는 추가적인 값을 뜻하며 옵션입니다.
|
||||||
|
|
|
@ -670,6 +670,17 @@ var win = new BrowserWindow({ width: 800, height: 600 });
|
||||||
|
|
||||||
**참고:** 웹 페이지의 제목과 네이티브 윈도우의 제목은 서로 다를 수 있습니다.
|
**참고:** 웹 페이지의 제목과 네이티브 윈도우의 제목은 서로 다를 수 있습니다.
|
||||||
|
|
||||||
|
### `win.setSheetOffset(offset)` _OS X_
|
||||||
|
|
||||||
|
Mac OS X에서 시트를 부착할 위치를 지정합니다. 기본적으로 시트는 윈도우의 프레임 바로
|
||||||
|
아래의 위치에 부착됩니다. 아마도 이 기능은 보통 다음과 같이 HTML 렌더링된 툴바 밑에
|
||||||
|
표시하기 위해 사용할 것입니다:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var toolbarRect = document.getElementById('toolbar').getBoundingClientRect();
|
||||||
|
win.setSheetOffset(toolbarRect.height);
|
||||||
|
```
|
||||||
|
|
||||||
### `win.flashFrame(flag)`
|
### `win.flashFrame(flag)`
|
||||||
|
|
||||||
* `flag` Boolean
|
* `flag` Boolean
|
||||||
|
@ -900,4 +911,4 @@ Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다. 그리고
|
||||||
|
|
||||||
윈도우에서 일어나는 모든 마우스 이벤트를 무시합니다.
|
윈도우에서 일어나는 모든 마우스 이벤트를 무시합니다.
|
||||||
|
|
||||||
[blink-feature-string]: https://code.google.com/p/chromium/codesearch#chromium/src/out/Debug/gen/blink/platform/RuntimeEnabledFeatures.cpp&sq=package:chromium&type=cs&l=527
|
[blink-feature-string]: https://code.google.com/p/chromium/codesearch#chromium/src/out/Debug/gen/blink/platform/RuntimeEnabledFeatures.cpp&sq=package:chromium&type=cs&l=576
|
||||||
|
|
|
@ -15,10 +15,6 @@ app.on('ready', function() {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## --client-certificate=`path`
|
|
||||||
|
|
||||||
`path`를 클라이언트 인증서로 설정합니다.
|
|
||||||
|
|
||||||
## --ignore-connections-limit=`domains`
|
## --ignore-connections-limit=`domains`
|
||||||
|
|
||||||
`domains` 리스트(`,`로 구분)의 연결 제한을 무시합니다.
|
`domains` 리스트(`,`로 구분)의 연결 제한을 무시합니다.
|
||||||
|
|
|
@ -65,6 +65,7 @@ function getUserMediaError(e) {
|
||||||
|
|
||||||
`sources`는 `Source` 객체의 배열입니다. 각 `Source`는 캡쳐된 화면과 독립적인
|
`sources`는 `Source` 객체의 배열입니다. 각 `Source`는 캡쳐된 화면과 독립적인
|
||||||
윈도우를 표현합니다. 그리고 다음과 같은 속성을 가지고 있습니다:
|
윈도우를 표현합니다. 그리고 다음과 같은 속성을 가지고 있습니다:
|
||||||
|
|
||||||
* `id` String - `navigator.webkitGetUserMedia` API에서 사용할 수 있는 캡쳐된 윈도우
|
* `id` String - `navigator.webkitGetUserMedia` API에서 사용할 수 있는 캡쳐된 윈도우
|
||||||
또는 화면의 id입니다. 포맷은 `window:XX` 또는 `screen:XX`로 표현되며 `XX` 는
|
또는 화면의 id입니다. 포맷은 `window:XX` 또는 `screen:XX`로 표현되며 `XX` 는
|
||||||
무작위로 생성된 숫자입니다.
|
무작위로 생성된 숫자입니다.
|
||||||
|
|
|
@ -19,9 +19,6 @@ console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', '
|
||||||
const dialog = require('electron').remote.dialog;
|
const dialog = require('electron').remote.dialog;
|
||||||
```
|
```
|
||||||
|
|
||||||
**OS X 참고**: 대화 상자를 시트처럼 보여지게 하려면 `browserWindow` 인자에
|
|
||||||
`BrowserWindow` 객체의 참조를 제공하면 됩니다.
|
|
||||||
|
|
||||||
## Methods
|
## Methods
|
||||||
|
|
||||||
`dialog` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
`dialog` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
@ -116,7 +113,7 @@ const dialog = require('electron').remote.dialog;
|
||||||
대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지
|
대화 상자를 표시합니다. `browserWindow`를 지정하면 대화 상자가 완전히 닫힐 때까지
|
||||||
지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다.
|
지정한 창을 사용할 수 없습니다. 완료 시 유저가 선택한 버튼의 인덱스를 반환합니다.
|
||||||
|
|
||||||
역주: 부정을 표현하는 "아니오", "취소"와 같은 한글 단어는 지원되지 않습니다. 만약
|
**역주:** 부정을 표현하는 "아니오", "취소"와 같은 한글 단어는 지원되지 않습니다. 만약
|
||||||
OS X 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지정하게 될 때 Alt + f4로
|
OS X 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지정하게 될 때 Alt + f4로
|
||||||
해당 대화 상자를 끄게 되면 "확인"을 누른 것으로 판단되어 버립니다. 이를 해결하려면
|
해당 대화 상자를 끄게 되면 "확인"을 누른 것으로 판단되어 버립니다. 이를 해결하려면
|
||||||
"Cancel"을 대신 사용하거나 BrowserWindow API를 사용하여 대화 상자를 직접 구현해야
|
"Cancel"을 대신 사용하거나 BrowserWindow API를 사용하여 대화 상자를 직접 구현해야
|
||||||
|
@ -130,4 +127,15 @@ OS X 또는 Windows에서 "확인", "취소"와 같은 순서로 버튼을 지
|
||||||
에러 메시지를 보여주는 대화 상자를 표시합니다.
|
에러 메시지를 보여주는 대화 상자를 표시합니다.
|
||||||
|
|
||||||
이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전에 사용할 수 있습니다. 이 메서드는
|
이 API는 `app` 모듈의 `ready` 이벤트가 발생하기 전에 사용할 수 있습니다. 이 메서드는
|
||||||
보통 어플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다.
|
보통 어플리케이션이 시작되기 전에 특정한 에러를 표시하기 위해 사용됩니다. 만약
|
||||||
|
Linux에서 `ready` 이벤트가 호출되기 이전에 이 API를 호출할 경우, 메시지는 stderr를
|
||||||
|
통해서 표시되며 GUI 대화 상자는 표시되지 않습니다.
|
||||||
|
|
||||||
|
## Sheets
|
||||||
|
|
||||||
|
Mac OS X에선, `browserWindow` 인자에 `BrowserWindow` 객체 참조를 전달하면 대화
|
||||||
|
상자가 해당 윈도우에 시트처럼 표시되도록 표현할 수 있습니다. 윈도우의 객체 참조가
|
||||||
|
제공되지 않으면 모달 형태로 표시됩니다.
|
||||||
|
|
||||||
|
`BrowserWindow.getCurrentWindow().setSheetOffset(offset)`을 통해 윈도우에 부착될
|
||||||
|
시트의 위치를 조정할 수 있습니다.
|
||||||
|
|
|
@ -22,6 +22,7 @@ win.webContents.session.on('will-download', function(event, item, webContents) {
|
||||||
console.log("Download is cancelled or interrupted that can't be resumed");
|
console.log("Download is cancelled or interrupted that can't be resumed");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## Events
|
## Events
|
||||||
|
|
|
@ -62,6 +62,9 @@ OS X에서의 `role`은 다음 값을 추가로 가질 수 있습니다:
|
||||||
* `help` - 부 메뉴를 가지는 "Help" 메뉴
|
* `help` - 부 메뉴를 가지는 "Help" 메뉴
|
||||||
* `services` - 부 메뉴를 가지는 "Services" 메뉴
|
* `services` - 부 메뉴를 가지는 "Services" 메뉴
|
||||||
|
|
||||||
|
OS X에서는 `role`을 지정할 때, `label`과 `accelerator`만 MenuItem에 효과가
|
||||||
|
적용되도록 변경되며, 다른 옵션들은 모두 무시됩니다.
|
||||||
|
|
||||||
## Instance Properties
|
## Instance Properties
|
||||||
|
|
||||||
다음 속성들은 존재하는 `MenuItem`에서 계속 변경될 수 있습니다:
|
다음 속성들은 존재하는 `MenuItem`에서 계속 변경될 수 있습니다:
|
||||||
|
|
|
@ -106,7 +106,7 @@ var template = [
|
||||||
})(),
|
})(),
|
||||||
click: function(item, focusedWindow) {
|
click: function(item, focusedWindow) {
|
||||||
if (focusedWindow)
|
if (focusedWindow)
|
||||||
focusedWindow.toggleDevTools();
|
focusedWindow.webContents.toggleDevTools();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
# screen
|
# screen
|
||||||
|
|
||||||
`screen` 모듈은 화면 크기, 디스플레이, 커서 위치 등등의 다양한 정보를 가져옵니다.
|
`screen` 모듈은 화면 크기, 디스플레이, 커서 위치 등등의 다양한 정보를 가져옵니다.
|
||||||
이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다.
|
이 모듈은 `app` 모듈의 `ready` 이벤트가 발생하기 전까지 사용할 수 없습니다. (호출 또는
|
||||||
|
모듈 포함)
|
||||||
|
|
||||||
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를
|
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를
|
||||||
상속 받았습니다.
|
상속 받았습니다.
|
||||||
|
|
|
@ -419,7 +419,7 @@ HTTP 요청을 보내기 전 요청 헤더를 사용할 수 있을 때 `listener
|
||||||
* `timestamp` Double
|
* `timestamp` Double
|
||||||
* `requestHeaders` Object
|
* `requestHeaders` Object
|
||||||
|
|
||||||
#### `ses.webRequest.onHeadersReceived([filter,] listener)`
|
#### `ses.webRequest.onHeadersReceived([filter, ]listener)`
|
||||||
|
|
||||||
* `filter` Object
|
* `filter` Object
|
||||||
* `listener` Function
|
* `listener` Function
|
||||||
|
|
|
@ -36,14 +36,12 @@ shell.openExternal('https://github.com');
|
||||||
mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.) 어플리케이션이 해당 URL을
|
mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.) 어플리케이션이 해당 URL을
|
||||||
열 수 있을 때 `true`를 반환합니다. 아니라면 `false`를 반환합니다.
|
열 수 있을 때 `true`를 반환합니다. 아니라면 `false`를 반환합니다.
|
||||||
|
|
||||||
역주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (Windows의 경우)
|
**역주:** 탐색기로 폴더만 표시하려면 `'file://경로'`와 같이 지정하여 열 수 있습니다.
|
||||||
|
|
||||||
### `shell.moveItemToTrash(fullPath)`
|
### `shell.moveItemToTrash(fullPath)`
|
||||||
|
|
||||||
* `fullPath` String
|
* `fullPath` String
|
||||||
|
|
||||||
Move the given file to trash and returns boolean status for the operation.
|
|
||||||
|
|
||||||
지정한 파일을 휴지통으로 이동합니다. 작업의 성공여부를 boolean 형으로 리턴합니다.
|
지정한 파일을 휴지통으로 이동합니다. 작업의 성공여부를 boolean 형으로 리턴합니다.
|
||||||
|
|
||||||
### `shell.beep()`
|
### `shell.beep()`
|
||||||
|
|
|
@ -640,6 +640,9 @@ mainWindow.webContents.on('devtools-opened', function() {
|
||||||
|
|
||||||
* `options` Object (optional)
|
* `options` Object (optional)
|
||||||
* `detach` Boolean - 새 창에서 개발자 도구를 엽니다.
|
* `detach` Boolean - 새 창에서 개발자 도구를 엽니다.
|
||||||
|
* `mode` String - 개발자 도구 표시 상태를 지정합니다. 옵션은 "right", "bottom",
|
||||||
|
"undocked", "detach" 중 한 가지가 될 수 있습니다. 기본값은 마지막 표시 상태를
|
||||||
|
사용합니다.
|
||||||
|
|
||||||
개발자 도구를 엽니다.
|
개발자 도구를 엽니다.
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,6 @@
|
||||||
<webview id="foo" src="https://www.github.com/" style="display:inline-flex; width:640px; height:480px"></webview>
|
<webview id="foo" src="https://www.github.com/" style="display:inline-flex; width:640px; height:480px"></webview>
|
||||||
```
|
```
|
||||||
|
|
||||||
주의할 점은 `webview` 태그의 스타일은 전통적인 flexbox 레이아웃을 사용했을 때 자식
|
|
||||||
`object` 요소가 해당 `webview` 컨테이너의 전체 높이와 넓이를 확실히 채우도록
|
|
||||||
내부적으로 `display:flex;`를 사용합니다. (v0.36.11 부터) 따라서 인라인 레이아웃을
|
|
||||||
위해 `display:inline-flex;`를 쓰지 않는 한, 기본 `display:flex;` CSS 속성을
|
|
||||||
덮어쓰지 않도록 주의해야 합니다.
|
|
||||||
|
|
||||||
게스트 컨텐츠를 조작하기 위해 자바스크립트로 `webview` 태그의 이벤트를 리스닝 하여
|
게스트 컨텐츠를 조작하기 위해 자바스크립트로 `webview` 태그의 이벤트를 리스닝 하여
|
||||||
응답을 받을 수 있습니다. 다음 예제를 참고하세요: 첫번째 리스너는 페이지 로딩 시작시의
|
응답을 받을 수 있습니다. 다음 예제를 참고하세요: 첫번째 리스너는 페이지 로딩 시작시의
|
||||||
이벤트를 확인하고 두번째 리스너는 페이지의 로딩이 끝난시점을 확인합니다. 그리고
|
이벤트를 확인하고 두번째 리스너는 페이지의 로딩이 끝난시점을 확인합니다. 그리고
|
||||||
|
@ -49,6 +43,36 @@
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## CSS 스타일링 참고
|
||||||
|
|
||||||
|
주의할 점은 `webview` 태그의 스타일은 전통적인 flexbox 레이아웃을 사용했을 때 자식
|
||||||
|
`object` 요소가 해당 `webview` 컨테이너의 전체 높이와 넓이를 확실히 채우도록
|
||||||
|
내부적으로 `display:flex;`를 사용합니다. (v0.36.11 부터) 따라서 인라인 레이아웃을
|
||||||
|
위해 `display:inline-flex;`를 쓰지 않는 한, 기본 `display:flex;` CSS 속성을
|
||||||
|
덮어쓰지 않도록 주의해야 합니다.
|
||||||
|
|
||||||
|
`webview`는 `hidden` 또는 `display: none;` 속성을 사용할 때 발생하는 문제를 한 가지
|
||||||
|
가지고 있습니다. 자식 `browserplugin` 객체 내에서 비정상적인 랜더링 동작을 발생시킬 수
|
||||||
|
있으며 웹 페이지가 로드되었을 때, `webview`가 숨겨지지 않았을 때, 반대로 그냥 바로
|
||||||
|
다시 보이게 됩니다. `webview`를 숨기는 방법으로 가장 권장되는 방법은 `width` &
|
||||||
|
`height`를 0으로 지정하는 CSS를 사용하는 것이며 `flex`를 통해 0px로 요소를 수축할 수
|
||||||
|
있도록 합니다.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<style>
|
||||||
|
webview {
|
||||||
|
display:inline-flex;
|
||||||
|
width:640px;
|
||||||
|
height:480px;
|
||||||
|
}
|
||||||
|
webview.hide {
|
||||||
|
flex: 0 1;
|
||||||
|
width: 0px;
|
||||||
|
height: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
```
|
||||||
|
|
||||||
## 태그 속성
|
## 태그 속성
|
||||||
|
|
||||||
`webview` 태그는 다음과 같은 속성을 가지고 있습니다:
|
`webview` 태그는 다음과 같은 속성을 가지고 있습니다:
|
||||||
|
@ -294,7 +318,7 @@ Webview에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`
|
||||||
이 옵션을 활성화 시키면 `requestFullScreen`와 같은 HTML API에서 유저의 승인을
|
이 옵션을 활성화 시키면 `requestFullScreen`와 같은 HTML API에서 유저의 승인을
|
||||||
무시하고 개발자가 API를 바로 사용할 수 있도록 허용합니다.
|
무시하고 개발자가 API를 바로 사용할 수 있도록 허용합니다.
|
||||||
|
|
||||||
역주: 기본적으로 브라우저에선 전체화면, 웹캠, 파일 열기등의 API를 사용하려면 유저의
|
**역주:** 기본적으로 브라우저에선 전체화면, 웹캠, 파일 열기등의 API를 사용하려면 유저의
|
||||||
승인(이벤트)이 필요합니다.
|
승인(이벤트)이 필요합니다.
|
||||||
|
|
||||||
### `<webview>.openDevTools()`
|
### `<webview>.openDevTools()`
|
||||||
|
@ -469,9 +493,10 @@ Returns:
|
||||||
* `errorCode` Integer
|
* `errorCode` Integer
|
||||||
* `errorDescription` String
|
* `errorDescription` String
|
||||||
* `validatedURL` String
|
* `validatedURL` String
|
||||||
|
* `isMainFrame` Boolean
|
||||||
|
|
||||||
`did-finish-load`와 비슷합니다. 하지만 이 이벤트는 `window.stop()`과 같은 무언가로
|
`did-finish-load`와 비슷합니다. 하지만 이 이벤트는 `window.stop()`과 같이 취소
|
||||||
인해 로드에 실패했을 때 발생하는 이벤트입니다.
|
함수가 호출되었거나 로드에 실패했을 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
### Event: 'did-frame-finish-load'
|
### Event: 'did-frame-finish-load'
|
||||||
|
|
||||||
|
@ -725,6 +750,10 @@ WebContents가 파괴될 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
### Event: 'did-change-theme-color'
|
### Event: 'did-change-theme-color'
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
* `themeColor` String
|
||||||
|
|
||||||
페이지의 테마 색이 변경될 때 발생하는 이벤트입니다. 이 이벤트는 보통 meta 태그에
|
페이지의 테마 색이 변경될 때 발생하는 이벤트입니다. 이 이벤트는 보통 meta 태그에
|
||||||
의해서 발생합니다:
|
의해서 발생합니다:
|
||||||
|
|
||||||
|
|
|
@ -57,3 +57,30 @@ Electron
|
||||||
스크립트로부터 만들어지는 임시 디렉터리.
|
스크립트로부터 만들어지는 임시 디렉터리.
|
||||||
* **external_binaries** - `gyp` 빌드를 지원하지 않아 따로 다운로드된 서드파티
|
* **external_binaries** - `gyp` 빌드를 지원하지 않아 따로 다운로드된 서드파티
|
||||||
프레임워크 바이너리들.
|
프레임워크 바이너리들.
|
||||||
|
|
||||||
|
## Git 서브 모듈 최신 버전으로 유지
|
||||||
|
|
||||||
|
Electron 저장소는 몇 가지 외부 벤더 종속성을 가지고 있으며 [/vendor](/vendor)
|
||||||
|
디렉터리에서 확인할 수 있습니다. 때때로 `git status`를 실행했을 때 아마 다음과 같은
|
||||||
|
메시지를 흔히 목격할 것입니다:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git status
|
||||||
|
|
||||||
|
modified: vendor/brightray (new commits)
|
||||||
|
modified: vendor/node (new commits)
|
||||||
|
```
|
||||||
|
|
||||||
|
이 외부 종속성 모듈들을 업데이트 하려면, 다음 커맨드를 실행합니다:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
만약 자기 자신이 너무 이 커맨드를 자주 사용하는 것 같다면, `~/.gitconfig` 파일을
|
||||||
|
생성하여 편하게 업데이트할 수 있습니다:
|
||||||
|
|
||||||
|
```
|
||||||
|
[alias]
|
||||||
|
su = submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
|
@ -4,10 +4,6 @@ Electron은 v0.34.0 버전부터 앱 패키지를 Mac App Store(MAS)에 제출
|
||||||
되었습니다. 이 가이드는 어플리케이션을 앱 스토어에 등록하는 방법과 빌드의 한계에 대한
|
되었습니다. 이 가이드는 어플리케이션을 앱 스토어에 등록하는 방법과 빌드의 한계에 대한
|
||||||
설명을 제공합니다.
|
설명을 제공합니다.
|
||||||
|
|
||||||
**참고:** v0.36.0 버전부터 어플리케이션이 샌드박스화 된 상태로 실행되면 GPU 작동을
|
|
||||||
방지하는 버그가 있었습니다. 따라서 이 버그가 고쳐지기 전까진 v0.35.x 버전을 사용하는
|
|
||||||
것을 권장합니다. 이 버그에 관한 자세한 사항은 [issue #3871][issue-3871]를 참고하세요.
|
|
||||||
|
|
||||||
**참고:** Mac App Store에 어플리케이션을 등록하려면
|
**참고:** Mac App Store에 어플리케이션을 등록하려면
|
||||||
[Apple Developer Program][developer-program]에 등록되어 있어야 하며 비용이 발생할
|
[Apple Developer Program][developer-program]에 등록되어 있어야 하며 비용이 발생할
|
||||||
수 있습니다.
|
수 있습니다.
|
||||||
|
@ -56,6 +52,8 @@ Apple로부터 인증서를 취득했다면, [어플리케이션 배포](applica
|
||||||
<dict>
|
<dict>
|
||||||
<key>com.apple.security.app-sandbox</key>
|
<key>com.apple.security.app-sandbox</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>com.apple.security.temporary-exception.sbpl</key>
|
||||||
|
<string>(allow mach-lookup (global-name-regex #"^org.chromium.Chromium.rohitfork.[0-9]+$"))</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
```
|
```
|
||||||
|
@ -77,17 +75,18 @@ INSTALLER_KEY="3rd Party Mac Developer Installer: Company Name (APPIDENTITY)"
|
||||||
|
|
||||||
FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks"
|
FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks"
|
||||||
|
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework"
|
||||||
if [ -d "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A" ]; then
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper"
|
||||||
# non-MAS 빌드 서명
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper.app/"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Mantle.framework/Versions/A"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/Contents/MacOS/$APP Helper EH"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/ReactiveCocoa.framework/Versions/A"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper EH.app/"
|
||||||
codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Squirrel.framework/Versions/A"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/Contents/MacOS/$APP Helper NP"
|
||||||
fi
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$FRAMEWORKS_PATH/$APP Helper NP.app/"
|
||||||
codesign -fs "$APP_KEY" --entitlements parent.plist "$APP_PATH"
|
codesign -s "$APP_KEY" -f --entitlements child.plist "$APP_PATH/Contents/MacOS/$APP"
|
||||||
|
codesign -s "$APP_KEY" -f --entitlements parent.plist "$APP_PATH"
|
||||||
|
|
||||||
productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"
|
productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"
|
||||||
```
|
```
|
||||||
|
@ -96,11 +95,31 @@ productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RES
|
||||||
문서를 참고하여 기본적인 개념을 이해해야 합니다. 그리고 자격(plist) 파일에
|
문서를 참고하여 기본적인 개념을 이해해야 합니다. 그리고 자격(plist) 파일에
|
||||||
어플리케이션에서 요구하는 권한의 키를 추가합니다.
|
어플리케이션에서 요구하는 권한의 키를 추가합니다.
|
||||||
|
|
||||||
### 어플리케이션을 업로드하고 심사용 앱으로 제출
|
### 어플리케이션 업로드
|
||||||
|
|
||||||
어플리케이션 서명을 완료한 후 iTunes Connect에 업로드하기 위해 Application Loader를
|
어플리케이션 서명을 완료한 후 iTunes Connect에 업로드하기 위해 Application Loader를
|
||||||
사용할 수 있습니다. 참고로 업로드하기 전에 [레코드][create-record]를 만들었는지
|
사용할 수 있습니다. 참고로 업로드하기 전에 [레코드][create-record]를 만들었는지
|
||||||
확인해야 합니다. 그리고 [심사를 위해 앱을 제출][submit-for-review]할 수 있습니다.
|
확인해야 합니다.
|
||||||
|
|
||||||
|
### `temporary-exception`의 사용처 설명
|
||||||
|
|
||||||
|
어플리케이션을 샌드박싱할 때 `temporary-exception` 엔트리가 자격에 추가되며
|
||||||
|
[App Sandbox Temporary Exception Entitlements][temporary-exception] 문서에 따라
|
||||||
|
왜 이 엔트리가 필요한지 설명해야 합니다:
|
||||||
|
|
||||||
|
> Note: If you request a temporary-exception entitlement, be sure to follow the
|
||||||
|
guidance regarding entitlements provided on the iTunes Connect website. In
|
||||||
|
particular, identify the entitlement and corresponding issue number in the App
|
||||||
|
Sandbox Entitlement Usage Information section in iTunes Connect and explain why
|
||||||
|
your app needs the exception.
|
||||||
|
|
||||||
|
아마 제출하려는 어플리케이션이 Chromium 브라우저를 기반으로 만들어졌고, 또한
|
||||||
|
멀티-프로세스 구조를 위해 Mach port를 사용하는 것도 설명해야 할 수 있습니다. 하지만
|
||||||
|
여전히 이러한 문제 때문에 어플리케이션 심사에 실패할 수 있습니다.
|
||||||
|
|
||||||
|
### 어플리케이션을 심사에 제출
|
||||||
|
|
||||||
|
위 과정을 마치면 [어플리케이션을 심사를 위해 제출][submit-for-review]할 수 있습니다.
|
||||||
|
|
||||||
## MAS 빌드의 한계
|
## MAS 빌드의 한계
|
||||||
|
|
||||||
|
@ -164,5 +183,5 @@ ERN의 승인을 얻는 방법은, 다음 글을 참고하는 것이 좋습니
|
||||||
[create-record]: https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/CreatingiTunesConnectRecord.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
|
[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/
|
[app-sandboxing]: https://developer.apple.com/app-sandboxing/
|
||||||
[issue-3871]: https://github.com/electron/electron/issues/3871
|
|
||||||
[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/
|
[ern-tutorial]: https://carouselapps.com/2015/12/15/legally-submit-app-apples-app-store-uses-encryption-obtain-ern/
|
||||||
|
[temporary-exception]: https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html
|
||||||
|
|
|
@ -12,7 +12,7 @@ Windows 7 이후 버전만 지원됩니다. Windows Vista에서도 작동할 수
|
||||||
테스트가 완료되지 않았습니다.
|
테스트가 완료되지 않았습니다.
|
||||||
|
|
||||||
윈도우용 바이너리는 `x86`과 `x64` 모두 제공됩니다. 그리고 `ARM` 버전 윈도우는 아직
|
윈도우용 바이너리는 `x86`과 `x64` 모두 제공됩니다. 그리고 `ARM` 버전 윈도우는 아직
|
||||||
지원하지 않습니다. (역주: 추후 지원할 가능성이 있습니다)
|
지원하지 않습니다.
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,9 @@ Electron 기반 어플리케이션을 Travis, Circle, Jenkins 또는 유사한
|
||||||
그리고, 가상 xvfb 스크린을 생성하고 DISPLAY라고 불리우는 환경 변수를 지정합니다.
|
그리고, 가상 xvfb 스크린을 생성하고 DISPLAY라고 불리우는 환경 변수를 지정합니다.
|
||||||
Electron의 Chromium은 자동적으로 `$DISPLAY` 변수를 찾습니다. 따라서 앱의 추가적인
|
Electron의 Chromium은 자동적으로 `$DISPLAY` 변수를 찾습니다. 따라서 앱의 추가적인
|
||||||
다른 설정이 필요하지 않습니다. 이러한 작업은 Paul Betts의
|
다른 설정이 필요하지 않습니다. 이러한 작업은 Paul Betts의
|
||||||
[xfvb-maybe](https://github.com/paulcbetts/xvfb-maybe)를 통해 자동화 할 수
|
[xvfb-maybe](https://github.com/paulcbetts/xvfb-maybe)를 통해 자동화 할 수
|
||||||
있습니다: `xfvb-maybe`를 테스트 커맨드 앞에 추가하고 현재 시스템에서 요구하면
|
있습니다: `xvfb-maybe`를 테스트 커맨드 앞에 추가하고 현재 시스템에서 요구하면
|
||||||
이 작은 툴이 자동적으로 xfvb를 설정합니다. Windows와 Mac OS X에선 간단히 아무 작업도
|
이 작은 툴이 자동적으로 xvfb를 설정합니다. Windows와 Mac OS X에선 간단히 아무 작업도
|
||||||
하지 않습니다.
|
하지 않습니다.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -45,7 +45,7 @@ install:
|
||||||
|
|
||||||
### Jenkins
|
### Jenkins
|
||||||
|
|
||||||
Jenkins는 [Xfvb 플러그인이 존재합니다](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin).
|
Jenkins는 [Xvfb 플러그인이 존재합니다](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin).
|
||||||
|
|
||||||
### Circle CI
|
### Circle CI
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue