Conceptos de Android (para desarrolladores web)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Si eres desarrollador web y usas Android y Google Play por primera vez, hay algunos detalles que de las que debes estar al tanto. Ya existen muchos recursos y documentación para esto (gracias a pero aquí destacaremos algunos conceptos importantes y su relación con Bubblewrap.

Clave de firma frente a clave de carga

Si planeas usar Bubblewrap para generar un Android App Bundle (AAB) (Nota: A partir de agosto 2021, Google Play exigirá que todas las apps nuevas usen el formato Android App Bundle) o APK para subir y publicar en Google Play, deberás firmar la app con una clave de firma. Google Play te ofrece dos opciones para controlar esto:

  • Firma de apps de Play (muy recomendada): Google administrará y protegerá la clave de firma de tu app. por ti. Lo usa para firmar los APKs que se distribuyen. La firma de apps de Play usa dos claves. La sección clave de firma" que Google administrará por ti y la "clave de carga" que se debe mantener privada para ti. Usa la clave de carga para firmar la app y subirla a Play Console. Esta de carga te permite restablecer tu clave de carga si alguna vez se pierde o se ve comprometida, comunicación con el equipo de asistencia al cliente de Play. Actualmente, Google Play te permite subir tu app como un AAB o APK:
    • Android App Bundle (AAB): Cuándo subes un AAB a Play Console, aplazas la compilación y generación de APK al Google Play Store Cuando un usuario descarga e instala tu app, Google Play la distribuye como un APK firmado. Por lo tanto, la firma de los APK también deberá realizarse Google Play Por lo tanto, de forma predeterminada, si subes tu app como un AAB a Play Console, requieren que uses la firma de apps de Play.
    • APK: Con los APK, puedes habilitar la firma de apps de Play. Aceptación de la app de Play Te recomendamos que firmes, ya que aumenta la seguridad de tu clave de firma. Como se indicó anteriormente antes, Google Play pronto exigirá que todas las apps nuevas se suban en formato AAB, por lo que te recomendamos que lo hagas en lugar de subir los APKs.
  • Administrar tu propia clave de firma: Si eliges administrar tu propia clave y no habilitas la app de Play Cuando firmes, eres totalmente responsable de la clave de firma de tu app. A diferencia de la firma de apps de Play, no podrás restablecerla si pierdes la clave. Por lo tanto, si pierdes la clave de firma de tu app, también pierden la capacidad de actualizar la app.

Durante la configuración de bubblewrap init, cuando llegues a la sección "Información de la clave de firma (5/5)", haz lo siguiente: se te solicitará que ingreses una "Ubicación del almacén de claves" y un "Nombre de la clave", o utiliza los valores predeterminados. El la ubicación predeterminada del almacén de claves es el archivo android.keystore del directorio de tu proyecto y la configuración el nombre de la clave es android. Si Bubblewrap no encuentra un almacén de claves existente con ese nombre de clave en la ubicación, creará una para ti y te solicitará contraseñas. Toma nota de las contraseñas que ingresaste, ya que las necesitarás durante el proceso de compilación (bubblewrap build), donde se usarán los para firmar la app. Si habilitas la firma de apps de Play, la clave de firma que se encuentra en Bubblewrap que se genera y usa para firmar la app se convierte en la “clave de carga”. Ya sea que elijas usar La clave generada por el envoltorio de burbujas como clave de carga o firma, debes protegerla y mantenerla privada. No recomendamos confirmarla en el control de versiones. En cambio, limita la cantidad de personas con el acceso a ellos.

Los Vínculos de recursos digitales son necesarios para declarar la relación entre tu sitio web y tu dispositivo Android . Para asegurarte de que la app para Android generada por Bubblewrap se verifique correctamente y se inicie como Actividad web de confianza (en lugar de una pestaña personalizada de Chrome), deberás agregar la clave adecuada a el archivo assetlinks.json. Luego, súbela a tu sitio web en .well-known/assetlinks.json. (relativa a la raíz). Tu archivo assetlinks.json debe tener el siguiente formato:

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

Obtén la huella digital del certificado SHA256

Para crear el archivo assetlinks.json, necesitarás la huella digital del certificado SHA‐256 asociada con la clave de firma de tu app. Lo importante es tener en cuenta que las huellas digitales asociadas con tus claves de firma y carga serán diferentes. Es importante tener en cuenta esta distinción en mente, especialmente si observas que tu app se inicia como una pestaña personalizada de Chrome (con la barra del navegador visible). Es probable que tu archivo assetlinks.json no tenga el elemento huella digital correspondiente a la clave apropiada.

Es útil tener la huella digital del certificado de firma y de carga en el archivo assetlinks.json para depurar tu app de manera local con mayor facilidad. Consulta Cómo agregar más claves a continuación para obtener más información para incluir ambas claves en el archivo assetlinks.json.

Hay varias formas diferentes de obtener la huella digital que se detallan en las siguientes secciones. Todas deberían darte las mismas huellas, así que no dudes en elegir el método que le resulte más conveniente.

Mediante Play Console

Dependiendo de si habilitas la firma de apps de Play o no, es posible que tengas una o dos claves. Para recuperar la huella digital SHA256 adecuada para cada clave:

  1. Ve a Play Console.
  2. Selecciona la app que te interesa
  3. En el menú de navegación de la izquierda, en Versión, ve a Configuración -> Integridad de la App.
  4. Copia el hash SHA256 para la clave apropiada:

Recuperar la huella digital del certificado SHA256 adecuada para tu clave de firma o carga

  • Clave de firma: Copia la huella digital SHA256 para el "Certificado de la clave de firma de la app". Esta huella digital corresponderá a tu aplicación si la descargas de Google Play Store desde Google Play distribuye tu app firmada con la clave de firma.

  • Clave de carga: Copia la huella digital SHA256 del “Certificado de clave de carga”. Esta huella digital corresponderá a tu app si la instalas localmente (mediante ADB por USB para ejemplo). Ese APK (en tu máquina local) lo compiló Bubblewrap y, por lo tanto, lo firmó la clave que también creó para ti (durante la configuración de init). Recuerda que esta podría ser la la clave de firma de tu app instalada de forma local, pero en realidad se convierte en la "clave de carga" una vez cuando publicas tu app a través de Play.

A través de keytool

keytool es una herramienta de administración de certificados. Puedes usar keytool para extraer la huella digital SHA 256 asociada con el APK o AAB Bubblewrap generado. Ten en cuenta que esta huella digital es para la clave de firma local y si cuando subes tu app a Play y habilitas la firma de apps de Play, esta clave se convierte en la "clave de carga".

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

Otra forma de obtener el archivo correcto de Vínculos de recursos digitales para tu app es usar la Herramienta de vínculos de recursos:

  1. Instala la herramienta de vínculos de recursos desde Play Store.
  2. Descarga la app desde Google Play Store o instálala de forma local en el mismo dispositivo.
  3. Abre la app Asset Link Tool y verás una lista de todas las aplicaciones instaladas en tu dispositivo por nombre de paquete. Filtra la lista por el ID de aplicación que elegiste anteriormente. bubblewrap init y haz clic en esa entrada.
  4. Verás una página con la firma de tu app y un vínculo de recursos digitales generado. Haz clic en Los botones Copiar o Compartir en la parte inferior para exportarlo como quieras (por ejemplo, guardar en Google Keep, envíatelo a ti mismo por correo electrónico).

Se aplica la misma idea que antes con las claves de firma o carga. Si instalaste tu app desde el Google Play Store, Asset Link Tool te proporcionará la huella digital de la clave de firma de la app. Si instaló la app directamente desde su máquina local, entonces la huella digital es para la clave Se generó el cuadro de burbujas.

Ahora que lo subiste, asegúrate de que puedes acceder al archivo de vínculo del recurso en un navegador. Verifica que https://example.com/.well-known/assetlinks.json se resuelva en el archivo que acabas de subir.

Sitios web basados en Jekyll

Si Jekyll genera tu sitio web (como páginas de GitHub), deberás agregar una línea de de modo que el directorio .well-known se incluya en el resultado. En la ayuda de GitHub, encontrarás más información sobre este tema. Crea un archivo llamado _config.yml en la raíz de tu sitio (o agrégalo si ya existe). ingresa lo siguiente:

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

Agrega más claves

Un archivo de Vínculos de recursos digitales puede contener más de una aplicación y, para cada una, puede incluir más de una tecla. Por ejemplo, para agregar una segunda clave, usa el Herramienta de vínculos de recursos para determinar la clave y agregarla como una segunda entrada. El código en Chrome que analiza este JSON es bastante estricto, así que asegúrate de no agregar accidentalmente un coma adicional al final de la lista.

[{
  "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:..."
    ]
  }
}]

Soluciona problemas

Chrome registra el motivo por el que falla la verificación de Vínculos de recursos digitales y puedes ver los registros en una Dispositivo Android con adb logcat. Si estás desarrollando en Linux/Mac, puedes ver los registros relevantes desde un dispositivo conectado. con:

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

Por ejemplo, si ves el mensaje Statement failure matching fingerprint., debes usar el parámetro Herramienta de vinculación de recursos para ver la firma de tu app y asegurarte de que coincida con la de tu assetlinks.json .