Chromium Chronicle #28: iOS에서 Chrome 시작하기

에피소드 28: 마크 코건, 프랑스 파리에서 진행 (2022년 1월)
이전 에피소드

2022년, iOS용 Chrome이 출시 10주년을 맞이합니다. Chrome은 가장 널리 사용되는 iOS 앱 중 하나로 현재 미국 앱 스토어에서 2위를 기록하고 있습니다.

iOS의 Chrome은 동기화, 번역, 시크릿 모드, 비밀번호 관리자, 자동 완성 등 사용자가 선호하는 훌륭한 Chrome 기능을 모두 제공합니다. 또한 iOS의 Chrome은 멀티 윈도우 및 기기 전체의 비밀번호 자동 완성과 같은 iOS의 기본 기능과 통합됩니다.

하지만 iOS용 Chrome이 다른 모든 Chrome 플랫폼 구현과 매우 다른 한 가지 주요 특징이 있습니다.

iOS용 Chrome은 Blink를 사용하지 않습니다.

Apple의 App Store 규칙으로 인해 iOS용 Chrome은 웹 콘텐츠를 가져오고 렌더링하는 데 iOS 플랫폼 API를 사용해야 합니다. 따라서 iOS용 Chrome은 WebKit, Nitro, CFNetwork를 사용하지만 다른 Chrome 플랫폼은 Blink, V8, //net를 사용합니다. 따라서 iOS 앱이 웹페이지 콘텐츠와 상호작용하는 데 사용할 수 있는 제한된 API로 인해 //content API를 사용하는 많은 Chrome 기능이 JavaScript 삽입을 사용하여 iOS용 Chrome에서 구현됩니다.

//components의 크로스 플랫폼 기능은 //content 종속 항목을 사일로 상태로 유지하면서 모든 플랫폼에서 최대한 많은 코드를 공유하도록 구성되어 있습니다.

ls components/some_component

content/        # code with dependencies on //content.
core/           # cross-platform code with no //content dependencies.
ios/            # iOS implementation using JavaScript injection.

iOS 기반 Chrome과 다른 플랫폼의 Chrome 간 다른 중요한 차이점은 다음과 같습니다.

  • iOS 앱은 단일 프로세스여야 하므로 iOS의 Chrome에서 fork()를 사용할 수 없습니다.
  • iOS용 Chrome은 일부 Swift와 함께 Objective-C++ (C++ 및 Objective-C의 혼합)로 작성되었습니다.
  • iOS 기기에서 직접 iOS용 Chrome을 컴파일하고 실행할 수 있지만, Apple에서 제공하는 강력한 성능의 기기 시뮬레이터를 통해 다양한 기능을 개발할 수도 있습니다.

iOS에서 Chrome 시작하기

필요한 사항은 다음과 같습니다.

  • macOS 11.3 이상을 실행하는 macOS 컴퓨터(64비트) Apple Silicon이 지원됩니다.
  • Xcode, Apple 플랫폼용 IDE, 버전 13.0 이상
  • JDK의 현재 버전입니다.

자세한 내용은 빌드 안내를 참고하세요.

소스를 가져오는 방법은 다른 플랫폼과 매우 유사합니다.

mkdir ${HOME}/chromium-ios
cd ${HOME}/chromium-ios
fetch ios

그런 다음 명령줄 (또는 Xcode)에서 빌드할 수 있습니다.

autoninja -C out/Debug-iphonesimulator chrome

iOS용 Chrome 기능 개발에 관해 자세히 알아보기

Chromium 스타일 가이드를 참고하세요. Swift, xCode, 기타 iOS 관련 리소스에 관한 자세한 내용은 Apple 개발자 문서를 참고하세요.

일반적으로 iOS 개발자이고 Chromium을 처음 사용한다면 중요한 추상화 및 데이터 구조에 관한 문서를 참고하세요.