Red de conocimiento informático - Conocimiento informático - ¿Cómo obtengo permisos del sistema para mi aplicación y cómo firmo una apk con una clave de plataforma?

¿Cómo obtengo permisos del sistema para mi aplicación y cómo firmo una apk con una clave de plataforma?

Muchas funciones en Android solo pueden ser invocadas por programas del sistema o programas con permisos de root; de lo contrario, se producirá una excepción de "Autorización denegada". Por lo tanto, si deseas llamar a estas funciones, debes otorgar permisos de root al programa. Aquí hay dos métodos específicos

Nota: Es posible que estos dos métodos no funcionen en todos los sistemas Android.

Método 1: Debe compilar en el entorno de código fuente de Android:

Agregue el atributo android:sharedUserId="android.uid.system en el nodo de manifiesto AndroidManifest.xml del solicitud ".

Modifique el archivo Android.mk y agregue la línea LOCAL_CERTIFICATE := plataforma.

Utilice el comando mm para compilar y el apk generado tendrá permiso para modificar la hora del sistema.

Método 2:

Igual que el método anterior, agregue el atributo android:sharedUserId="android.uid.system".

Utilice eclipse para compilar el archivo apk, pero el archivo apk no se puede ejecutar.

Abra el archivo apk con zip y elimine los archivos CERT.SF y CERT.RSA en el directorio META-INF. (Elimine los archivos CERT.SF y CERT.RSA en el directorio META-INF. (Me salté este paso (originalmente sin querer, pero luego descubrí que también se menciona a continuación), pero el efecto es igual de bueno)

Crear

Vuelva a firmar el archivo apk usando la clave de plataforma del sistema de destino. Este paso es un poco problemático. Primero debe encontrar la ubicación del archivo clave en el directorio del código fuente de Android. " build\target\product\security", hay dos archivos platform.pk8 y platform.x509.pem. Luego

Utilice la herramienta signapk proporcionada por Android para firmar. El código fuente de signapk está en ". build\ tools\signapk", utilice "signapk

platform.x509.pem platform.pk8 input.apk

output.apk". Es mejor utilizar una ruta absoluta para nombrar el archivo para evitar evitar que sea descubierto. También puede modificar el código fuente y usarlo directamente.

Para explicar el principio, primero agregue el atributo

android:sharedUserId="android.uid.system. ". Es posible configurar varios APK con el mismo ID de usuario para que se ejecuten en el mismo proceso. Por lo tanto, al asignar el UID del programa a android.uid.system, desea que el programa se ejecute en el proceso del sistema para que

Simplemente agregar el UID no sea suficiente. Si descubre que el APK no se puede instalar en este momento, le indicará que la firma no coincide. El motivo es que el programa lo necesita. para ejecutar en el proceso del sistema

También están las claves de la plataforma del sistema de destino

, que son los dos archivos platform.pk8 y platform.x509.pem mencionados en el segundo método anterior. en realidad, poner el apk en el sistema<. /p>

Estas dos claves se usarán para firmarlo antes del proceso. Agregar LOCAL_CERTIFICATE := plataforma en el primer método en realidad usa estas dos claves para firmar el apk.

El problema es que los programas generados de esta manera solo se ejecutarán en el sistema Android original o en un sistema compilado por usted mismo, porque solo ese sistema puede obtener

platform.pk8

p>

y archivos platform.x509.pem. Si es un producto de otra empresa, ni siquiera podrás instalarlo en Android. Intente utilizar la clave original de Android

para firmar. El programa se ejecuta normalmente en el emulador, pero al instalarlo en G3, aparece directamente el mensaje "El paquete... no tiene firmas que coincidan". >El archivo .x509.pem de la plataforma no tiene firmas que coincidan con

las del usuario compartido android.uid.system", que también es una protección para el sistema.

Finalmente, el atributo android:sharedUserId no solo coloca el apk en un proceso del sistema, sino que también configura varios APK para que se ejecuten en un solo proceso para que puedan extraer los datos, lo que debería ser muy útil.