1 votos

TWRP recuperación: "pm install /path/to.apk" no funciona

Estoy creando un zip flashable para TWRP, para desbloquear mi teléfono. También quiero instalar aplicaciones en el mismo script.

Sin embargo, cuando hago "pm install /path/to.apk" (ya sea en un script o a través de la terminal) obtengo el siguiente error:

Error: java.lang.NullPointerException: Intento de invocar un método de interfaz 'android.os.IBinder android.os.IServericeManager.getService(java.lang.String)' en una referencia de objeto nulo

Obtengo el mismo error cuando intento otros comandos de pm, pero cuando ingreso solo "pm" obtengo el mensaje de ayuda.

¿No es posible instalar .apks de esta manera o hay algo más mal?

¡Gracias!

1voto

Zulgrib Puntos 26

Use el script para colocar el archivo APK en el lugar correcto en /data/app en su lugar.

Se deben utilizar mkdir, mv, chown y chmod.

Aunque el binario de pm está presente, no puede realizar su trabajo desde la recuperación, que es un sistema completamente diferente. Imagínalo como si alguien intentara instalar un juego en su sistema Windows mientras está arrancado en Ubuntu.

0voto

Andy Yan Puntos 501

Mientras que @Zulgrib ya ha explicado por qué pm no funcionaría, proporcionaré un poco de información adicional sobre cómo integrar aplicaciones en el zip flashable.

Básicamente, colocas los APK de las aplicaciones en la ubicación correcta en el zip, y tienes el updater-script extraerlo donde corresponde. El script generalmente hace esto ejecutando:

package_extract_dir("data", "/data");

Por lo tanto, para un APK con nombre de paquete com.abc, generalmente debería colocarse en /data/app/com.abc-1/base.apk para que se instale correctamente. A diferencia de lo que dijo @Zulgrib, no se necesitan comandos de shell: el script de extracción hace todo por ti.

Ten en cuenta que:

  • Si ya tienes esta aplicación instalada y posteriormente actualizada, puede haber una carpeta como com.abc-2 que tu zip flashable no puede sobrescribir, y la instalación fallará. Mi sugerencia es usar estos zips flashables solo para actualizar aplicaciones contenidas dentro, para que los nombres de las carpetas siempre tengan -1 detrás y se actualicen correctamente.
  • Algunas aplicaciones requieren más que el APK en el directorio para poder ejecutarse. En mi caso, observé que el Emulador de Terminal de Jackpal requiere que se extraigan sus bibliotecas, pero nunca supe cómo hacerlo correctamente, así que al final recurrí a instalarlo manualmente.

0 votos

Extraer las bibliotecas es tan simple como emitir un comando unzip. Luego, cambie los permisos de chmod y chown correctamente y funcionará.

0 votos

@iBug El problema es que tengo dispositivos ARM y ARM64 que necesitan diferentes conjuntos de bibliotecas, pero a partir de la salida de registro de la aplicación, parece buscar las bibliotecas en la misma carpeta, independientemente de la arquitectura. No puedo molestarme en descubrir cómo predecir la arquitectura solo para instalar una aplicación menor. Si tienes detalles seguros sobre cómo hacerlo, simplemente edítalo, estoy abierto a experimentar.

0 votos

Extraer lib/armeabi y lib/armeabi-v8a para dispositivos ARM y ARM64, respectivamente.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X