Application.mk的用處

2024-05-28 06:38
文章标签 application mk

本文主要是介绍Application.mk的用處,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

轉載自 http://blog.csdn.net/vincent_blog/article/details/9179271

 

我们在编写JNI代码时有一个可选的文件Application.mk ,这个文件你可以不创建,但是有时候是有必要写一个这样的文件的。

Application.mk文件用于描述应用程序本身的一些属性信息,如应用程序依赖哪些库,应用程序的根目录,应用程序运行在哪些类型指令集的CPU下,还有一些编译选项,

在此文件中定义的东西会应用于整个应用程序包括android.mk也会用到这里面的选项。

 

如果你不写此文件,会默认编出所有android.mk中写的libs / modules APP_ABI会默认指定为armeabi

下面我们主要介绍APP_ABI的用途。

 

首先市面上的android智能设备很多也很杂,各种类型各个厂家的芯片,但都是基于某种指令集来开发出来的,这里的ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,官方文档说其实是以下几点不同:

 

- the CPU instruction set that the machine code should use- the endianness of memory stores and loads at runtime- the format of executable binaries (shared libraries, programs, etc...)and what type of content is allowed/supported in them.- various conventions used to pass data between your code andthe system (e.g. how registers and/or the stack are used when functionsare called, alignment constraints, etc...)- alignment and size constraints for enum types, structure fields andarrays.- the list of function symbols available to your machine code at runtime,generally from a very specific selected set of libraries.

 

 

我们能用到的ABI 也就四种  armeabi armeabi-v7a x86 和mips 前两者最常用到。

在编译的时候你可以指定其中的一种或者几种,如果指定了几种,这时候打包到APK后这个APK被称为“胖二进制”,也就是它包含了几种ABI类型的lib

当APK被安装到设备上的时候,android系统有这样一个机制:

系统支持哪些ABI类型它自己是知道的,它们会将最适合机器性能发挥的ABI类型标记位'primary' 把剩下的也支持的标记为‘secondary’

例如

CPU 工艺为 ARMv5TE-based 的CPU只有'primary'  为armeabi  没有'secondary'
而类型为ARMv7-based的CPU 'primary'  为armeabi-v7a  'secondary'为armeabi

 

应用程序安装的时候系统首先检查lib/<primary-abi>/libxx.so 如果有的话就将此处的lib随应用程序copy到/data/app/下面这个大家应该知道第三方应用的安装目录

如果没有的话,而机器有secondary ,就检查lib/<secondary-abi>/libxx.so 

 

所以这就是为什么我们不用写application.mk 而应用程序能在amrv7 的机器上面跑得好好的,但是这有可能没有发挥到amrv7的最有效的性能。

所以如果是我写应用程序我会指定两个或更多(当然这可能造成APK体积增大,这个要自己取舍)

 

另外推荐一个工具查看android系统的硬件信息 z-devicetest  ,可以看到CPU型号等具体信息。

这篇关于Application.mk的用處的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009812

相关文章

Spring Boot 配置文件 bootstrap / application 区别

用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢?大家都清楚它们的区别和具体使用场景吗? bootstrap/ application 的区别 特意去翻了下 Spring Boot 的官方

SpringCloud配置文件 application.yml和 bootstrap.yml区别,执行顺序

说在前面 SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。

【如何让新增的Android.mk参与编译】

步骤1: 你需要在你新增的Android.mk目录以上的位置找一个已有的Android.mk 步骤2: 在原本已有的Android.mk中加入: //这是你新增的Android.mk文件的路径include $(LOCAL_PATH)/xxx/xxx/Android.mk 如果有些多可以这样写 //dir1 dir2是你新增的Android.mk文件的目录CAMERA_BUILD_F

Spring中的事件讲解(Application Event)

文章目录 1 Spring事件1.1 简介1.2 Spring框架中事件 2 Demo示例2.1 pom.xml文件2.2 自定义事件2.3 事件监听器2.3.1 实现ApplicationListener接口2.3.2 使用@EventListener注解2.3.3 使用@TransactionalEventListener注解2.3.3.1 定义2.3.3.2 源码说明2.3.3.3 使

application.yml之坑

今天改造公司的一个项目,重构成springboot时发现,yml文件中只能用空格不能出现Tab。 谨记。

Android.mk介绍(三)

一、编译APK LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# 编译所有子目录下的Java文件LOCAL_SRC_FILES := $(call all-subdir-java-files)# APK名LOCAL_PACKAGE_NAME := LocalPackage# 编译成APKinclude $(BUILD_PACKAGE)

MK米客方德SD NAND的掉电保护机制

随着科技的飞速发展,数据存储设备在我们的生活和工作中扮演着越来越重要的角色。然而,数据安全问题也随之而来,尤其是面对突然的电源故障或意外断电,我们宝贵的数据可能会面临丢失的风险。MK米客方德公司深知这一点,因此推出了具有先进掉电保护功能的SD NAND,为您的数据安全保驾护航。 掉电保护:数据安全的守护神 MK米客方德SD NAND存储卡配备了创新的掉电保护机制。这项技术能够在电源

5. Revit API UI: Application

5. Revit API UI: Application 前言 上一篇中,讲到了UI篇的Ribbon(界面),并提到要创建 RibbonPanel,需要使用UIControlledApplication.CreateRibbonPanel(..)方法,还在结尾说到要写“UI”开头的那些个类,本来呢是这么想的,但写的时候,发现单独写UI类不好,与它们关联的类有不少呢,所以想想,还是把相关的内容都

ASP.NET实现简单的聊天室,主要是Application对象

用ASP.NET做一个最简单的聊天室,逻辑清晰简单,能帮你了解Application的用法。 第一步我们先构想我们需要的页面,应该也就是两个吧,第一个登陆页面Login.aspx,第二个聊天室主页面default.aspx。  我们还需要加一个全局变量文件Global.asax。用来初始化我们要用到的Application对象。   这样做,在Application_Start和Appli

在Tomcat-OSGi中部署OSGi Application

关于本文 本文介绍如何将一个OSGi Application部署到Tomcat-OSGi中,你会发现这是一件非常简单的事情。 在本文的最后部分有相关资源的下载链接和文档链接 一、准备工作 准备工作分为两个部分:准备一个OSGi Application  和  准备Tomcat-OSGi运行环境 1. 准备一个OSGi Application Tomcat-OSGi已经准备了一个应用程序:jp