码迷,mamicode.com
首页 > 移动开发 > 详细

Android M 6.0 Build about 64-bit (__arm64__)

时间:2016-05-01 13:40:09      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:

 

Android M 的编译

对于新版本的Android系统(6.0 开始 ??),在编译时,支持同时编译出两种CPU架构( 即 32-bit 和 64-bit )的 Binaries,这个被称作 "Multilib build"。

对于 native static libraries 和 shared libraries,编译系统会同时编译出两种架构的 Binary。

PRODUCT_PACKAGES 会决定哪个 Binary 会被放进 System Image。

系统默认是编译 64-bit 的版本,可以通过修改 BoardConfig.mk 文件进行定制。

 

产品配置 (整个系统)

在BoardConfig.mk中,以下变量可以配置 second CPU architecture 以及 ABI(application binary interface):

TARGET_2ND_ARCH
TARGET_2ND_ARCH_VARIANT
TARGET_2ND_CPU_VARIANT
TARGET_2ND_CPU_ABI
TARGET_2ND_CPU_ABI2

以 build/target/board/generic_arm64/BoardConfig.mk 为例:

TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_VARIANT := generic
TARGET_CPU_ABI := arm64-v8a

TARGET_2ND_ARCH := arm
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi

如果想改为,默认编译32-bit系统,可以设置以下变量:

TARGET_PREFER_32_BIT := true

 

在Android.mk中配置模块

在某个模块的 Andorid.mk 中,使用 LOCAL_MULTILIB 变量,可以 override 系统设定的 TARGET_PREFER_32_BIT。

LOCAL_MULTILIB可以设置为:

"both"    // build both 32-bit and 64-bit
"32"       // build 32-bit
"64"       // build 64-bit
"first"     // build for the first arch (32-bit in 32-bit device, 64-bit in 64-bit device)
""           // the default 

 还可以使用指定架构的 "LOCAL_MODULE_TARGET_ARCH" 变量来编译指定架构的 Binaries:

LOCAL_MODULE_TARGET_ARCH := arm

 

 

 

参考文献:

https://source.android.com/source/64-bit-builds.html  (请自行FQ~~~)
https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/  
 

Android M 6.0 Build about 64-bit (__arm64__)

标签:

原文地址:http://www.cnblogs.com/frustrated-wish/p/5450271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!