一、架构

1.Arm架构

  是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。

2.X86架构

  是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。

3.Mips架构

  是一种采取精简指令集(RISC)的处理器架构。

二、三者区别

  X86架构是X86指令集,它属于CISC指令集。ARM架构是ARM指令集,属于RISC指令集。
  X86是冯若依曼结构,ARM是哈弗结构,这个不一定,比如ARM7TDMI用的就是冯若依曼结构。
  其实都是差不多,X86指令多,应用范围广,但效率就显得低一点,ARM指令少,应用范围小,效率显得高。

  MIPS架构的处理器多用在网关、猫、机顶盒什么的。ARM处理器用在便携设备,智能手机。

  X86,依靠强有力的工厂,前后端联合调优,用tick-tock的稳定,强悍路标,强势控制产业链,获取价值链上最丰厚的那部分利润。
  ARM, 靠IP授权的商业模式,且技术上走与Intel差异化路线,加上一些些运气(踏对了手机这条路,谢谢TI-Nokia,Apple,Samsung for big.Little)走小而美的路线,但是凭借已经形成巨大的生态系统,占据优势。
  MIPS,本有机会很帅,但是对指令集控制松散,导致生态系统分裂,没有形成合力,最终被市场抛弃。 
  Power,没有形成规模效益,也没有进入良性循环周期,我的预测是Power8会是最后一颗芯片,就这样结束。

三、android中如何编译出64位so文件

如果是在Linux下编译Android源码,有可能是两个原因:

1. lunch命令有32位和64位的区别,注意选能够编译64位so的命令

2. mk文件中有LOCAL_MODULE_PATH的值比如为$(TARGET_OUT_SHARED_LIBRARIES)/hw的改为LOCAL_MODULE_RELATIVE_PATH := hw,后一种可以分别在lib和lib64下分别生成32位和64位的so文件,这个看看编译后的信息就知道了.

四、关于如何在生成各种架构的so文件的疑问

场景:今天在编码过程中遇到一个异常。

 1 replacements=[Ljava.lang.String;@420845d0
 2 HARDWARE=hws8301l
 3 matchers=[Ljava.lang.String;@42084550
 4 RADIO=unknown
 5 HOST=screen105
 6 HIDE_PRODUCT_INFO=false
 7 TAGS=release-keys
 8 PRODUCT_CHARM=MediaPad X1 7.0
 9 ID=HuaweiMediaPad
10 MIN_VERSION_LENGTH=8
11 MANUFACTURER=HUAWEI
12 TYPE=user
13 TAG=Build
14 TIME=1403853553000
15 FINGERPRINT=Huawei/MediaPad/hws8301l:4.2.2/HuaweiMediaPad/S8301uV1R1C233B009:user/release-keys
16 UNKNOWN=unknown
17 PRODUCT_8VOGUE=MediaPad M1 8.0
18 BOARD=BalongV9R1
19 VERSION_MAX_SIZE=30
20 properties={ro.build.internal.t.version=S8-301uV100R001C233B009-01, ro.build.cust.id=S8-301uV100R001C233B009, ro.build.operator.id=S8-301uV100R001C233B009}
21 PRODUCT=MediaPad
22 FilePath=/cust/hwver.properties
23 DISPLAY=S8-301uV100R001C233B009
24 USER=jslave
25 DEVICE=hws8301l
26 MODEL=MediaPad M1 8.0
27 BOOTLOADER=unknown
28 CPU_ABI=armeabi-v7a
29 PRODUCT_UNKNOWN=unknown
30 CPU_ABI2=armeabi
31 IS_DEBUGGABLE=false
32 SERIAL=A8Z6R14613000263
33 BRAND=Huawei
34 java.lang.NoClassDefFoundError: com/tong/t/utils/SecuritKeyUtil
35     at com.tong.t.act.LoadingAct.init(LoadingAct.java:162)
36     at com.tong.t.act.LoadingAct.handleOtherMessage(LoadingAct.java:537)
37     at com.tong.framework.bufferknife.FinalActivity$MHandler.handleMessage(FinalActivity.java:307)
38     at android.os.Handler.dispatchMessage(Handler.java:99)
39     at android.os.Looper.loop(Looper.java:137)
40     at android.app.ActivityThread.main(ActivityThread.java:5119)
41     at java.lang.reflect.Method.invokeNative(Native Method)
42     at java.lang.reflect.Method.invoke(Method.java:511)
43     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
44     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
45     at dalvik.system.NativeStart.main(Native Method)
46 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.tong.t.utils.SecuritUtil" on path: /data/app/com.tong.t-2.apk
47     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
48     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
49     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
50     ... 11 more
51 java.lang.ClassNotFoundException: Didn't find class "com.tong.t.utils.SecuritUtil" on path: /data/app/com.tong.t-2.apk
52     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
53     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
54     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
55     at com.tong.t.act.LoadingAct.init(LoadingAct.java:162)
56     at com.tong.t.act.LoadingAct.handleOtherMessage(LoadingAct.java:537)
57     at com.tong.framework.bufferknife.FinalActivity$MHandler.handleMessage(FinalActivity.java:307)
58     at android.os.Handler.dispatchMessage(Handler.java:99)
59     at android.os.Looper.loop(Looper.java:137)
60     at android.app.ActivityThread.main(ActivityThread.java:5119)
61     at java.lang.reflect.Method.invokeNative(Native Method)
62     at java.lang.reflect.Method.invoke(Method.java:511)
63     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)
64     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
65     at dalvik.system.NativeStart.main(Native Method)

在添加jniLibs/arm64-v8a

    jniLibs/armeabi-v7a

      jniLibs/x86

jniLibs/mips64

jniLibs/x86_64

jniLibs/mips

后,加载so文件就报错。只有jniLibs/armeabi文件夹内有so文件。

https://www.zhihu.com/question/20148756

android64位机子兼容32位.so库文件

SQLcipher (different versions) works on one platform , but crash on other platform

http://stackoverflow.com/questions/32154487/java-lang-unsatisfiedlinkerror-couldnt-find-libstlport-shared-so

http://gegaosong.iteye.com/blog/1745937

SQLCipher 3.3.1-2 aar does not create .so files for x64 architecture

2016-03-29

[Android] 关于Android的.so文件你所需要知道的

Android Studio开发JNI工程

armeabi和armeabi-v7a(转)

微信的安装包在只编译了armeabi,没有x86,arm64-v8a是如何运行在各种处理器的手机上的?

Android ndk-build ignoring APP_ABI := x86

NDK Programmer's Guide

NDK Application.mk使用手册

Android.mk和Application.mk文件语法规范说明及举例

转载于:https://www.cnblogs.com/royi123/p/5301077.html

关于Android开发中Arm、X86和Mips(草稿)相关推荐

  1. Android开发中虚拟位置定位、应用双开、IP代理检测

    Android开发中虚拟位置定位.应用双开.IP代理检测 1.虚拟位置定位.应用双开原理 目前市面上的多开App的原理类似,都是以新进程运行被多开的App,并hook各类系统函数,使被多开的App认为 ...

  2. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

  3. SQLite数据库及在Android开发中的基本使用

    SQLite数据库及在Android开发中的基本使用 SQLite数据库的特点 轻量级数据库,无需搭建服务器. SQLite环境配置 这里提供从官网下载的方法,如果有Android Studio的项目 ...

  4. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

  5. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧

    我们开发项目的时候,经常会看到禁止的情况,而Android开发中并没有直接调用的接口,下面是爱站技术频道小编就给大家介绍的Android开发中禁止下拉式的实现技巧,希望网友们喜欢! 分享给大家供大家参 ...

  6. 史上最全Android开发中100%会用到的开源框架整理(1/5)

    其实这个开源框架整理很久了,只是一直放在有道云笔记里面,笔者还有很多写得文章都放在有道云笔记里面,有时间都好好整理一下放出来,本篇文章也会不定期更新,由于整理的开源框架分类都有200多个,所有这次只将 ...

  7. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  8. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  9. Android开发中的Handler和多线程

    在Android开发中我们常常用到Handler这个类去处理消息队列中的消息,以下这个例子实现的是利用Handler传递一个消息给线程,线程运行run()方法去更新进度条的进度,以下是源代码: pub ...

最新文章

  1. 区块链论文: Bitcoin-NG: A Scalable Blockchain Protocol
  2. SAP QM物料主数据里QM Material Authorization Group字段
  3. post传值php取不到数据,post请求中的参数形式和form-data提交数据时取不到的问题...
  4. 【linux排错】error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  5. ubuntu更改文件夹属性
  6. FD33里面的销售值不正确应该怎么办?
  7. java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)
  8. JS任务队列--笔记
  9. Linux系统安装sudo
  10. 从运营到高管,这是我总结的运营人能力地图
  11. 测试思维:正向思维和逆向思维
  12. python输出时间差_利用python计算时间差(返回天数)
  13. 2、Docker部署的Onlyoffice中文字体修改
  14. Newton Interpolation
  15. 【小程序云开发转uniCloud阿里云】
  16. 云服务器可以用来做什么
  17. 0002数学建模的重要意义
  18. FTP服务器的上传与下载
  19. 大数据分析与机器学习领域Python兵器谱
  20. Git忽略文件(.ignore)以及git status,git diff,git rm命令

热门文章

  1. SQLite3单例模式(C++)
  2. 隐藏tomcat页面异常显示的版本信息
  3. python 替换空格
  4. python 二维矩阵翻转
  5. python中%是什么意思_python中%代表什么意思?
  6. Java设计模式(二) -- 单例模式
  7. php 冒泡置顶,浅谈php冒泡的排序
  8. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...
  9. java jeditorpane 自动换行_JDIC 中利用WebBrowser内置浏览器到java application中 | 学步园...
  10. 《STL源码剖析》--知识点