studio - ¿Cómo construir una parte de Android AOSP?
android tag (3)
Estoy tratando de construir mis propias librerías y aplicaciones en el directorio externo de AOSP, pero el problema es que tengo que ejecutar make cada vez y el make compilará / construirá todo el androide. En mi carpeta de aplicaciones externas tengo el archivo Android.mk, pero no puedo compilarlo usando ndk-build, buscará la carpeta JNI y NDK_BUILD_PATH, por lo que la pregunta es:
¿Cómo puedo construirlo sin reconstruir todo AOSP?
Para abordar brevemente el caso más general, mm
es un comando útil, pero la ubicación desde la que debe ejecutarse no está bien documentada, o más específicamente, no siempre está claro qué es un "módulo".
Digamos que ha realizado un cambio en SystemUI, que es una aplicación especializada que es clave para la funcionalidad general de Android. Esto es parte del repositorio de frameworks / base.
Si solo va al directorio frameworks / base, y ejecuta mm
, no encontrará nada que hacer; sus cambios serán ignorados.
Para recoger realmente sus cambios con mm
, debe estar en el directorio donde residen. En este ejemplo, debería estar en frameworks / base / packages / SystemUI. La ubicación adecuada para otras bases de código será diferente, pero como una conjetura , probablemente deba estar donde Android.mk
el Android.mk
cubre sus cambios.
Entonces puede usar make snod
target desde la parte superior del árbol para reconstruir system.img y flashearlo con fastboot, o usar adb remount
, adb push the SystemUI.apk nuevo, y luego adb shell "start; stop"
para reiniciar el marco de Android.
Puede obtener una lista de todos los módulos en su código de Android con el siguiente comando:
make modules
Para construir cualquier módulo único:
make [modulename]
Una invocación de make
simple no se reconstruirá más de lo necesario, pero incluso con una biblioteca de hojas o un binario, incluso una compilación incremental puede demorar unos minutos. Si solo desea compilar su módulo particular, puede consultar las funciones documentadas brevemente en la parte superior de build / envsetup.sh. Específicamente, las funciones de shell m
y mm
deberían ser útiles, ya que solo construyen uno o más módulos sin preocuparse por sus dependencias y sin siquiera intentar leer todos los archivos de Android.mk que se encuentran en el árbol. Su uso debería acelerar significativamente las construcciones incrementales (pero todas las dependencias deben haberse creado en algún momento, es decir, solo son útiles para las construcciones incrementales).
build / envsetup.sh también define una serie de otras funciones de shell que son útiles para construir la plataforma Android y trabajar con su código fuente.