导航:首页 > 源码编译 > 安卓arm编译原理

安卓arm编译原理

发布时间:2024-02-04 02:46:29

‘壹’ arm 入门需要具备那些知识

很泛泛啊。你说的太宽泛了。根据我的理解啊,嵌入式基本分两个吧,软件和硬件。硬件平台一般的方案有单片机,DSP和FPGA。单片机(包括ARM)侧重于控制,系统处理,类似于cpu。而DSP和FPGA有它专门的用途,例如用DSP做信号处理,在通信,语音,数据处理方面用处很多。FPGA显得更为高端了,具体你可以去查了。现在这三者的区分越来越不明显。
至于软件,从底层到高层,有驱动级的,系统级和应用级之分。从简单的无操作系统到复杂的多任务处理,软件的开发难度也不同。
因此,嵌入式实际上并不能算是一个独立的学科,还是要依附于传统的电子,计算机专业,你问要掌握哪些知识和技能,就取决于你准备从事哪方面的工作了。是软件还是硬件,这都不是一两句话能说清楚的。你可以到一些网站,例如csdn,21ic多看看,了解一些行业信息。看的多了,你自然会有自己的想法。

‘贰’ Android中的armeabi、armeabi-v7a、arm64-v8a及x86的详解

一. lib和libs
放在lib中的是被reference的,放在libs中的是被include的。
放在libs中的文件会自动被编辑器所include。所以不要把API放到libs里去。
lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中

二. .so库
NDK编译出来的动态链接库。
一些重要的加密算法或者核心协议一般都用c写然后给java调用。这样可以避免反编译后查看到应用的源码

三. .so库该如何存放
放置 .so 文件的正确姿势其实就两句话:
• 为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致
• 对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹
存放so的规则:
你应该尽可能的提供专为每个ABI优化过的.so文件,但要么全部支持,要么都不支持:你不应该混合着使用。你应该为每个ABI目录提供对应的.so文件。

四. libs下armeabi等的作用是什么
存放.so库,主要针对不同的设备兼容,也可以说是专门针对不同Android手机下CPU架构的兼容。
Android 设备的CPU类型(通常称为”ABIs”)

早期的Android系统几乎只支持ARMv5的CPU架构,后面发展到支持七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

armeabi-v7a: 第7代及以上的 ARM 处理器。2011年以后生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。

如果项目只包含了 armeabi,那么在所有Android设备都可以运行;
如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行;
如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。

最后,如果我们只想支持armeabi-v7a,那么需要在gradle中配置

因为默认情况下,打包后会自动生成armeabi 到 x86的所有文件夹。这就有可能导致一些x86的设备因为在x86文件夹下找不到so文件而崩溃。

‘叁’ A13芯片用的也是ARM指令集,为何组装不出安卓手机

其实这个想法很早就有人想过了,但是最终还是没有尝试。其实并不是组装不出来,而是太过于繁琐而且没有任何意义。首先从硬件方面分析,安卓的主板和A系列的处理器并不兼容,而且电压电流方面的问题也不小。其次就是软件方面的分析,安卓虽然是开源的,但是如果想要兼容A系列的处理器,那么基本上需要把安卓的代码完全重构一遍。最后就是经过这两方面的魔改之后,才能组装出使用A13芯片的安卓机,但是这样的安卓机真的好用么?况且苹果的系统和硬件都是闭源的。

最后就是经过这两方面的魔改之后,才能组装出使用A13芯片的安卓机,但是这样的安卓机真的好用么?况且苹果的系统和硬件都是闭源的。开发和破解的难度都是非常大的。而且安卓容易出现卡顿的根本原因还是因为安卓机在关闭程序之后,并不是直接退出,而是在手机的后台进行运行。不对系统进行更换,根本解决不了这个问题。

‘肆’ 如何才能快速的学习ARM单片机。我有51的基础

想快就要花钱,去买块周立功的ARM9板,里面有实验源代码,实验指导书,把实验全做完就什么都搞懂了,去电驴上下一些ARM的教学视频,比如<手把手交你学ARM>,力天电子出品,不懂得地方看看视频就行了.有51的基础的话在接触ARM你会感觉到挺简单甚至有点枯燥,不过ARM的精华在于它可以移植系统,所以一定要坚持学习,当你把ARM体系结构看懂了之后,可以研究一下启动代码,然后进入移植操作系统的学习,比较经典的就是UCOSII,看看邵贝贝翻译的UCOSii操作系统.
反正我就是这么走过来的.这个学期刚接触的ARM感觉比较简单,大概是学的不够深吧.

阅读全文

与安卓arm编译原理相关的资料

热点内容
单片机状态周期 浏览:620
lua中的android 浏览:441
加密贵还是植发贵 浏览:662
阳光压缩机继电器 浏览:969
修改阿里云服务器密码 浏览:815
lk4102加密芯片 浏览:588
怎么更改app店面 浏览:489
设备部门如何做好服务器 浏览:849
androido下载 浏览:478
神奇高量战法副图源码 浏览:830
汇编语言设计凯撒密码加密器 浏览:392
主次梁加密是加在哪里 浏览:664
模板匹配算法matlab 浏览:825
外地程序员去北京 浏览:24
安卓机换苹果12如何转移数据 浏览:420
互联网ntp服务器地址及端口 浏览:613
pdf到word转换器 浏览:269
飞行解压素材 浏览:498
51单片机指令用背吗 浏览:936
unityai算法 浏览:834