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 디지털 지문을 저장합니다.
- Play Console로 이동합니다.
- 관심 있는 앱을 선택합니다.
- 왼쪽 탐색 메뉴의 버전에서 설정으로 이동합니다. -> 앱 무결성.
- 적절한 키에 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
애셋 링크 도구를 통해
앱에 맞는 디지털 애셋 링크 파일을 얻는 또 다른 방법은 애셋 링크 도구를 사용하는 것입니다.
- Play 스토어에서 Asset Link 도구를 설치합니다.
- 같은 기기의 Google Play 스토어에서 앱을 다운로드하거나 로컬로 설치합니다.
- Asset Link Tool 앱을 열면 기기에 설치된 모든 애플리케이션 목록이
볼 수 있습니다. 이전에 선택한 애플리케이션 ID로 목록을 필터링합니다.
bubblewrap init
를 클릭하고 해당 항목을 클릭합니다. - 앱의 서명과 생성된 디지털 애셋 링크가 포함된 페이지가 표시됩니다. 그런 다음 하단의 복사 또는 공유 버튼을 사용하여 원하는 방식 (예: 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
의 서명과 일치하는지 확인합니다.
파일에서 참조됩니다.