¿Es posible descubrir y ejecutar Android Apps de terceros en un dispositivo emulado?

Actualmente estoy tratando de aprender acerca de las aplicaciones instantáneas de Android. Como no poseo dispositivos reales que los soporten, estoy usando el emulador (de Android Studio 3.0 Canary 9). Puedo ejecutar con éxito aplicaciones instantáneas de "juguete" ( como esta ) en mi Nexus 5x emulado (con Play Store), así que creo que mi entorno de desarrollo está configurado correctamente.

Sin embargo, tenía curiosidad por conocer el proceso de descubrimiento de aplicaciones de terceros y averiguar cómo es la experiencia del usuario. Al carecer de un dispositivo adecuado, utilicé el navegador Chrome emulado para buscar sitios (como Stack Exchange) que tengan aplicaciones instantáneas habilitadas. Pero estas búsquedas sólo me dan los sitios web habituales (no aplicaciones instantáneas).

He leído este post con gran interés, porque parece sugerir que esto debería funcionar. Sin embargo, esas respuestas no parecían ayudarme.

  • Estoy en Australia, que debería ser uno de los países donde se admiten aplicaciones instantáneas .
  • Como se sugirió en una respuesta, he intentado enviar enlaces que deberían abrirse en aplicaciones instantáneas en correos electrónicos y luego hacer clic en ellos, pero todavía me envía a un enlace de navegador.
  • La respuesta sobre la verificación DAL es interesante, pero no parece que debería aplicarse cuando se abren los enlaces en un navegador?

Los dispositivos emulados API 24 y API 26 (los cuales incluyen Play Store) se encuentran actualmente en condiciones algo diferentes, probablemente porque he estado intentando todo tipo de trucos para que funcione. (TLDR: Nada funciona para mí.)

  • En el dispositivo emulador API 24, si adb shell pm list packages grep "com.google.android.instantapps.supervisor" entonces saldrá el package:com.google.android.instantapps.supervisor como una respuesta sugiere (pero todavía doesn No funcionan).

  • El dispositivo API 24 cuenta con Google Play services for Instant Apps (version 1.9-sdk-155682639) instalados.

  • El dispositivo API 24 tiene una notificación de "rayo" en la parte superior de la pantalla que dice "Modo de desarrollo activo": las URLs will be routed to Dev Manager in order to launch Instant Apps locally. Uninstall Dev Manager to disable Development Mode. URLs will be routed to Dev Manager in order to launch Instant Apps locally. Uninstall Dev Manager to disable Development Mode.

  • En el dispositivo API 24, Configuración -> Google -> Aplicaciones instantáneas, las aplicaciones instantáneas se establecen en true

  • En el dispositivo emulado API 26, si adb shell pm list packages grep "com.google.android.instantapps.supervisor" no devuelve nada

  • En el dispositivo API 26, los Google Play services for Instant Apps no están instalados y no hay ninguna notificación de "rayo" ni

  • En el dispositivo API 26, Configuración -> Google no muestra las aplicaciones instantáneas (por lo que no hay nada que establecer)

Estos son algunos detalles adicionales, en caso de que sean relevantes:

  • Mi máquina de desarrollo ejecuta Windows 10 (no por elección)
  • Los dispositivos emulados son Nexus 5x (API 24 y 26) con Play Store
  • También intenté las imágenes "x86", puesto que algunas personas las recomendaron para Windows, pero no trabajaron tampoco. (Esto puede deberse a que las imágenes "x86" no vienen con Play Store, que creo que es necesario para Instant Apps?)
  • Estoy conectado a una cuenta de usuario de Google real en los dispositivos emulados.

Con el entorno de desarrollo que he configurado ahora, puedo seguir desarrollando mi propia aplicación instantánea, implementarla en mis propios dispositivos emulados y probarla. Realmente estaba curioso de ver cómo funcionan las aplicaciones instantáneas de otras personas. Y otro post (vinculado arriba) sugirió que debería ser capaz de hacer esto.

Así que aquí está mi pregunta: ¿Es posible descubrir y abrir aplicaciones de terceros en un dispositivo emulado (y si es así, cómo)?

¿Es posible descubrir y abrir aplicaciones de terceros en un dispositivo emulado (y si es así, cómo)?

En la actualidad, no. 🙁 Hay restricciones de seguridad que impiden que los dispositivos emulados utilicen varios servicios de Google. Si comprueba el registro, puede encontrar un mensaje similar a "io.grpc.StatusException: INVALID_ARGUMENT: El encabezado de credenciales de la aplicación no es válido. Pasar un encabezado de credencial de aplicación válido. "

En el dispositivo emulado API 26, si escribo adb shell pm list paquetes grep "com.google.android.instantapps.supervisor" no devuelve nada

FYI, Supervisor no se utiliza para Android O.

Cuando habilitas Android Instant App desde App Link Assistant , tu Actividad que quieres iniciar directamente (o tener información en tu sitio web) se modifica como se indica a continuación:

 <activity android:name=".View.Activity.AboutActivity" android:parentActivityName="com.example1.uddhav.stopwatch.View.Activity.AboutActivity"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="your_web_address" /> </intent-filter> </activity> 

Por lo tanto, cuando obtiene aplicaciones de terceros, debe modificar el archivo AndroidManifest.xml como se AndroidManifest.xml anteriormente.

Y, para poder vincular su actividad instantánea (por ejemplo, AboutActivity), tiene que guardar el assetlinks.json generado dentro de la carpeta .well-known de la carpeta raíz de su sitio web como <your_web_site>/.well-known/assetlinks.json

Hay una herramienta de ingeniería inversa que le permite modificar el archivo AndroidManifest.xml .

Nota: Como no necesitas uses-permission etiqueta de uses-permission para aplicaciones instantáneas, no necesitas renunciar a ella.

Como no está manejando la intención de AppLink, no necesita

 // ATTENTION: This was auto-generated to handle app links. Intent appLinkIntent = getIntent(); String appLinkAction = appLinkIntent.getAction(); Uri appLinkData = appLinkIntent.getData(); 

Por lo tanto, up to my understanding , es posible ejecutar aplicaciones de Android de terceros en dispositivos emuladores compatibles. Me disculpo si malinterpreté su pregunta.

  • Gradle kotlin Método no soportado Dependencies.getAtoms ()
  • Android Room - consulta de selección simple - No se puede acceder a la base de datos en el hilo principal
  • Java.lang.NoSuchMethodError: Ningún método virtual keySet ()
  • Vista previa de Android Studio 3.0: Studio no tiene acceso de escritura
  • Dagger 2 con Android Studio 3.0 Preview (Canary 2) usando annotationProcessor en lugar de android-apt
  • ConstraintLayout no funciona en el editor de GUI Android Studio 3.0 - Canary 4
  • El emulador de Android no puede acceder a Internet
  • Android Studio 3.0 Canary 1 GRPC error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.