Método de compilación del código fuente de Android

8bc3cdb013e83efa66931a23abde655d.gif

Aprende contigo de por vidaXi, este es el programador de Android.

Artículos clásicos recomendados. Al leer este artículo, obtendrá los siguientes puntos de conocimiento:

1. Ver la rama donde se encuentra el proyecto
2. Cambiar a la rama de destino
3. Ver la rama actual
4. Compilar el código fuente de Android
5. Entorno de compilación de origen de Android
6. Proyectos de compilación requeridos para el almuerzo
7. Módulo de compilación único
8. Módulo de inserción verificar si la modificación entra en vigor
9. Referencias

1. Verifique la sucursal donde se encuentra el proyecto.

git branch -a
Representación: vea y enumere todas las ramas del proyecto actual

Ejemplos de proyectos de Qualcomm son los siguientes:

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch -a
* linux_android_development
  master
  remotes/origin/A/B_update_linux_android_development
  remotes/origin/HEAD -> origin/master
  ... ...
  remotes/origin/secure_linux_android_development
  remotes/origin/streamlined_code_engineering
Test@Test:/Test/Qualcomm_p/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

2. Cambie a la rama de destino

git checkout 分支名
Medios: Cambiar a una sucursal.

Ejemplos de proyectos de Qualcomm son los siguientes:
git checkout linux_android_development

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch -a
* linux_android_development
  master
  remotes/origin/A/B_update_linux_android_development
  remotes/origin/HEAD -> origin/master
  remotes/origin/cts_development_branch
  ... ...
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git checkout linux_android_development

3. Ver la sucursal actual

git branch
Indica: Ver la rama actual

Ejemplos de proyectos de Qualcomm son los siguientes:

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch 
* linux_android_development
  master
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

4. Compile el código fuente de Android

Android Compilación del código fuente, debido a que cada proyecto tiene scripts diferentes, los comandos de compilación a veces pueden ser diferentes.

El comando de compilación oficial de Google es el siguiente

1.source ./build/envsetup.sh
2.proyecto de almuerzo
3.make -j8

Los comandos de compilación del proyecto Qualcomm son los siguientes:

./buildall_userdebug.sh E5527M all

Cinco, entorno de compilación de Android fuente

Primero ingrese Android el directorio raíz del código fuente y ejecútelo source ./build/envsetup.sh.
De lo contrario source, no podrá compilar el módulo por separado más adelante.

Ejemplos de proyectos de Qualcomm son los siguientes:

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ source ./build/envsetup.sh 
including device/generic/car/vendorsetup.sh
including device/generic/mini-emulator-arm64/vendorsetup.sh
including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
including device/generic/mini-emulator-x86_64/vendorsetup.sh
including device/generic/mini-emulator-x86/vendorsetup.sh
including device/generic/uml/vendorsetup.sh
including device/google/muskie/vendorsetup.sh
including device/google/taimen/vendorsetup.sh
including device/qcom/common/vendorsetup.sh
including device/qcom/qssi/vendorsetup.sh
including vendor/partner_gms/products/vendorsetup.sh
including vendor/qcom/opensource/core-utils/vendorsetup.sh
including vendor/qcom/proprietary/common/vendorsetup.sh
including vendor/qcom/proprietary/prebuilt_HY11/vendorsetup.sh
Created 9 symlinks out of 9 mapped links..
including sdk/bash_completion/adb.bash
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

6. Proyectos de compilación necesarios para el almuerzo.

Ejecute  lunch el comando para ver la lista de todos los proyectos compilados y luego seleccione el proyecto compilado.
Ejemplos de proyectos de Qualcomm son los siguientes:

Primero, almuerce, luego seleccione la rama de compilación requerida
Test@Test:/Test/Qualcomm_p/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ lunch

You're building on Linux

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     ... ...
     40. msm8937_64-userdebug
     41. msm8937_64-user
     ... ...
     65. taimenb2-userdebug
// 选择要编译的分支名
Which would you like? [aosp_arm-eng] msm8937_64-userdebug

device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"

 ... ...
OUT_DIR=out
============================================
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
2. Sucursal de almuerzo directo

Por ejemplo, si necesitamos compilar msm8937_64-userdebugun proyecto, podemos realizar el método más simple y lunchorganizar directamente la posición del proyecto, comolunch 40

Test@Test:/Test/Qualcomm_p/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ lunch 40
device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=9
TARGET_PRODUCT=msm8937_64
... ...

HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=PKQ1.190601.001
OUT_DIR=out
============================================
Test@Test:/Test/Qualcomm_p/27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

7. Módulo único

A menudo  utilizamos mmm y mm compilamos módulos individuales.
mmm La mm principal diferencia es la ubicación del directorio en el que se encuentra actualmente. Úselo 
si actualmente se encuentra en el lugar donde desea compilar el módulo ; de lo contrario, use .(需要有android.mk文件,才可以进行)mmmmm

Ejemplos de proyectos de Qualcomm son los siguientes:

1. Ejemplos de uso de mmm (no en el directorio de FM en este momento)

Por ejemplo, la edición única FMno está FMen el directorio y debe ejecutarse.mmm vendor/qcom/opensource/commonsys/fm/fmapp2/

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ mmm vendor/qcom/opensource/commonsys/fm/fmapp2/

/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2/
Restriction Checker not present, skipping..
device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"
============================================
... ...
OUT_DIR=out
============================================
QSSI: not enabled for msm8937_64 target as vendor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_list.txt was not found.

... ...
#### build completed successfully (7 seconds) ####

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
Ejemplos de uso de 2. mm (en el directorio de FM)

Por ejemplo, si edita un solo archivo FMen FMel directorio, debe ejecutarmm

Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ cd  vendor/qcom/opensource/commonsys/fm/fmapp2/
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2$ mm
Restriction Checker not present, skipping..
device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=9
... ...
OUT_DIR=out
============================================
QSSI: not enabled for msm8937_64 target as vendor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_list.txt was not found.
ninja: no work to do.
... ...
build/make/core/base_rules.mk:412: warning: ignoring old commands for target `out/target/product/msm8937_64/vendor/lib64/hw/fingerprint.default.so'
ninja: no work to do.

#### build completed successfully (41 seconds) ####

Test@Test:/Test/Qualcomm_p/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2$

8. El módulo push verifica si la modificación es efectiva.

1. Utilice la versión de depuración y monte el teléfono móvil.

adb shell getprop ro.build.type Se utiliza principalmente para verificar la versión utilizada actualmente. Solo debug la versión se puede usar para depurar y userla versión no se puede depurar.

Ejemplos de proyectos de Qualcomm son los siguientes:

C:\Users\Administrator>adb shell getprop ro.build.type
userdebug

C:\Users\Administrator>adb root

C:\Users\Administrator>adb remount
remount succeeded

C:\Users\Administrator>
2. Copie el apk compilado de módulo único generado en el escritorio y envíelo al teléfono móvil.

adb push 本地文件 手机目录
adb pushSe utiliza principalmente para reemplazar el del teléfono móvil apky depurar para verificar si el editor único es efectivo.

El ejemplo de Qualcomm  FM es el siguiente:

C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\FM2.apk /system/app/FM2
C:\Users\Administrator\Desktop\FM2.apk: 1 file pushed. 9.7 MB/s (861880 bytes in 0.085s)

C:\Users\Administrator>
3. Borre los datos de almacenamiento de push apk

adb shell pm clear 包名
Se utiliza para borrar los datos del nombre del paquete actual.
Por ejemplo:adb shell pm clear com.caf.fmradio

El ejemplo de Qualcomm  FM apkes el siguiente:

C:\Users\Administrator>adb shell dumpsys activity | findstr Run
    Running activities (most recent first):
        Run #0: ActivityRecord{3bc8d7d u0 com.caf.fmradio/.FMRadio t52}
    Running activities (most recent first):
        Run #0: ActivityRecord{89df584 u0 com.android.launcher3/com.android.searchlauncher.SearchLauncher t51}
C:\Users\Administrator>adb shell pm clear com.caf.fmradio
Success

C:\Users\Administrator>

referencias:

[Documentación de Tencent] Base de conocimientos del marco de Android
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5

Recomendación amistosa:

Colección de información útil sobre el desarrollo de Android.

En este punto, este artículo ha terminado. El editor cree que el artículo es una reimpresión de Internet y es excelente. Puede hacer clic para leer el artículo original y apoyar al autor original. Si hay alguna infracción, comuníquese con el editor para eliminarlo. Sus sugerencias y correcciones son bienvenidas. . Esperamos su atención y gracias por leer, ¡gracias!

5aef24a2f64d1465cd321ac1c8a2451d.jpeg

¡Haz clic para leer el artículo original y darle me gusta al jefe!

Supongo que te gusta

Origin blog.csdn.net/wjky2014/article/details/131671913
Recomendado
Clasificación