Operación después de fortalecer la plataforma de aplicaciones de Android (reasignación de apk "zipalign", "apksigner", "jarsigner") Entorno operativo: MacOS

imagen cabeza arriba

prefacio

decir una cosa horrible:El actual esquema de firmas de Android ya tiene v1, v2, v3, v4, v3 admite varios certificados y v4 es una firma incremental. Consulte la documentación oficial . Todavía nos enfocamos en v1 y v2 en la actualidad.

Por supuesto, esto es una digresión. El tema actual de este artículo es: la postura de volver a firmar después de que se fortalece la plataforma Android. Cuando descargamos el apk después de endurecerlo en plataformas como Tencent Hardening/360 Hardening/Ai Encryption, debemos volver a firmarlo. En cuanto a la renovación de la firma, existen dos métodos:

  • Java:firmante del tarroLa firma jar que viene con java, es decir la firma v1 empaquetada por nuestro Android, el esquema de firma solo puede ser v1
  • Androide:firmante de apkLa firma específica de Android, es decir, la firma v2 empaquetada, admite varios esquemas de firma (v1~v4).

Este artículo presentará los paquetes apk descargados de las principales plataformas de refuerzo y explicará en detalle las operaciones de " alineación (zipalign) " y " re-firma (jarsigner y apksigner) ".

entorno operativo

entorno operativo Versión
Sistema operativo macOS 13.0.1 (Próximamente)
Estudio Android 2021.3.1 Parche 1 (Dolphin)
JDK 1.8.0_322
SDK de Android 27.0.3

Los tres métodos descritos en este artículo necesitan configurar variables de entorno. De lo contrario, debe abrir la terminal y navegar a la ubicación correspondiente:

  • ubicación de la herramienta zipalign: SDK ruta/herramientas/zipalign

    Ubicación:/Users/leomark/Library/Android/sdk/tools/zipalign

  • ubicación de la herramienta jarsigner: ruta JDK/Contents/Home/bin/jarsigner

    Por ejemplo: /Users/leomark/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home/bin/jarsigner

  • Ubicación de la herramienta Apksigner: SDK path/build-tools/"version number"/apksigner "el número de versión debe ser >=24.0.3

    Por ejemplo: /Users/leomark/Library/Android/sdk/build-tools/27.0.3/apksigner

Para configurar las variables de entorno, consulte el artículo anterior Flutter Development-Installation and Environment Configuration-Configuration Environment Variable Failure Problem Agregue tres variables de entorno (las que se han agregado se pueden ignorar y las que faltan se pueden agregar) :

export PATH="「SDK路径」/tools"
export PATH="「JDK路径」/Contents/Home/bin"
export PATH="「SDK路径」/build-tools/「版本号」" 「版本号需 >= 24.0.3」
例如:
export PATH="/Users/leomark/Library/Android/sdk/tools"
export PATH="/Users/leomark/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home/bin"
export PATH="/Users/leomark/Library/Android/sdk/build-tools/27.0.3"

Tenga en cuenta que, porquefirmante de apkFue lanzado por Google en Android 7.0 Nougat, por lo que nuestro número de versión debe ser >=24.0.3, de lo contrario solo puedes elegirfirmante del tarroLa forma de hacer un paquete v1.

alineación (zipalign)

El paquete apk reforzado que descargamos de la plataforma se describe en detalle en el documento oficial. Para más detalles, consulte " Documento oficial - zipalign" aquí.zipAlignEnabled verdaderoEsta opción, pero después de reforzarla, estaAlinear "zipalign"está perdido y necesitamos recrear elAlinear "zipalign". El archivo build.gradle en el directorio de aplicaciones del proyecto:

    buildTypes {
    
    
        release {
    
    
            minifyEnabled true//混淆
            buildConfigField "boolean", "LOG_DEBUG", "false" //不显示log
            zipAlignEnabled true     //Zipalign优化
            shrinkResources true    // 移除无用的resource文件
            signingConfig signingConfigs.release
            multiDexKeepFile file ('multidex-config.txt')
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
    
    
            minifyEnabled true//混淆
            buildConfigField "boolean", "LOG_DEBUG", "false" //不显示log
            zipAlignEnabled true     //Zipalign优化
            shrinkResources true    // 移除无用的resource文件
            signingConfig signingConfigs.debug
            multiDexKeepFile file ('multidex-config.txt')
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

hay que tener en cuenta es,El uso de zipalign tiene un límite de tiempo para jarsigner y apksigner:

  • Si usa apksigner, debe usar zipalign antes de firmar el archivo APK. Si realiza más cambios en el APK después de firmarlo con apksigner, la firma dejará de ser válida.
  • Si usa jarsigner, debe usar zipalign después de firmar el archivo APK.

Después de configurar las variables de entorno, puede usar el terminal para usar la declaración de alineación correspondiente. El siguiente es el método para verificar si el apk está alineado. Abra el terminal e ingrese:

zipalign -c -v 4 apk路径
例如:
zipalign -c -v 4 /Volumes/Data/Android_jiagu/teacher/jiagu.apk

El resultado es el siguiente:

Compruebe la declaración de terminal de alineaciónCompruebe el resultado del terminal de alineación (fallido)

El siguiente paso es usar la terminal para realizar la operación de alineación de apk e ingresar en la terminal abierta:

zipalign  -v 4 「需要对齐操作的apk地址」 「对齐之后生成的地址」
例如:
zipalign  -v 4 /Volumes/Data/Android_jiagu/teacher/jiagu.apk /Volumes/Data/Android_jiagu/teacher/zipaligned.apk

El resultado es el siguiente:

inserte la descripción de la imagen aquíinserte la descripción de la imagen aquí

Si aparece "Verificación exitosa", la alineación es exitosa. Podemos repetir la operación de alineación de verificación de apelaciones para ver que los resultados son los siguientes:

inserte la descripción de la imagen aquíinserte la descripción de la imagen aquí

Nota: El nombre del apk al final de la declaración de detección aquí debe cambiarse azipaligned.apk, la razón es que cuando alineamos, uno nuevo llamadozipaligned.apkarchivo nuevo para . Por supuesto, el nombre aquí se puede definir libremente.

Vuelva a firmar apksigner (método recomendado)

Volver a firmar "apksigner" es lo mismo que el método de alineación "zipalign", necesitamos usar la declaración de verificación y generar la declaración.
hay que tener en cuenta es:

  • Usamos el método "apksigner" para volver a firmar, y primero debemos alinear el paquete apk "zipalign".No puede alinear el paquete apk "zipalign" después de volver a firmar.Aunque la declaración de terminal "zipalign" se puede ejecutar después de volver a firmar, pero después de la alineación, la firma del paquete apk dejará de ser válida.

Entonces, si usamos el método "apksigner" para volver a firmar, primero debemos alinear el paquete apk "zipalign" y luego volver a firmar.
La siguiente es una declaración de terminal para verificar si está firmada e ingresarla en la terminal abierta:

apksigner verify -v 检查的apk路径
例如:
apksigner verify -v /Volumes/Data/Android_jiagu/teacher/zipaligned.apk

El resultado es el siguiente:

Comprobar resultado (sin firmar)
A continuación, continúe ingresando la declaración de nueva firma "apksigner" en la terminal (por supuesto, también puede ejecutar la declaración de nueva firma directamente después de alinear "zipalign" sin ejecutar la declaración de verificación):

apksigner sign -verbose --ks 「jks文件路径」 --v1-signing-enabled (「true/false」v1打包开启/关闭) --v2-signing-enabled (「true/false」v2打包开启/关闭) -ks-key-alias (jks别名 key-alias) --ks-pass pass: (jks密码,key store password) --key-pass pass:(key 密码,key password) --out 「生成的apk路径,重签名后的」 「对齐之后的apk路径」
例如:
apksigner sign -verbose --ks /Volumes/Data/Android_jiagu/teacher/zhty.jks --v1-signing-enabled true --v2-signing-enabled true --ks-key-alias key --ks-pass pass:123456 --key-pass pass:123456 --out /Volumes/Data/Android_jiagu/teacher/signed.apk /Volumes/Data/Android_jiagu/teacher/zipaligned.apk

Los resultados de la operación del terminal son los siguientes: si aparece Firmado, la nueva firma es exitosa.

Re-firma exitosa
Verifiquemos nuevamente, la terminal ingresa la declaración de verificación, el resultado es el siguiente:

Comprobar después de volver a firmar apksigner
Aparecen las dos líneas en el cuadro, lo que significa que hemos vuelto a firmar con éxito "apksigner", y podemos llevar el paquete apk a los principales mercados de aplicaciones para su funcionamiento.

Volver a firmar jarsigner (embalaje v1)

Volver a firmar "jarsigner" es lo mismo que "adksigner", y solo necesita verificar y volver a firmar dos métodos.
hay que tener en cuenta es:

  • La nueva firma "jarsigner" se firma para alinear el paquete apk "zipalign".Si "jarsigner" se vuelve a firmar después de alinear "zipalign", la alineación "zipalign" no será válida.

Entonces, primero debemos volver a firmar "jarsigner" y luego realizar la operación "zipalign". A continuación, abrimos la terminal e ingresamos:

jarsigner -verify 「检查的apk路径」
例如:
jarsigner -verify /Volumes/Data/Android_jiagu/teacher/jiagu.apk

El resultado es el siguiente:

cheque de jarsigner sin firmar
A continuación, continúe ingresando la declaración de nueva firma "jarsigner" en la terminal (por supuesto, también puede ejecutar directamente la declaración de nueva firma sin ejecutar la declaración de verificación):

jarsigner -verbose -keystore 「apk签名文件路径」 -storepass 「签名密码」 -signedjar 「需要重签名apk路径」  「加固的apk路径」 「签名别名 key-alias」
例如:
jarsigner -verbose -keystore /Volumes/Data/Android_jiagu/teacher/zhty.jks -storepass 123456 -signedjar /Volumes/Data/Android_jiagu/teacher/signed.apk /Volumes/Data/Android_jiagu/teacher/jiagu.apk key

El resultado es el siguiente:

firma nueva de jarsignerresultado de la nueva firma de jarsigner

Después de firmar comprobamos de nuevo:

Compruebe después de la firma del firmante del tarro
Después de verificar, podemos repetir la operación de alinear "zipalign" mencionada anteriormente. Después de alinear nuevamente, podemos alinear el paquete apk con "zipalign" y colocarlo en los estantes de los principales mercados de aplicaciones.

Uso específico

El orden de las operaciones para volver a firmar "jarsigner" y "apksigner" es:

  • firmante del tarro:Comprobar si el apk está firmado===>re-firma de "jarsigner"===>Si la nueva firma es exitosa===>Alinear "zipalign"===>comprobar la alineación
  • firmante de apk:comprobar la alineación===>Alinear "zipalign"===>comprobar la alineación===>Comprobar si el apk está firmado===>firma de nuevo "apksigner"===>Si la nueva firma es exitosa

Para declaraciones de operación específicas, consulte la introducción detallada de cada método anterior. Uso recomendado「firmante de apk」Realice una nueva firma y escriba directamente el paquete apk firmado de v1 y v2.

Al alinear "zipalign" aparece "El archivo de salida '...apk' existe"

Cuando ejecutamos la declaración de alineación varias veces, si usamos el mismo nombre cada vez e ingresamos la declaración de alineación, la terminal explotará este error, como se muestra en la siguiente figura:

existe alineación
El terminal nos está recordando que el archivo ya existe. La declaración que ingresamos no admite la sobrescritura. Verifique la alineación del sitio web oficial de Android「zipalign」definición, la solución se encuentra al final del artículo:

Sitio web oficial de Android: alineación

Se puede ver en la lista del sitio web oficial que cuando ingresamos en la terminal, agregamos un「-f」Puede sobrescribir el archivo de salida. Entonces, actualmente tenemos dos soluciones:

  • Cada vez que endurecemos, borramos todos los archivos apk en la carpeta de operación actual y luego ejecutamos la instrucción.
  • Con base en la declaración original, agregue un「-f」Declaración terminal:
    •  zipalign -f -v 4 「需要对齐操作的apk地址」 「对齐之后生成的地址」
       例如:
       zipalign -f -v 4 /Volumes/Data/Android_jiagu/teacher/jiagu.apk /Volumes/Data/Android_jiagu/teacher/zipaligned.apk
       
      

Resumir

El anterior es el tutorial para volver a firmar después de descargarlo desde la plataforma de refuerzo que se presenta en este artículo. Una vez más, se recomienda utilizar「firmante de apk」Realice una nueva firma y escriba directamente el paquete apk firmado de v1 y v2.

Si hay algo mal o incorrecto, ¡por favor indíquelo!

imagen cabeza arriba
Materiales de referencia relevantes:

Supongo que te gusta

Origin blog.csdn.net/weixin_43683367/article/details/128398156
Recomendado
Clasificación