android编译杂记之一

common_config.sh脚本在yongyida/ 下面。

脚本中获取了第一个参数就是客制化路径,如: yongyida\customer\xiaoyong\y50bpro ,赋值给变量 CUSTOMIZATION_PATH

执行脚本yongyida/tools/copy_apk_so.sh,其中会创建

mkdir -p oemapk/app/${filename%.*}/lib/arm

mkdir -p oemapk/priv-app/${filename%.*}/lib/arm

然后在跟目录下创建oemapk,这是google编译脚本制定的overlays apk的目录。

最后将apk中的so库放到对应的路径下,把apk放到oemapk/app或者oemapk/priv-app,最后直接由yongyida/oem_config.sh的以下命令:

直接拷贝apk到out目录下,等待压缩到image中,而不参与预编译,因为这些文件不需要

#拷贝临时文件夹"oemapk"中要固化进系统的客制化apk(包括库文件)
cp -rf oemapk/app/ $OUT/system/
cp -rf oemapk/priv-app/ $OUT/system/
#删除临时文件夹lib
rm -rf oemapk/

关于预编译的作用,直接引用网上的一段话:

在实际的开发中,并不会像Android一样将所有的源码集中在一起编译,有很多apk文件,jar都是预先编译好的,

编译系统是需要将这些二进制文件复制到生成的image文件中。

常用的方法是通过PRODUCT_COPY_FILES变量将这些文件直接复制到生成的image文件中。但是有些apk或jar包,

需要实用系统的签名才能正常运行,这样用复制的方式就不行了。另外一些动态库文件可能是源码中的某些模块所依赖的,

用复制的方法也无法建立依赖关系,这将导致这些模块编译失败。Android可以通过定义预编译模块的方法来解决上面的问题。

定义一个预编译模块和定义一个普通的编译模块格式相似。不同是LOCAL_SRC_FILES变成不是源文件了,而是二进制文件。

同时可以通过LOCAL_MODULE_CLASS来指定模块的类型,最后include的是BUILD_PREBUILT变量定义编译文件。

猜你喜欢

转载自blog.csdn.net/b1480521874/article/details/78876762
今日推荐