android编译及添加apk到system.img

原创 2016年06月01日 18:04:11

------------------------------添加apksystem.img-------------------------------

1.添加第三方apkpackagesystem.img

首先把整个apk的源码包copy/package/apps,要注意代码中的layout文件中的xml不能有中文字样,否则会提示编码errors,编译不能通过,可以用@string的方法。

然后,编辑一下文档即可。

/build/target/product/generic_no_telephony.mk

或者

/build/target/product/generic.mk

2.添加第三方apksystem.img

其实就是一个copy操作,把apk从某一个路径(如:packages/apk/ideal_apk路径下)copy/system/app或者data/app的路径下面。然后系统编译到最后,再打包成system.img

修改方法:

到相应机器的devices目录下找到一个有PRODUCT_COPY_FILES字样的mk文件,添加自己的apk路径进去即可。

3.更改android系统默认语言

4.在/build/target/product目录,找到full_base.mk或者full.mk文件,添加以下语句:

中文:PRODUCT_LOCALES:=zh_CN

英文:PRODUCT_LOCALES:=en_US

 

 

--------------------------------android编译---------------------------------------------

>source build/envsetup.sh  加载命令

该命令是用来将envsetup.sh里的所有命令加载到环境变量中去

作用:加载了编译命令使用到的函数命令,如:help,lunch,m,mm,mmm等;

  添加了两个编译选项:generic-engsimulator,这两个选项是系统默认选项;

  查找vendor/<-厂商名称>/vendor/<厂商目录>/build/目录下的vendrosetup.sh,如果存在的话,加载执行它,添加厂商自己定义的编译选项

>lunch 选择平台编译项,它会列出一个选择编译选项菜单

该命令是用户选择编译项,来定义product和编译过程中用到的全局变量。Eng是产品的编译类型。

eng:工程机

user:最终用户机

Userdebug:调试测试机

Tests:测试机

除了前两个,后两个一般不能交给最终用户

LOCAL_MODULE_TAGS,这个TAGS就是用来指定,当前的目标编译完了属于哪个分类里。

>make 执行编译

 

Make

执行make命令的结果就是执行当前目录下的Makefile文件。

------------------------------------------------Build/core/main.mk-------------------------------------

1.config.mk:

定义了大量的编译时用到的变量(CLEAR_VARS,BUILD_SHARED_LIBRARYandroid.mk用到的变量);

检查:TARGET_PRODUCT,TARGET_BUILD_VARIANT

获得当前的编译主机系统,决定编译环境;

定义编译结果的out输出目录。

检查必要的Board的配置信息 TARGET_CPU_ABI

定义编译时用的一些HOST主机工具及编译参数

 

--------------------------------包含product_config.mk

------------包含product.mk:定义了一些和产品信息相关的处理函数;

------------包含device.mk:定义了一些和设备信息有关的处理函数;

-------------查找产品目录下的androidProducts.mk文件;

-------------AndroidProduct.mk中查找待编译的产品配置文件;

-------------根据产品配置文件,找到其中定义的设备名:PRODUCT_DEVICE,导出产品配 置文件里声明的其它的产品属性变量

 

2.包含cleanbuild.mk:定义删除比那一结果的函数和目标如:dataclean,installclean

3.包含definition.mk:定义了编译过程中用到的大量的变量和宏。

4.检查TARGET_BUILD_VARIANT变量有效性。

5.根据make参数决定编译目标:SDK_ONLY(指定编译目录为SDK相关目录)、FULL_BUILD(指定编译目录从TOP顶级目录开始)

6.从编译目录下查找所有子目录下的Android.mk并加载它。

7.从Android.mk中定义的目标中筛选出TAGSTARGET_BUILD_VARIANT的目标

8.包含Makefile

9.定义一些目标:files,ramdisk,systemtarball,userdataimage

10.定义目标及其编译依赖冠以:droidcore,droid,sdk,clean(droid调用dist-for-goals函数开始编译)

所有的makefile都是通过build/core/main.mk这个文件组织在一起的。

 

--------------------------------------Build/core/config.mk------------------------------

CLEAR_VARS:用来清除之前定义的换几个变量;

BUILD_SHARED_LIBRARY:用来指定编译动态库过程;

--------------------------------------envsetup.mk-------------------------------------------------

该文件主要包含了product_config.mk文件,然后指定编译时要输出的所有文件的OUT目录。

 

总结:

Build/core/main.mk包含了config.mk,他主要定义了编译全部代码的依赖关系

Config.mk:定义了大量的编译脚本命令,编译时用到的环境变量,引入了envsetup.mk问价,

 

加载board相关配置文件。

Product_config.mk定义了vendor目录下Product相关配置文件解析脚本,读取androidProduct.mk生成TARGET_DEVICE变量

Product  product config针对当前的芯片配置定义你将要生产产品的个性配置,主要是指APK方面的配置,那些APK会包含在哪个product中,哪些APK在当前product中是不提供的。Cdcd

Board  board config主要涉及到硬件芯片的配置

Combo  build flags config

版权声明:本文为博主原创文章,未经博主允许不得转载。

第三方apk文件编译到系统文件(system.img)中的方法

1  (1)源码编译后,把apk拷贝到out\target\product\generic\system\app中。     (2) 执行命令make snod , 把添加的spk编到system...
  • jdsjlzx
  • jdsjlzx
  • 2013年12月14日 12:42
  • 2746

Android编译PRODUCT_COPY_FILES如果碰到重复的项目如何取值

Android编译脚本中,PRODUCT_COPY_FILES保存的是一组src:dest的字符串列表,如果碰到里面有重复的dest怎么办? 参见/build/core/Makefile中关...

将第三方apk编译进Android系统文件system.img

1、把apk拷贝到out\target\product\generic\system\app中。 执行命令make snod , 把添加的spk编到system.img 中 2、使用m...

android 如何预置APK到 data 和system/app目录

参考 http://blog.csdn.net/sergeycao/article/details/8198205 一、如何将带源码的APK预置进系统? 1)     在 packages/app...

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

/********************************************************************************************  * au...
  • sdvch
  • sdvch
  • 2015年03月28日 00:58
  • 821

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

/********************************************************************************************  * au...

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

1、添加apk到system.img 1.1、添加第三方apk的package到system.img 首先把整个apk的源码包copy到\packages\apps,要注意代码...

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言 .

http://blog.csdn.net/conowen/article/details/7884335 1、添加apk到system.img 1.1、添加第三方apk的package到s...

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

1、添加apk到system.img 1.1、添加第三方apk的package到system.img 首先把整个apk的源码包copy到\packages\apps,要注意代码...

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

/********************************************************************************************  * au...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android编译及添加apk到system.img
举报原因:
原因补充:

(最多只允许输入30个字)