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

에피소드 28: 프랑스 파리의 마크 코건 작성 (2022년 1월)
이전 에피소드

2022년에 iOS용 Chrome이 출시 10주년을 기념합니다. Chrome은 가장 널리 사용되는 iOS 앱 중 하나이며 현재 미국 App Store에서 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 기기에서 직접 Chrome을 컴파일하고 iOS 기기에서 실행할 수 있지만, 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을 처음 사용하는 경우 중요한 추상화 및 데이터 구조에 관한 문서를 참고하세요.