Концепции Android (для веб-разработчиков)

Джойс Тох
Joyce Toh

Если вы веб-разработчик, новичок в Android и Google Play, вам следует знать некоторые детали. Для этого уже существует множество ресурсов и документации (спасибо команде Android), но здесь мы выделим некоторые важные концепции и то, как они связаны с Bubblewrap.

Загрузка или ключ подписи

Если вы планируете использовать Bubblewrap для создания пакета Android App Bundle (AAB) (Примечание: начиная с августа 2021 г. Google Play потребует, чтобы все новые приложения использовали формат Android App Bundle ) или APK для загрузки и публикации в Google Play, вы вам нужно будет подписать ваше приложение с помощью ключа подписи. Google Play предлагает два варианта решения этой проблемы:

  • Подписание приложений в Google Play (настоятельно рекомендуется) . Google будет управлять ключом подписи вашего приложения и защищать его за вас. Он использует его для подписи ваших APK для распространения. Для подписи приложений Play используются два ключа. «Ключ подписи приложения», которым Google будет управлять за вас, и «ключ загрузки», который вы сохраните и который должен оставаться для вас конфиденциальным. Вы используете ключ загрузки, чтобы подписать свое приложение для загрузки в Play Console. Эта система позволяет вам сбросить ключ загрузки, если он когда-либо будет утерян или скомпрометирован, обратившись в службу поддержки Play . В настоящее время Google Play позволяет загружать ваше приложение в формате AAB или APK:
    • Пакет приложений Android (AAB). Когда вы загружаете AAB в Play Console, вы переносите сборку и создание APK-файлов в Google Play Store. Когда пользователь загружает и устанавливает ваше приложение, Google Play распространяет его в виде подписанного APK. Поэтому подписание APK также должно быть выполнено Google Play. Итак, по умолчанию, если вы загружаете свое приложение в виде AAB в Play Console, вам потребуется использовать подпись приложения Play.
    • APK: При использовании APK-файлов у вас есть возможность выбрать функцию подписания приложений Play. Настоятельно рекомендуется включить функцию подписи приложений Play, поскольку это повышает безопасность вашего ключа подписи. Как отмечалось ранее, Google Play вскоре потребует загружать все новые приложения в формате AAB, поэтому мы рекомендуем делать это вместо загрузки APK.
  • Управляйте собственным ключом подписи . Если вы решите управлять своим собственным ключом и не включите функцию подписи приложений в Play, вы несете полную ответственность за ключ подписи вашего приложения. В отличие от подписи приложений Play, ее невозможно сбросить, если вы потеряете ключ. Таким образом, потеря ключа подписи вашего приложения означает, что вы также потеряете возможность обновлять свое приложение.

Во время настройки bubblewrap init оболочки, когда вы перейдете к разделу «Информация о ключе подписи (5/5)» , вам будет предложено ввести «Местоположение хранилища ключей» и «Имя ключа» или использовать значения по умолчанию. Местоположением хранилища ключей по умолчанию является файл android.keystore в каталоге вашего проекта, а имя ключа по умолчанию — android . Если Bubblewrap не найдет существующее хранилище ключей с таким именем ключа в указанном месте, он создаст его для вас, а также предложит ввести пароли. Запишите введенные вами пароли, поскольку они понадобятся вам в процессе сборки ( bubblewrap build ), где он будет использовать ключ для подписи вашего приложения. Если вы согласитесь на подписание приложений в Play, то ключ подписи, сгенерированный Bubblewrap и используемый для подписи вашего приложения, станет «ключом загрузки». Независимо от того, решите ли вы использовать ключ, сгенерированный Bubblewrap, в качестве ключа подписи или загрузки, вам следует охранять и хранить ключ в тайне. Мы не рекомендуем передавать его в систему контроля версий. Вместо этого ограничьте количество людей, имеющих к нему доступ.

Ссылки на цифровые активы необходимы для того, чтобы заявить о связи между вашим веб-сайтом и вашим приложением для Android. Чтобы убедиться, что ваше Android-приложение, созданное с помощью Bubblewrap, проверено правильно и запускается как доверенная веб-активность (а не как пользовательская вкладка 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, связанный с ключом подписи вашего приложения. Важно отметить, что отпечатки пальцев, связанные с вашими ключами подписи и загрузки, будут разными. Важно помнить об этом различии, особенно если вы наблюдаете, как ваше приложение запускается как пользовательская вкладка Chrome (с видимой панелью браузера). Тогда, скорее всего, ваш файл assetlinks.json не имеет отпечатка пальца, соответствующего соответствующему ключу.

Полезно иметь как отпечаток сертификата для подписи, так и отпечаток сертификата загрузки в файле assetslinks.json, чтобы упростить локальную отладку вашего приложения. См. раздел «Добавление дополнительных ключей» ниже для получения дополнительной информации о том, как разместить оба ключа в файле assetlinks.json .

Есть несколько разных способов получить отпечаток пальца, которые подробно описаны в следующих разделах. Все они должны дать вам одинаковые отпечатки пальцев, поэтому не стесняйтесь выбирать наиболее удобный метод.

Через игровую консоль

В зависимости от того, включили ли вы подписывание приложений в Play или нет, у вас может быть один или два ключа. Чтобы получить соответствующий отпечаток SHA256 для каждого ключа:

  1. Зайдите в консоль Play
  2. Выберите приложение, которое вас интересует
  3. В навигационном меню слева в разделе «Выпуск» выберите «Настройка» -> «Целостность приложения» .
  4. Скопируйте SHA256 для соответствующего ключа:

Получите соответствующий отпечаток сертификата SHA256 для вашего ключа подписи или загрузки.

  • Ключ подписи : скопируйте отпечаток SHA256 для «сертификата ключа подписи приложения» . Этот отпечаток будет соответствовать вашему приложению, если вы загрузите его из Google Play Store, поскольку Google Play распространяет ваше приложение, подписанное с помощью ключа подписи.

  • Загрузить ключ : скопируйте отпечаток SHA256 для «Загрузить сертификат ключа» . Этот отпечаток будет соответствовать вашему приложению, если вы установите его локально (например, через ADB через USB). Этот APK (на вашем локальном компьютере) был создан с помощью Bubblewrap и, следовательно, подписан ключом, который он также создал для вас (во время настройки init ). Помните, что это может быть ключ подписи для вашего локально установленного приложения, но на самом деле он становится «ключом загрузки», как только вы публикуете свое приложение через Play.

Через keytool

keytool — это инструмент управления ключами и сертификатами. Вы можете использовать keytool для извлечения отпечатка SHA 256, связанного с созданным APK или AAB Bubblewrap. Обратите внимание, что этот отпечаток пальца предназначен для локального ключа подписи, и если вы загружаете свое приложение в Play и соглашаетесь на подписание приложений в Play, этот ключ становится «ключом загрузки».

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

Другой способ получить правильный файл ссылок на цифровые активы для вашего приложения — использовать инструмент Asset Link Tool :

  1. Установите инструмент Asset Link Tool из Play Store.
  2. На том же устройстве загрузите приложение из Google Play Store или установите его локально.
  3. Откройте приложение Asset Link Tool, и вам будет предоставлен список всех приложений, установленных на вашем устройстве, по именам пакетов. Отфильтруйте список по идентификатору приложения, который вы выбрали ранее во время bubblewrap init , и щелкните эту запись.
  4. Вы увидите страницу с подписью вашего приложения и созданной ссылкой на цифровой ресурс. Нажмите кнопки «Копировать» или «Поделиться» внизу, чтобы экспортировать его по своему усмотрению (например, сохранить в Google Keep, отправить по электронной почте себе).

Та же идея применяется, что и раньше, при подписании или загрузке ключей. Если вы установили приложение из Google Play Store, инструмент Asset Link Tool предоставит вам отпечаток пальца для ключа подписи вашего приложения. Если вы установили приложение непосредственно со своего локального компьютера, то отпечаток пальца соответствует ключу, сгенерированному Bubblewrap.

Теперь, когда вы загрузили его, убедитесь, что у вас есть доступ к файлу ссылки на ресурс в браузере. Убедитесь, что https://example.com/.well-known/assetlinks.json разрешается в файл, который вы только что загрузили.

Веб-сайты на основе Джекилла

Если ваш веб-сайт создан с помощью Jekyll (например, GitHub Pages), вам необходимо добавить строку конфигурации, чтобы каталог .well-known был включен в выходные данные. В справке GitHub есть дополнительная информация по этой теме . Создайте файл с именем _config.yml в корне вашего сайта (или добавьте к нему, если он уже существует) и введите:

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

Добавление дополнительных ключей

Файл Digital Asset Link может содержать более одного приложения, и для каждого приложения он может содержать более одного ключа. Например, чтобы добавить второй ключ, просто используйте инструмент Asset Link Tool , чтобы определить ключ и добавить его в качестве второй записи. Код в Chrome, который анализирует этот JSON, довольно строгий, поэтому убедитесь, что вы случайно не добавили лишнюю запятую в конце списка.

[{
  "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 регистрирует причину сбоя проверки цифровых активов, и вы можете просмотреть журналы на устройстве Android с помощью adb logcat . Если вы разрабатываете на Linux/Mac, вы можете просмотреть соответствующие журналы с подключенного устройства с помощью:

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

Например, если вы видите сообщение Statement failure matching fingerprint. , вам следует использовать инструмент Asset Link Tool, чтобы увидеть подпись вашего приложения и убедиться, что она соответствует подписи в вашем файле assetlinks.json .