20210524 ---- AS firma el sistema de la aplicación y llama a la interfaz oculta del sistema

20210524 ---- AS firma el sistema de la aplicación y llama a la interfaz oculta del sistema

Solo aplicable al desarrollo a nivel de sistema, con código fuente del sistema y archivos de firma.

Ambiente local: 

1. Entorno de compilación AOSP

2. ubuntu 16.04

1. AS firma el sistema de aplicaciones

1. Obtener el archivo de firma del sistema

Generalmente se encuentra en el directorio build/make/target/product/security.​ 

a.testkey: APK normal, utilizado de forma predeterminada.

b. plataforma: proceso del sistema, el UID del proceso es android.uid.system.

c.compartido: el APK necesita compartir datos con el proceso de contactos y el UID del proceso es android.uid.shared. (ContactProvider/CallLogProvider/...)

d.media: este APK es parte del sistema de descarga/medios y el UID del proceso es android.media. (MTP/Proveedor de medios/...)

2. Generar plataforma.pem

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.pem -nocrypt

3. Generar plataforma.pk12

openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pk12 -name dev

Enter Export Password: (输入密码,比如123456)

Verifying - Enter Export Password:(输入密码,比如123456)

4. Genere platform.keystore (se puede usar en eclipse, este paso se puede omitir)

keytool -importkeystore -deststorepass android -destkeypass 123456 -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 123456 -alias dev

5. Generar platform.jks (para AndroidStudio)

keytool -importkeystore -deststorepass 123456 -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 123456

6. Importe la firma jks a AS y configúrela en el archivo gradle

  A. Abra el archivo build.gradle de la aplicación. 

  b. Complete la información correspondiente

C. Generar automáticamente la configuración correspondiente en build.gradle

7. Modificar el uid de la aplicación

Agregue modificación de uid en el archivo AndroidManifest.xml de la aplicación 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication"
    android:sharedUserId="android.uid.system">

En este punto, la configuración relacionada con la firma del sistema de la aplicación se completa y puede compilarla directamente.​ 

2. Llame a la interfaz oculta del sistema.

 En términos generales, en el lado de la aplicación, no se puede llamar a la interfaz oculta y se deben utilizar la reflexión y otros métodos.​ 

Sin embargo, nuestra aplicación ha sido firmada como una plataforma apk, por lo que, naturalmente, tiene permiso para llamar a estas interfaces. Ahora hay otro problema: al escribir una aplicación del sistema por separado en AS, no se puede llamar a la interfaz oculta.

Por supuesto, también podemos poner el código de la aplicación en el código del sistema.

De lo que quiero hablar ahora es de otro método, que consiste en compilar directamente a través de AS sin incluirlo en el código del sistema.​ 

1. Cree las clases que deben llamarse en la aplicación.

Si actualmente desea llamar a los métodos relevantes de PowerManager, simplemente cree la clase android.os.PowerManager directamente en la aplicación.

2. En la clase creada, declare el método, pero el cuerpo del método puede estar vacío.

 Si necesita devolver un valor, simplemente devuelva cualquier valor

  3. Llame a la interfaz correspondiente en la aplicación para compilar el pase.

De esta forma, todo el proceso de firma y compilación se completa en el AS de una vez.​ 

adjunto

Métodos comunes de firma del sistema

java -jar -Djava.library.path=$LIB_PATH  signapk.jar plataforma.x509.pem plataforma.pk8  $apk $signed_apk 

 LIB_PATH: la ruta que contiene la biblioteca libconscrypt_openjdk_jni.so, generalmente en ./prebuilts/sdk/tools/linux/lib64

signapk.jar: normalmente se encuentra en ./prebuilts/sdk/tools/lib

platform.x509.pem / platform.pk8: build/make/target/product/security  下

$apk: ruta apk original   

$signed_apk: nueva ruta apk

Referencia: 

https://blog.csdn.net/YellowGreatSun/article/details/87896407

Supongo que te gusta

Origin blog.csdn.net/ever_who/article/details/117321808
Recomendado
Clasificación