es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizar la aplicación en un dispositivo rooteado y ejecutarla de forma manual.

Estoy escribiendo una aplicación en kotlin y java y solo en TV-Boxes rooteados. He agregado una función para descargar un archivo apk desde mi propio servidor e instalarlo y después de la instalación volver a ejecutarlo:

Log.d(TAG, "doInBackground: writeByte install");
cs.writeBytes(String.format("cat %s | pm install -S %d\n", strings[0], length));
Log.d(TAG, "doInBackground: writeByte start activity");
cs.writeBytes(("am start -n com.exam.ple.views/com.exam.ple.views.SplashActivity" +
    " --ez update true\n")); 

El problema es que este código funciona bien si el archivo apk firmado está en modo de depuración (debug). Pero cuando está en modo de lanzamiento (release), no funciona correctamente, lo que significa que la aplicación se instala correctamente pero no inicia la actividad (y solo cuando está firmada como APK de lanzamiento).
He verificado el comando am start ... en la terminal (Termux) y funciona bien en todas las circunstancias.

¿Alguna idea de qué podría estar causando este problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, Android, Android Studio, APK y root, parece que el problema aquí podría estar relacionado con el hecho de que la aplicación está siendo firmada como un APK de lanzamiento. Cuando una aplicación de Android se firma en modo de depuración, permite más flexibilidad en cuanto a cómo se inicia e instala. Sin embargo, cuando se firma en modo de lanzamiento, se requieren especificaciones más estrictas y precisas en cuanto a cómo se inicia e instala.

    El hecho de que el comando am start ... funcione correctamente en la Terminal sugiere que puede haber un problema con la forma en que el comando es invocado en el código. Sin ver la implementación completa del código, es difícil determinar la causa exacta del problema. Sin embargo, una posible solución podría ser agregar banderas explícitas al comando am start ... para asegurarse de que la actividad se lance correctamente, incluso en modo de lanzamiento. También puede valer la pena verificar la salida del logcat para ver si hay algún error o excepción que se esté lanzando y que pueda proporcionar más información sobre el problema.

Comments are closed.