¿El apk de Android contiene la biblioteca de clases básicas de Android?
1. Empaquetar archivos de recursos para generar archivos R.java.
2. Procese el archivo Aidl y genere el archivo Java correspondiente.
3. Compile el código fuente del proyecto y genere el archivo de clase correspondiente.
4. Convierta todos los archivos de clase para generar archivos Classes.dex.
5. Empaquetar y generar apk.
6. Firma el archivo apk.
7. Procese el archivo apk firmado.
Herramientas utilizadas en el proceso de empaquetado
Nombre
Ruta del código fuente de introducción de la función en la ruta del sistema operativo.
asociación americana de profesores de física Asociación americana de profesores de física
(herramienta de paquete de recursos de Android)
herramienta de paquete de recursos de Android
$ { ANDROID _ SDK _ HOME }/build-tools/
ANDROID_VERSION/aapt
Framework\Basics\Tools\aap
aidl
(lenguaje de definición de la interfaz de Android)
Lenguaje de descripción de la interfaz de Android,
convierta Aidl en. archivo java
$ { ANDROID _ SDK _ HOME }/build-tools/
ANDROID_VERSION/aidl
Framework\Basics\Tools\aidl
javacCompilador Java
${página de inicio de JDK}/java
c o /usr/bin/javac
abreviatura de DEXEDRINE
Convertir. Se puede reconocer el archivo de clase de la máquina virtual Davik
. archivo dex
$ { ANDROID _ SDK _ HOME }/build-tools/
ANDROID_VERSION/dx
apkbuilder
Generar datos apk Paquete
${ANDROID_SDK_HOME}/tools/
apkbuilder
sdk\sdkmanager\libs\sdklib\
src\com\android \sdklib\build\
ApkBuilderMain.java
La herramienta de firma para el archivo jarsigner.jar es ${JDK_home}/jarsigner o /usr/bin/jarsigner.
Herramienta de alineación de código de bytes Zipalign
${ ANDROID _ SDK _ HOME }/tools
/zipalign
Paso 1: empaquetar archivos de recursos y generar archivos R.java.
Archivos de recursos de entrada (es decir, archivos en res en el proyecto), archivos de activos (equivalentes a otro recurso, no optimizados por el sistema Android como archivos en res), archivo AndroidManifest.xml (léalo desde aquí. Tome el nombre del paquete, porque necesita generar el archivo R.java) y la biblioteca de clases básica de Android (archivo Android.jar).
Herramienta aapt
Salida de recursos empaquetados (archivo resources.ap_ en el directorio bin) y archivo R.java (en el directorio gen).
Aapt es una herramienta para empaquetar recursos. La mayoría de los archivos de recursos XML en formato de texto se compilarán en archivos de recursos XML en formato binario. Excepto los recursos empaquetados en APK y recursos res/raw, todos los demás recursos se compilarán. compilado o procesado. .
El proceso de generación llama principalmente a la función buildResource() en el archivo Resource.cpp en el directorio fuente de aapt. Esta función primero verifica la validez de AndroidManifest.xml y luego procesa el subdirectorio de recursos en el directorio res. La función que se está procesando es makeFileResource(), que incluye la verificación de validez de los nombres de los archivos de recursos. Agregar entradas a tablas de recursos, etc. Una vez completado el procesamiento, llame a la función compileResourceFile() para compilar los recursos en los directorios res y afirma y generar el archivo resources.arsc. La función compileResourceFile() se encuentra en el archivo ResourceTable.cpp en el directorio fuente de aapt. Finalmente, esta función llamará a la función parseAndAddEntry () para generar el archivo R.java y luego llamará a la función compileXmlfile () para compilar el archivo xml en el subdirectorio del directorio res, de modo que el archivo xml procesado esté simplemente "cifrado". Finalmente, empaquete y comprima todos los recursos, el archivo resources.arsc compilado y el archivo AndroidManifest.xml "cifrado" en el archivo resources.ap_ (compilar con la línea de comando de la herramienta Ant generará un archivo ap_ con el mismo nombre que build. Los atributos especificado por "Nombre del proyecto" en xml son los mismos).
Para obtener un proceso más detallado sobre este paso, lea la clase apkbuilderman del SDK. Su implementación de código se encuentra en el archivo SDK\SDK manager\libs\sdkblib\src\com\Android\sdkblib\build\ApkBuilder.java del código fuente del sistema Android. El código construye una clase apkbuilder y luego genera un archivo apk basado en el archivo que contiene resources.arsc. Este archivo generalmente termina con ap_ y luego llama a la función addSourceFolder () para agregar recursos de ingeniería. ) función para agregar recursos al archivo apk, los archivos apk incluyen archivos en el directorio res y el directorio afirma. Después de agregar recursos, llame a la función addResourceFromJar() para escribir la biblioteca dependiente en el archivo Apk, luego llame a la función addNativeLibraries() para agregar la biblioteca nativa (so o archivo bin compilado por el NDK de Android) en el directorio de bibliotecas del proyecto y, finalmente, Llame a sealApk() para cerrar el archivo apk.
Paso 6: Firma el archivo apk.
Ingrese sin firmar. archivo apk.
Herramienta jarsigner
La salida está firmada. archivo apk
Las aplicaciones de Android deben estar firmadas antes de poder instalarse en dispositivos Android. Hay dos formas de firmar archivos apk: una es firmar al depurar el programa. Cuando se usa eclipse para desarrollar programas de Android, se usará un debug.keystore para firmar el apk al compilar y depurar el programa; el programa está empaquetado y lanzado. En este caso, deberá proporcionar un archivo de firma que cumpla con los requisitos de la documentación de desarrollo de Android.
Hay dos formas de firmar: una es usar la herramienta jarsigner proporcionada en jdk para firmar; la otra es usar la herramienta signapk proporcionada en el código fuente de Android, cuyo código se encuentra en el directorio build\tools\signapk de Android. código fuente del sistema.
Paso 7: Alinear el archivo apk firmado.
Introduzca firma. archivo apk.
Herramienta Herramienta de alineación de cremallera
La salida está alineada. archivo apk.
La herramienta que se utilizará en este paso es zipalign, que se encuentra en el directorio android-sdk\tools. El código fuente se encuentra en el directorio build\tools\zipalign del código fuente del sistema Android. Su trabajo principal es alinear el paquete spk de modo que todos los archivos de recursos en el paquete spk estén desplazados desde el principio del archivo en un múltiplo entero de 4 bytes. De esta forma será más rápido acceder al archivo apk mediante el mapeo de memoria. El trabajo de verificar si el archivo apk está alineado se completa con la función verificar () del archivo ZipAlign.cpp, y el trabajo de procesar la alineación se completa con la función proceso ().
Tomando como ejemplo los archivos concretos incluidos en un proyecto concreto, el dibujo es el siguiente: