Android 개념 (웹 개발자용)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Android 및 Google Play를 처음 사용하는 웹 개발자라면 다음 사항을 참고하세요. 주의해야 합니다 이를 위해 이미 많은 리소스와 문서가 있습니다 (Android 개발자 여기서는 몇 가지 중요한 개념과 이러한 개념이 Bubblewrap과 어떤 관련이 있는지 알아보겠습니다.

업로드 및 서명 키 비교

Bubblewrap을 사용하여 AAB (Android App Bundle)를 생성하려는 경우(참고: 8월부터) 2021년부터 Google Play의 모든 신규 앱은 Android App Bundle 형식을 사용해야 합니다.) APK 또는 APK를 사용하여 Google Play에 업로드하고 게시하려면 서명 키로 앱에 서명해야 합니다. Google Play에서는 이 문제를 처리할 수 있는 두 가지 옵션을 제공합니다.

  • Play 앱 서명 (적극 권장됨): Google에서 앱의 서명 키를 관리하고 보호합니다. 있습니다. 이 파일을 사용하여 배포할 APK에 서명합니다. Play 앱 서명은 두 개의 키를 사용합니다. 앱 서명 키 Google에서 대신 관리하는 ID와 '업로드 키' 유지되어야 하는 비공개입니다. Play Console에 업로드할 앱에 서명할 때 업로드 키를 사용합니다. 이 시스템을 사용하면 키를 분실하거나 도난당했을 때 Play 지원팀에 문의하세요. 현재 Google Play에서는 를 사용하면 앱을 AAB 또는 APK로 업로드할 수 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    • Android App Bundle (AAB): 언제 Play Console에 AAB를 업로드하면 APK 빌드 및 생성은 Google Play 스토어로 이동하세요. 사용자가 앱을 다운로드하고 설치하면 Google Play에서 앱을 배포합니다. APK로 제공합니다. 따라서 APK 서명도 Google Play 따라서 앱을 Play Console에 AAB로 업로드하면 기본적으로 Play 앱 서명을 사용해야 합니다
    • APK: APK를 사용하면 Play 앱 서명을 선택할 수 있습니다. Play 앱 선택 서명 키의 보안이 강화되므로 서명하는 것이 좋습니다. 앞서 언급했듯이 이전에는 Google Play에서 모든 신규 앱을 AAB 형식으로 업로드할 것을 곧 요구할 예정이므로 APK를 업로드하는 대신 이 방법을 사용하는 것이 좋습니다.
  • 자체 서명 키 관리: Play 앱을 선택하지 않고 자체 키를 관리하도록 선택한 경우 서명 시 앱 서명 키에 대한 책임은 전적으로 개발자에게 있습니다. Play 앱 서명과 달리 키를 분실하면 재설정할 수 없습니다. 따라서 앱 서명 키를 분실하면 앱을 업데이트할 수도 없게 됩니다

bubblewrap init 설정 중에 '서명 키 정보 (5/5)' 부분으로 이동하면 '키 저장소 위치''키 이름'을 입력하거나 기본값을 사용하라는 메시지가 표시됩니다. 이 기본 키 저장소 위치는 프로젝트 디렉터리의 android.keystore 파일이며 기본값은 키 이름은 android입니다. Bubblewrap이 사용자를 위해 계정이 생성되며 비밀번호를 입력하라는 메시지도 표시됩니다. 비밀번호를 기록해 둡니다. 을 입력합니다. 빌드 프로세스 (bubblewrap build) 중에 필요하므로 앱에 서명하는 데 사용됩니다 Play 앱 서명을 선택하면 버블래핑이 되는 서명 키가 키-값 쌍이 '업로드 키'가 됩니다. 사용하기 위해 버블랩으로 생성한 키를 서명 키 또는 업로드 키로 사용하는 경우 키를 비공개로 유지하고 보호해야 합니다. 버전 제어에 커밋하지 않는 것이 좋습니다. 대신 액세스할 수 있습니다

웹사이트와 Android 간의 관계를 선언하려면 디지털 애셋 링크가 필요합니다. 있습니다. Bubblewrap에서 생성된 Android 앱이 제대로 확인되고 신뢰할 수 있는 웹 활동 (Chrome 맞춤 탭 대신)을 사용하려면 적절한 키를 assetlinks.json 파일을 엽니다. 그런 다음 .well-known/assetlinks.json에서 웹사이트에 업로드하세요. (루트 기준) assetlinks.json 파일은 다음 형식을 따라야 합니다.

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

SHA256 인증서 지문 가져오기

assetlinks.json 파일을 만들려면 이 파일에 연결된 SHA 256 인증서 지문이 필요합니다. 을 앱의 서명 키로 대체하세요. 여기서 중요한 점은 서명 키 및 업로드 키는 다릅니다. Kubernetes에서 특히 앱이 Chrome 맞춤 탭( 브라우저 표시줄이 표시됨). assetlinks.json 파일에 디지털 지문입니다.

assetlinks.json에 서명 및 업로드 인증서의 지문을 모두 두는 것이 유용합니다. 앱을 로컬에서 더 쉽게 디버그할 수 있습니다. 자세한 내용은 아래의 키 추가를 참고하세요. 두 키를 assetlinks.json 파일에 포함하는 방법에 관한 정보를 제공합니다.

지문을 가져오는 방법에는 두 가지가 있으며 다음 섹션에서 자세히 설명합니다. 모두 똑같은 지문을 제공해야 하므로 자신에게 가장 적합한 방법을 제공합니다

Play Console 사용

Play 앱 서명 선택 여부에 따라 1~2개의 키가 있을 수 있습니다. 가져오기 각 키에 대해 적절한 SHA256 디지털 지문을 저장합니다.

  1. Play Console로 이동합니다.
  2. 관심 있는 앱을 선택합니다.
  3. 왼쪽 탐색 메뉴의 버전에서 설정으로 이동합니다. -> 앱 무결성.
  4. 적절한 키에 SHA256을 복사합니다.

서명 또는 업로드 키에 적합한 SHA256 인증서 지문을 가져옵니다.

  • 서명 키: '앱 서명 키 인증서'의 SHA256 지문을 복사합니다. 이 지문은 Google Play 스토어에서 다운로드하는 경우 앱에 해당하며 Google Play에서 서명 키로 서명된 앱을 배포합니다.

  • 업로드 키: '업로드 키 인증서'의 SHA256 지문을 복사합니다. 이 USB를 통해 ADB를 통해 로컬로 설치하면 지문은 앱에 해당 예) 로컬 머신에 있는 해당 APK는 Bubblewrap에서 빌드되었으므로 (init 설정 중에) 생성된 키도 가져옵니다. 이 작업은 서명 키가 되지만, 실제로는 '업로드 키'가 됩니다. 한 번 Play를 통해 앱을 게시할 때

keytool 경유

keytool은 키이며 인증서 관리 도구입니다 keytool을 사용하여 APK 또는 AAB Bubblewrap을 확인할 수 있습니다. 이 지문은 로컬 서명 키용이며 Play에 앱을 업로드하고 Play 앱 서명을 선택하면 이 키가 '업로드 키'가 됩니다.

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

앱에 맞는 디지털 애셋 링크 파일을 얻는 또 다른 방법은 애셋 링크 도구를 사용하는 것입니다.

  1. Play 스토어에서 Asset Link 도구를 설치합니다.
  2. 같은 기기의 Google Play 스토어에서 앱을 다운로드하거나 로컬로 설치합니다.
  3. Asset Link Tool 앱을 열면 기기에 설치된 모든 애플리케이션 목록이 볼 수 있습니다. 이전에 선택한 애플리케이션 ID로 목록을 필터링합니다. bubblewrap init를 클릭하고 해당 항목을 클릭합니다.
  4. 앱의 서명과 생성된 디지털 애셋 링크가 포함된 페이지가 표시됩니다. 그런 다음 하단의 복사 또는 공유 버튼을 사용하여 원하는 방식 (예: Google Keep에 저장, 이메일로 본인에게 보냅니다.)

서명 또는 업로드 키를 사용할 때와 동일한 개념이 적용됩니다. 개발자 콘솔에서 앱을 설치한 경우 Google Play 스토어에서 애셋 링크 도구를 사용하여 앱 서명 키의 지문을 가져올 수 있습니다. 만약 로컬 컴퓨터에서 앱을 직접 설치한 경우 지문은 키 버블랩이 생성되었습니다.

애셋 링크 파일을 업로드했으므로 브라우저에서 애셋 링크 파일에 액세스할 수 있는지 확인합니다. https://example.com/.well-known/assetlinks.json이 방금 업로드한 파일로 확인되는지 확인합니다.

Jekyll 기반 웹사이트

웹사이트가 Jekyll로 생성된 경우 (예: GitHub 페이지) .well-known 디렉터리가 출력에 포함되도록 구성합니다. GitHub 도움말에 이 주제에 대한 자세한 내용이 있습니다. 사이트 루트에 _config.yml라는 파일을 만들거나 이미 있는 경우 추가합니다. 입력:

# Folders with dotfiles are ignored by default.
include: [.well-known]

키 추가

디지털 애셋 링크 파일에는 2개 이상의 앱이 포함될 수 있으며, 각 앱의 경우 두 개 이상의 앱이 포함될 수 있습니다. 사용할 수 있습니다. 예를 들어 두 번째 키를 추가하려면 애셋 링크 도구를 사용하여 키를 결정하고 두 번째 항목으로 추가합니다. 이 JSON을 파싱하는 Chrome의 코드는 매우 엄격하므로 여분의 쉼표를 추가합니다.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

문제 해결

Chrome은 디지털 애셋 링크 인증에 실패한 이유를 기록하며 사용자는 여기에서 로그를 adb logcat이(가) 설치된 Android 기기 Linux/Mac에서 개발하는 경우 연결된 기기에서 관련 로그를 볼 수 있습니다. 다음 코드로 교체합니다.

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

예를 들어 Statement failure matching fingerprint. 메시지가 표시되면 Asset Link 도구를 사용하여 앱의 서명을 확인하고 assetlinks.json의 서명과 일치하는지 확인합니다. 파일에서 참조됩니다.