¸ÅÊö
Android Build ϵͳÊÇÓÃÀ´±àÒë Android ϵͳ¡¢Android SDK ÒÔ¼°Ïà¹ØÎĵµµÄÒ»Ì׿ò¼Ü¡£ÔÚAndroidϵͳÖУ¬Android
µÄÔ´ÂëÖаüº¬ÁËÐíÐí¶à¶àµÄÄ£¿é¡£ ²»Í¬²úÉ̵IJ»Í¬É豸¶ÔÓÚ Android ϵͳµÄ¶¨Öƶ¼ÊDz»Ò»ÑùµÄ¡£ÈçºÎ½«ÕâЩģ¿éͳһ¹ÜÀíÆðÀ´£¬ÈçºÎÄܹ»ÔÚ²»Í¬µÄ²Ù×÷ϵͳÉϽøÐбàÒ룬ÈçºÎÔÚ±àÒëʱÄܹ»Ö§³ÖÃæÏò²»Í¬µÄÓ²¼þÉ豸£¬²»Í¬µÄ±àÒëÀàÐÍ£¬ÇÒ»¹ÒªÌá¹©ÃæÏò¸÷¸ö²úÉ̵͍֯À©Õ¹£¬AndroidϵͳÈçºÎ½â¾öÕâЩÎÊÌâÄØ£¿Õâ¾ÍÊÇÎÒÃDz»µÃ²»Ì¸µÄAndroid
Build ϵͳ¡£
AndroidÔ´ÂëĿ¼½á¹¹£º

LinuxϵͳµÄmakeÃüÁî
ÔÚ½²½âAndroid±àÒëϵͳ֮ǰ£¬ÎÒÃÇÊ×ÏÈÐèÒªÁ˽âLinuxϵͳµÄmakeÃüÁî¡£ÔÚLinuxϵͳÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýmakeÃüÁîÀ´±àÒë´úÂë¡£MakeÃüÁîÔÚÖ´ÐеÄʱºò£¬Ä¬ÈÏ»áÔÚµ±Ç°Ä¿Â¼ÕÒµ½Ò»¸öMakefileÎļþ£¬È»ºó¸ù¾ÝMakefileÎļþÖеÄÖ¸ÁîÀ´¶Ô´úÂë½øÐбàÒë¡£Èçgcc£¬LinuxϵͳÖеÄshellÃüÁîcp¡¢rmµÈµÈ¡£
¿´µ½ÕâÀÓеÄС»ï°é¿ÉÄÜ»á˵£¬ÔÚLinuxϵͳÖУ¬shellºÍmakeÃüÁîÓÐÊ²Ã´Çø±ðÄØ£¿
makeÃüÁîÊÂʵҲÊÇͨ¹ýshellÃüÁîÀ´Íê³ÉÈÎÎñµÄ£¬µ«ÊÇËüµÄÉñÆæÖ®´¦ÊÇ¿ÉÒÔ°ïÎÒÃÇ´¦ÀíºÃÎļþÖ®¼äµÄÒÀÀµ¹ØÏµ¡£ÀýÈçÓÐÒ»¸öÎļþT£¬ËüÒÀÀµÓÚÁíÍâÒ»¸öÎļþD£¬ÒªÇóÖ»Óе±ÎļþDµÄÄÚÈÝ·¢Éú±ä»¯£¬²ÅÖØÐÂÉú³ÉÎļþT¡£
MakeÃüÁîÊÇÔõô֪µÀÁ½¸öÎļþÖ®¼ä´æÔÚÒÀÀµ¹ØÏµ£¬ÒÔ¼°µ±±»ÒÀÀµÎļþ·¢Éú±ä»¯Ê±ÈçºÎ´¦ÀíÄ¿±êÎļþµÄÄØ£¿´ð°¸¾ÍÔÚÇ°ÃæÌáµ½µÄMakefileÎļþ¡£MakefileÎļþʵ¼ÊÉÏÊÇÒ»¸ö½Å±¾Îļþ£¬¾ÍÏñÆÕͨµÄshell½Å±¾ÎļþÒ»Ñù£¬Ö»²»¹ýËü×ñѵÄÊÇMakefileÓï·¨¡£MakefileÎļþ×î»ù´¡µÄ¹¦ÄܾÍÊÇÃèÊöÎļþÖ®¼äµÄÒÀÀµ¹ØÏµ£¬ÒÔ¼°Ôõô´¦ÀíÕâЩÒÀÀµ¹ØÏµ¡£
Android Build¼ò½é
Android Build ϵͳÊÇ Android ϵͳµÄÒ»²¿·Ö£¬Ö÷ÒªÓÃÀ´±àÒë Android ϵͳ£¬Android
SDK ÒÔ¼°Ïà¹ØÎĵµ¡£¸ÃϵͳÖ÷ÒªÓÉ Make Îļþ£¬Shell ½Å±¾ÒÔ¼° Python ½Å±¾×é³É¡£
Android build·ÖÀࣺ
build/core Ŀ¼ÏµÄÎļþ£¬ÕâÊÇAndroid BuildµÄϵͳ¿ò¼ÜºËÐÄ£»
deviceĿ¼ÏµÄÎļþ£¬´æ·ÅµÄÊǾßÌåµÄ²úÆ·ÅäÖÃÎļþ£»
¸÷¸öÄ£¿éµÄ±àÒëÎļþ£ºAndroid.mk£¬Î»ÓÚÄ£¿éµÄÔÎļþĿ¼Ï¡£
Android BuildϵͳºËÐÄ
Android BuildϵͳºËÐÄÔÚĿ¼build/core£¬Õâ¸öĿ¼ÖÐÓÐmkÎļþ¡¢shell½Å±¾ºÍper½Å±¾£¬ËûÃǹ¹³ÉAndroid
BuildϵͳµÄ»ù´¡ºÍ¼Ü¹¹¡£
ÔÚºËÐĵÄbuil/coreÀϵͳÖ÷Òª¸ÉÁËÈý¼þÊÂÇ飺 
³£ÓÃÃüÁ
source build/envsetup.sh
lunch
make |
¶øÔÚbuild/envsetup.shÖÐÖ÷ÒªÍê³ÉÁËÈý¼þÊ£º 
Ö´ÐÐAndroidϵͳµÄ±àÒ룬±ØÐëÏÈÖ´ÐÐenvsetup.sh½Å±¾£¬Õâ¸ö½Å±¾»á½¨Á¢AndroidµÄ±àÒë»·¾³¡£Æä¾ßÌåÖ´ÐеÄÊǽ¨Á¢shellÃüÁîÒÔ¼°µ÷ÓÃadd_lunch_comboÃüÁÕâ¸öÃüÁîµÄ½«µ÷ÓøÃÃüÁîµÄËù´«µÝµÄ²ÎÊý´æ·Åµ½Ò»¸öÈ«¾ÖµÄÊý×é±äÁ¿LUNCH_MENU_CHOICESÖС£

±àÒë Android ϵͳ
Android ϵͳµÄ±àÒë»·¾³Ä¿Ç°Ö»Ö§³Ö Ubuntu ÒÔ¼° Mac OS Á½ÖÖ²Ù×÷ϵͳ¡£ÔÚ±àÒëAndroidϵͳ֮ǰÎÒÃÇÐèÒªÏÈ»ñÈ¡ÍêÕûµÄ
Android Ô´Âë¡£´ò¿ª¿ØÖÆÌ¨Ö®ºóתµ½ Android Ô´ÂëµÄ¸ùĿ¼£¬È»ºóÖ´ÐÐÈçÏÂÃüÃû£º
source build/envsetup.sh
lunch full-eng
make -j8 |
¹ØÓÚÕ⼸ÌõÃüÁîµÄÒâ˼£¬ÎÒÃÇÉÏÃæÌá¹ý¡£
µÚÒ»²½ÃüÁî¡°source build/envsetup.sh¡± ÒýÈëÁË
b uild/envsetup.sh½Å±¾£¬¸Ã½Å±¾µÄ×÷ÓÃÊdzõʼ»¯±àÒë»·¾³£¬²¢ÒýÈëһЩ¸¨ÖúµÄ Shell
º¯Êý£»
µÚ¶þ²½ÃüÁî¡°lunch full-eng¡±Êǵ÷Óà lunch º¯Êý£¬²¢Ö¸¶¨²ÎÊýΪ¡°full-eng¡±¡£lunch
º¯ÊýµÄ²ÎÊýÓÃÀ´Ö¸¶¨´Ë´Î±àÒëµÄÄ¿±êÉ豸ÒÔ¼°±àÒëÀàÐÍ¡£
µÚÈý²¿ÃüÁî¡°make -j8¡±²ÅÕæÕý¿ªÊ¼Ö´ÐбàÒë¡£make µÄ²ÎÊý¡°-j¡±Ö¸¶¨ÁËͬʱ±àÒëµÄ Job
ÊýÁ¿£¬ÕâÊǸöÕûÊý£¬¸Ãֵͨ³£ÊDZàÒëÖ÷»ú CPU Ö§³ÖµÄ²¢·¢Ïß³Ì×ÜÊýµÄ 1 ±¶»ò 2 ±¶£¨ÀýÈ磺ÔÚÒ»¸ö
4 ºË£¬Ã¿¸öºËÖ§³ÖÁ½¸öÏß³ÌµÄ CPU ÉÏ£¬¿ÉÒÔʹÓà make -j8 »ò make -j16£©¡£
ÍêÕûµÄ±àÒëʱ¼äÒÀÀµÓÚ±àÒëÖ÷»úµÄÅäÖá£
Build ½á¹û
ËùÓеıàÒë²úÎï¶¼½«Î»ÓÚ /out Ŀ¼Ï£¬¸ÃĿ¼ÏÂÖ÷Òª°üº¬£º
/out/host/£º¸ÃĿ¼Ï°üº¬ÁËÕë¶ÔÖ÷»úµÄ Android ¿ª·¢¹¤¾ßµÄ²úÎï¡£¼´ SDK Öеĸ÷ÖÖ¹¤¾ß£¬ÀýÈ磺emulator£¬adb£¬aapt
µÈ¡£
/out/target/common/£º¸ÃĿ¼Ï°üº¬ÁËÕë¶ÔÉ豸µÄ¹²Í¨µÄ±àÒë²úÎÖ÷ÒªÊÇ Java Ó¦ÓôúÂëºÍ
Java ¿â¡£
/out/target/product//£º°üº¬ÁËÕë¶ÔÌØ¶¨É豸µÄ±àÒë½á¹ûÒÔ¼°Æ½Ì¨Ïà¹ØµÄ C/C++
¿âºÍ¶þ½øÖÆÎļþ¡£ÆäÖУ¬ÊǾßÌåÄ¿±êÉ豸µÄÃû³Æ¡£
/out/dist/£º°üº¬ÁËΪ¶àÖÖ·Ö·¢¶ø×¼±¸µÄ°ü£¬Í¨¹ý¡°make disttarget¡±½«Îļþ¿½±´µ½¸ÃĿ¼£¬Ä¬ÈϵıàÒëÄ¿±ê²»»á²úÉú¸ÃĿ¼¡£
Build Éú³ÉµÄ¾µÏñÎļþ
Build µÄ²úÎïÖÐ×îÖØÒªµÄÊÇÈý¸ö¾µÏñÎļþ£¬ËüÃǶ¼Î»ÓÚ /out/target/product//
Ŀ¼ÏÂ:
system.img£º°üº¬ÁË Android OS µÄϵͳÎļþ£¬¿â£¬¿ÉÖ´ÐÐÎļþÒÔ¼°Ô¤ÖõÄÓ¦ÓóÌÐò£¬½«±»¹ÒÔØÎª¸ù·ÖÇø¡£
ramdisk.img£ºÔÚÆô¶¯Ê±½«±» Linux Äں˹ÒÔØÎªÖ»¶Á·ÖÇø£¬Ëü°üº¬ÁË /initÎļþºÍһЩÅäÖÃÎļþ¡£ËüÓÃÀ´¹ÒÔØÆäËûϵͳ¾µÏñ²¢Æô¶¯
init ½ø³Ì¡£
userdata.img£º½«±»¹ÒÔØÎª /data£¬°üº¬ÁËÓ¦ÓóÌÐòÏà¹ØµÄÊý¾ÝÒÔ¼°ºÍÓû§Ïà¹ØµÄÊý¾Ý¡£
Make Îļþ
Õû¸ö Build ϵͳµÄÈë¿ÚÎļþÊÇÔ´ÂëÊ÷¸ùĿ¼ÏÂÃû³ÆÎª¡°Makefile¡±µÄÎļþ£¬µ±ÔÚÔ´´úÂë¸ùĿ¼Éϵ÷ÓÃ
make ÃüÁîʱ£¬make ÃüÁîÊ×ÏȽ«¶ÁÈ¡¸ÃÎļþ¡£
Makefile ÎļþµÄÄÚÈÝÖ»ÓÐÒ»ÐУº¡°include build/core/main.mk¡±¡£¸ÃÐдúÂëµÄ×÷ÓúÜÃ÷ÏÔ£º°üº¬
build/core/main.mk Îļþ¡£ÔÚ main.mk ÎļþÖÐÓÖ»á°üº¬ÆäËûµÄÎļþ£¬ÆäËûÎļþÖÐÓÖ»á°üº¬¸ü¶àµÄÎļþ£¬ÕâÑù¾ÍÒýÈëÁËÕû¸ö
Build ϵͳ¡£
ÔÚÕû¸öBuildϵͳÖУ¬Make Îļþ¼äµÄ¹ØÏµÊÇÏ൱¸´Ôӵġ£¿´Ò»ÕÅmakeÎļþÖ÷ÒªµÄ¹ØÏµÍ¼£º 
Make ³£ÓÃÎļþ£º


Android Ô´ÂëÖаüº¬ÁËÐí¶àµÄÄ£¿é£¬Ä£¿éµÄÀàÐÍÓкܶàÖÖ£¬ÀýÈ磺Java
¿â£¬C/C++ ¿â£¬APK Ó¦Óã¬ÒÔ¼°¿ÉÖ´ÐÐÎļþµÈ ¡£²¢ÇÒ£¬Java »òÕß C/C++ ¿â»¹¿ÉÒÔ·ÖΪ¾²Ì¬µÄ»òÕß¶¯Ì¬µÄ£¬¿â»ò¿ÉÖ´ÐÐÎļþ¼È¿ÉÄÜÊÇÕë¶ÔÉ豸£¨±¾Îĵġ°É豸¡±Ö¸µÄÊÇ
Android ϵͳ½«±»°²×°µÄÉ豸£¬ÀýÈçij¸öÐͺŵÄÊÖ»ú»òƽ°å£©µÄÒ²¿ÉÄÜÊÇÕë¶ÔÖ÷»ú£¨±¾Îĵġ°Ö÷»ú¡±Ö¸µÄÊÇ¿ª·¢
Android ϵͳµÄ»úÆ÷£¬ÀýÈç×°ÓÐ Ubuntu ²Ù×÷ϵͳµÄ PC »ú»ò×°ÓÐ MacOS µÄ iMac
»ò Macbook£©µÄ¡£²»Í¬ÀàÐ͵ÄÄ£¿éµÄ±àÒë²½ÖèºÍ·½·¨ÊDz»Ò»Ñù£¬ÎªÁËÄܹ»Ò»ÖÂÇÒ·½±ãµÄÖ´Ðи÷ÖÖÀàÐÍÄ£¿éµÄ±àÒ룬ÔÚ
config.mk Öж¨ÒåÁËÐí¶àµÄ³£Á¿£¬ÕâÆäÖеÄÿ¸ö³£Á¿ÃèÊöÁËÒ»ÖÖÀàÐÍÄ£¿éµÄ±àÒ뷽ʽ¡£³£¼ûµÄÓУº BUILD_HOST_STATIC_LIBRARY
BUILD_HOST_SHARED_LIBRARY BUILD_STATIC_LIBRARY BUILD_SHARED_LIBRARY
BUILD_EXECUTABLE BUILD_HOST_EXECUTABLE BUILD_PACKAGE
BUILD_PREBUILT BUILD_MULTI_PREBUILT BUILD_HOST_PREBUILT
BUILD_JAVA_LIBRARY BUILD_STATIC_JAVA_LIBRARY BUILD_HOST_JAVA_LIBRARY
²»Í¬ÀàÐ͵ÄÄ£¿éµÄ±àÒë¹ý³Ì»áÓÐһЩÏàͬµÄ²½Ö裬ÀýÈ磺±àÒëÒ»¸ö Java ¿âºÍ±àÒëÒ»¸ö APK Îļþ¶¼ÐèÒª¶¨ÒåÈçºÎ±àÒë
Java Îļþ¡£ÎªÁ˼õÉÙ´úÂëÈßÓ࣬ÐèÒª½«¹²Í¬µÄ´úÂ븴ÓÃÆðÀ´£¬¸´Óõķ½Ê½Êǽ«¹²Í¬´úÂë·Åµ½×¨ÃŵÄÎļþÖУ¬È»ºóÔÚÆäËûÎļþÖаüº¬ÕâЩÎļþµÄ·½Ê½À´ÊµÏֵġ£
Ä£¿éµÄ±àÒ뷽ʽ¶¨ÒåÎļþµÄ°üº¬¹ØÏµ£º ![ÕâÀïдͼƬÃèÊö] (http://img.blog.csdn.net/ 20170402232734662? watermark/2/text/ aHR0cDovL2Jsb2cu Y3Nkbi5uZXQveGlhbmd6aGlob25nOA ==/font/5a6L5L2T/ fontsize/400/fill/I0JBQkFCMA ==/dissolve/70/gravity/ SouthEast)
## Make ±àÒë¾µÏñ ### make /make droid Èç¹ûÔÚÔ´ÂëÊ÷µÄ¸ùĿ¼ֱ½Óµ÷Óá°make¡±ÃüÁî¶ø²»Ö¸¶¨ÈκÎÄ¿±ê£¬Ôò»áÑ¡ÔñĬÈÏÄ¿±ê£º¡°droid¡±£¨ÔÚ
main.mk Öж¨Ò壩¡£Òò´Ë£¬ÕâºÍÖ´ÐС°make droid¡±Ð§¹ûÊÇÒ»ÑùµÄ¡£ droid Ä¿±ê½«±àÒë³öÕû¸öϵͳµÄ¾µÏñ¡£´ÓÔ´´úÂëµ½±àÒë³öϵͳ¾µÏñ£¬Õû¸ö±àÒë¹ý³Ì·Ç³£¸´ÔÓ¡£Õâ¸ö¹ý³Ì²¢²»ÊÇÔÚ
droid Ò»¸öÄ¿±êÖж¨ÒåµÄ£¬¶øÊÇ droid Ä¿±ê»áÒÀÀµÐí¶àÆäËûµÄÄ¿±ê£¬ÕâЩĿ±êµÄ»¥ÏàÅäºÏµ¼ÖÂÁËÕû¸öϵͳµÄ±àÒë¡£
ÄÇôÐèÒª±àÒë³öϵͳ¾µÏñ£¬ÐèÒªÄÄЩÒÀÀµÄØ£¿ 
droid ËùÒÀÀµµÄÆäËû MakeÄ¿±ê˵Ã÷£º

Build ϵͳÖаüº¬µÄÆäËûһЩ Make Ä¿±ê£º


# ¶¨ÖÆ Build ϵͳÖÐÄÚÈÝ µ±ÎÒÃÇÒª¿ª·¢Ò»¿îÐ嵀 Android
²úÆ·µÄʱºò£¬ÎÒÃÇÊ×ÏȾÍÐèÒªÔÚ Build ϵͳÖÐÌí¼Ó¶ÔÓڸòúÆ·µÄ¶¨Òå¡£ÔÚ Android Build
ϵͳÖжԲúÆ·¶¨ÒåµÄÎļþͨ³£Î»ÓÚ device Ŀ¼Ï£¬device Ŀ¼Ï¿ÉÒÔ¹«Ë¾ÃûÒÔ¼°²úÆ·Ãû·ÖΪ¶þ¼¶Ä¿Â¼£¬È»ºó¼ÓÈ뵽ϵͳÖУ¬ÈçÒÔǰСÃ׵ȻùÓÚAndroidÉî¶È¶¨ÖƵÄϵͳ¡£
ͨ³££¬¶ÔÓÚÒ»¸ö²úÆ·µÄ¶¨Òåͨ³£ÖÁÉÙ»á°üÀ¨ËĸöÎļþ£ºAndroidProducts.mk£¬²úÆ·°æ±¾¶¨ÒåÎļþ£¬BoardConfig.mk
ÒÔ¼° verndorsetup.sh¡£ ## AndroidProducts.mk ¸ÃÎļþÖ»ÐèÒª¶¨ÒåÒ»¸ö±äÁ¿£¬Ãû³ÆÎª¡°PRODUCT_MAKEFILES¡±¡£
``` PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full_stingray.mk
\ $(LOCAL_DIR)/stingray_emu.mk \ $(LOCAL_DIR)/generic_stingray.mk
``` ## ²úÆ·°æ±¾¶¨ÒåÎļþ ¸ÃÎļþÖаüº¬Á˶ÔÓÚÌØ¶¨²úÆ·°æ±¾µÄ¶¨Òå¡£¸ÃÎļþ¿ÉÄܲ»Ö»Ò»¸ö£¬ÒòΪͬһ¸ö²úÆ·¿ÉÄÜ»áÓжàÖÖ°æ±¾¡£
ͨ³£Çé¿öÏ£¬ÎÒÃDz¢²»ÐèÒª¶¨ÒåËùÓÐÕâЩ±äÁ¿¡£Build ϵͳµÄÒѾԤÏȶ¨ÒåºÃÁËһЩ×éºÏ£¬ËüÃǶ¼Î»ÓÚ /build/target/product
Ï£¬Ã¿¸öÎļþ¶¨ÒåÁËÒ»¸ö×éºÏ£¬ÎÒÃÇÖ»Òª¼Ì³ÐÕâЩԤÖõ͍Ò壬ȻºóÔÙ¸²¸Ç×Ô¼ºÏëÒªµÄ±äÁ¿¶¨Òå¼´¿É¡£ ```
# ¼Ì³Ð full_base.mk ÎļþÖе͍Òå $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
# ¸²¸ÇÆäÖÐÒѾ¶¨ÒåµÄһЩ±äÁ¿ PRODUCT_NAME := full_lt26 PRODUCT_DEVICE
:= lt26 PRODUCT_BRAND := Android PRODUCT_MODEL :=
Full Android on LT26 ``` ## BoardConfig.mk ¸ÃÎļþÓÃÀ´ÅäÖÃÓ²¼þÖ÷°å£¬ËüÆäÖж¨ÒåµÄ¶¼ÊÇÉ豸µ×²ãµÄÓ²¼þÌØÐÔ¡£ÀýÈ磺¸ÃÉ豸µÄÖ÷°åÏà¹ØÐÅÏ¢£¬Wifi
Ïà¹ØÐÅÏ¢£¬»¹ÓÐ bootloader£¬Äںˣ¬radioimage µÈÐÅÏ¢¡£ ## vendorsetup.sh
¸ÃÎļþÖÐ×÷ÓÃÊÇͨ¹ý add_lunch_combo º¯ÊýÔÚ lunch º¯ÊýÖÐÌí¼ÓÒ»¸ö²Ëµ¥Ñ¡Ïî¡£¸Ãº¯ÊýµÄ²ÎÊýÊDzúÆ·Ãû³Æ¼ÓÉϱàÒëÀàÐÍ£¬ÖмäÒÔ¡°-¡±Á¬½Ó£¬ÀýÈ磺add_lunch_combo
full_lt26-userdebug¡£ /build/envsetup.sh »áɨÃèËùÓÐ device
ºÍ vender ¶þ ¼¶Ä¿ ¼ÏµÄÃû³Æ Ϊ"vendorsetup.sh"Îļþ£¬²¢¸ù¾ÝÆäÖеÄÄÚÈÝÀ´È·¶¨
lunch º¯ÊýµÄ ²Ëµ¥Ñ¡Ïî¡£ ÔÚÅäÖÃÁËÒÔÉϵÄÎļþÖ®ºó£¬±ã¿ÉÒÔ±àÒë³öÎÒÃÇÐÂÌí¼ÓµÄÉ豸µÄϵͳ¾µÏñÁË¡£
ÎÒÃÇ¿ÉÒÔʹÓÃÃüÁ ``` source build/envsetup.sh ``` À´²é¿´Build
ϵͳÒѾÒýÈëÁ˸ոÕÌí¼ÓµÄ vendorsetup.sh Îļþ¡£ ## Ìí¼ÓÐÂÄ£¿é ÔÚÔ´ÂëÊ÷ÖУ¬Ò»¸öÄ£¿éµÄËùÓÐÎļþͨ³£¶¼Î»ÓÚͬһ¸öÎļþ¼ÐÖС£ÎªÁ˽«µ±Ç°Ä£¿éÌí¼Óµ½Õû¸ö
Build ϵͳÖУ¬Ã¿¸öÄ£¿é¶¼ÐèÒªÒ»¸öרÃÅµÄ Make Îļþ£¬¸ÃÎļþµÄÃû³ÆÎª¡°Android.mk¡±¡£Build
ϵͳ»áɨÃèÃû³ÆÎª¡°Android.mk¡±µÄÎļþ£¬²¢¸ù¾Ý¸ÃÎļþÖÐÄÚÈݱàÒë³öÏàÓ¦µÄ²úÎï¡£ ×¢£º ÔÚ Android
Build ϵͳÖУ¬±àÒëÊÇÒÔÄ£¿é£¨¶ø²»ÊÇÎļþ£©×÷Ϊµ¥Î»µÄ£¬Ã¿¸öÄ£¿é¶¼ÓÐÒ»¸öΨһµÄÃû³Æ£¬Ò»¸öÄ£¿éµÄÒÀÀµ¶ÔÏóÖ»ÄÜÊÇÁíÍâÒ»¸öÄ£¿é£¬¶ø²»ÄÜÊÇÆäËûÀàÐ͵ĶÔÏó¡£¶ÔÓÚÒѾ±àÒëºÃµÄ¶þ½øÖƿ⣬Èç¹ûÒªÓÃÀ´±»µ±×÷ÊÇÒÀÀµ¶ÔÏó£¬ÄÇôӦµ±½«ÕâЩÒѾ±àÒëºÃµÄ¿â×÷Ϊµ¥¶ÀµÄÄ£¿é¡£¶ÔÓÚÕâЩÒѾ±àÒëºÃµÄ¿âʹÓÃ
BUILD_PREBUILT »ò BUILD_MULTI_PREBUILT¡£ÀýÈ磺µ±±àÒëij¸ö Java
¿âÐèÒªÒÀÀµÒ»Ð© Jar °üʱ£¬²¢²»ÄÜÖ±½ÓÖ¸¶¨ Jar °üµÄ·¾¶×÷ΪÒÀÀµ£¬¶ø±ØÐëÊ×ÏȽ«ÕâЩ Jar °ü¶¨ÒåΪһ¸öÄ£¿é£¬È»ºóÔÚ±àÒë
Java ¿âµÄʱºòͨ¹ýÄ£¿éµÄÃû³ÆÀ´ÒÀÀµÕâЩ Jar °ü¡£ ÄÇôÔõô±àдAndroid.mk ÎļþÄØ£¿
Android.mk Îļþͨ³£ÒÔÒÔÏÂÁ½ÐдúÂë×÷Ϊ¿ªÍ·£º ``` LOCAL_PATH := $(call
my-dir) //ÉèÖõ±Ç°Ä£¿éµÄ±àÒë·¾¶Îªµ±Ç°Îļþ¼Ð·¾¶ include $(CLEAR_VARS)//ÇåÀí±àÒë»·¾³ÖÐÓõ½µÄ±äÁ¿
``` ΪÁË·½±ãÄ£¿éµÄ±àÒ룬Build ϵͳÉèÖÃÁ˺ܶàµÄ±àÒë»·¾³±äÁ¿¡£Òª±àÒëÒ»¸öÄ£¿é£¬Ö»ÒªÔÚ±àÒë֮ǰ¸ù¾ÝÐèÒªÉèÖÃÕâЩ±äÁ¿È»ºóÖ´ÐбàÒë¼´¿É¡£³£¼ûµÄÈ磺
- LOCAL_SRC_FILES£ºµ±Ç°Ä£¿é°üº¬µÄËùÓÐÔ´´úÂëÎļþ¡£ - LOCAL_MODULE£ºµ±Ç°Ä£¿éµÄÃû³Æ£¬Õâ¸öÃû³ÆÓ¦µ±ÊÇΨһµÄ£¬Ä£¿é¼äµÄÒÀÀµ¹ØÏµ¾ÍÊÇͨ¹ýÕâ¸öÃû³ÆÀ´ÒýÓõġ£
- LOCAL_C_INCLUDES£ºC »ò C++ ÓïÑÔÐèÒªµÄÍ·ÎļþµÄ·¾¶¡£ - LOCAL_STATIC_LIBRARIES£ºµ±Ç°Ä£¿éÔÚ¾²Ì¬Á´½ÓʱÐèÒªµÄ¿âµÄÃû³Æ¡£
- LOCAL_SHARED_LIBRARIES£ºµ±Ç°Ä£¿éÔÚÔËÐÐʱÒÀÀµµÄ¶¯Ì¬¿âµÄÃû³Æ¡£ - LOCAL_CFLAGS£ºÌṩ¸ø
C/C++ ±àÒëÆ÷µÄ¶îÍâ±àÒë²ÎÊý¡£ - LOCAL_JAVA_LIBRARIES£ºµ±Ç°Ä£¿éÒÀÀµµÄ Java
¹²Ïí¿â¡£ - LOCAL_STATIC_JAVA_LIBRARIES£ºµ±Ç°Ä£¿éÒÀÀµµÄ Java ¾²Ì¬¿â¡£
- LOCAL_PACKAGE_NAME£ºµ±Ç° APK Ó¦ÓõÄÃû³Æ¡£ - LOCAL_CERTIFICATE£ºÇ©Êðµ±Ç°Ó¦ÓõÄÖ¤ÊéÃû³Æ¡£
- LOCAL_MODULE_TAGS£ºµ±Ç°Ä£¿éËù°üº¬µÄ±êÇ©£¬Ò»¸öÄ£¿é¿ÉÒÔ°üº¬¶à¸ö±êÇ©¡£±êÇ©µÄÖµ¿ÉÄÜÊÇ
debug, eng,user£¬development »òÕß optional¡£ÆäÖУ¬optionalÊÇĬÈϱêÇ©¡£±êÇ©ÊÇÌṩ¸ø±àÒëÀàÐÍʹÓõ쬲»Í¬µÄ±àÒëÀàÐͻᰲװ°üº¬²»Í¬±êÇ©µÄÄ£¿é¡£
±àÒëÀàÐÍ˵Ã÷:

¸ù¾ÝÉϱí¸÷ÖÖÀàÐÍÄ£¿éµÄ±àÒ뷽ʽ£¬ÒªÖ´ÐбàÒ룬ֻÐèÒªÒýÈë±í 3 ÖжÔÓ¦µÄ Make Îļþ¼´¿É¡£ÀýÈ磬Ҫ±àÒëÒ»¸ö
APK Îļþ£¬Ö»ÐèÒªÔÚ Android.mk ÎļþÖУ¬¼ÓÈë¡°include $(BUILD_PACKAGE)¡£
³ý´ËÒÔÍ⣬Build ϵͳÖл¹¶¨ÒåÁËһЩ±ã½ÝµÄº¯ÊýÒÔ±ãÔÚ Android.mk ÖÐʹÓ㬰üÀ¨£º
$(call my-dir)£º»ñÈ¡µ±Ç°Îļþ¼Ð·¾¶¡£
$(call all-java-files-under, )£º»ñȡָ¶¨Ä¿Â¼ÏµÄËùÓÐ Java Îļþ¡£
$(call all-c-files-under, )£º»ñȡָ¶¨Ä¿Â¼ÏµÄËùÓÐ C ÓïÑÔÎļþ¡£
$(call all-Iaidl-files-under, ) £º»ñȡָ¶¨Ä¿Â¼ÏµÄËùÓÐ AIDL Îļþ¡£
$(call all-makefiles-under, )£º»ñȡָ¶¨Ä¿Â¼ÏµÄËùÓÐ Make Îļþ¡£
$(call intermediates-dir-for, , , , )£º»ñÈ¡ Build Êä³öµÄÄ¿±êÎļþ¼Ð·¾¶¡£
È磺±àÒëÒ»¸ö APK Îļþ
LOCAL_PATH :=
$(call my-dir)
include $(CLEAR_VARS)
# »ñÈ¡ËùÓÐ×ÓĿ¼ÖÐµÄ Java Îļþ
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# µ±Ç°Ä£¿éÒÀÀµµÄ¾²Ì¬ Java ¿â£¬Èç¹ûÓжà¸öÒÔ¿Õ¸ñ·Ö¸ô
LOCAL_STATIC_JAVA_LIBRARIES := static-library
# µ±Ç°Ä£¿éµÄÃû³Æ
LOCAL_PACKAGE_NAME := LocalPackage
# ±àÒë APK Îļþ
include $(BUILD_PACKAGE) |
±àÒëÒ»¸ö Java µÄ¾²Ì¬¿â£º
LOCAL_PATH :=
$(call my-dir)
include $(CLEAR_VARS)
# »ñÈ¡ËùÓÐ×ÓĿ¼ÖÐµÄ Java Îļþ
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# µ±Ç°Ä£¿éÒÀÀµµÄ¶¯Ì¬ Java ¿âÃû³Æ
LOCAL_JAVA_LIBRARIES := android.test.runner
# µ±Ç°Ä£¿éµÄÃû³Æ
LOCAL_MODULE := sample
# ½«µ±Ç°Ä£¿é±àÒë³ÉÒ»¸ö¾²Ì¬µÄ Java ¿â
include $(BUILD_STATIC_JAVA_LIBRARY) |
|