博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Android开发中Arm、X86和Mips(草稿)
阅读量:6676 次
发布时间:2019-06-25

本文共 4383 字,大约阅读时间需要 14 分钟。

一、架构

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=HuaweiMediaPad10 MIN_VERSION_LENGTH=811 MANUFACTURER=HUAWEI12 TYPE=user13 TAG=Build14 TIME=140385355300015 FINGERPRINT=Huawei/MediaPad/hws8301l:4.2.2/HuaweiMediaPad/S8301uV1R1C233B009:user/release-keys16 UNKNOWN=unknown17 PRODUCT_8VOGUE=MediaPad M1 8.018 BOARD=BalongV9R119 VERSION_MAX_SIZE=3020 properties={ro.build.internal.t.version=S8-301uV100R001C233B009-01, ro.build.cust.id=S8-301uV100R001C233B009, ro.build.operator.id=S8-301uV100R001C233B009}21 PRODUCT=MediaPad22 FilePath=/cust/hwver.properties23 DISPLAY=S8-301uV100R001C233B00924 USER=jslave25 DEVICE=hws8301l26 MODEL=MediaPad M1 8.027 BOOTLOADER=unknown28 CPU_ABI=armeabi-v7a29 PRODUCT_UNKNOWN=unknown30 CPU_ABI2=armeabi31 IS_DEBUGGABLE=false32 SERIAL=A8Z6R1461300026333 BRAND=Huawei34 java.lang.NoClassDefFoundError: com/tong/t/utils/SecuritKeyUtil35     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.apk47     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 more51 java.lang.ClassNotFoundException: Didn't find class "com.tong.t.utils.SecuritUtil" on path: /data/app/com.tong.t-2.apk52     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文件。

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

2016-03-29

 

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

你可能感兴趣的文章
笔者亲自测试通过的修改SharePoint 2013的Topology脚本记录
查看>>
搜索引擎首页
查看>>
YARN - Yet Another Resource Negotiator
查看>>
[ASP.NET MVC 小牛之路]03 - Razor语法(转)
查看>>
linux系统下make & make install
查看>>
053医疗项目-模块五:权限设置-将用户操作权限写入Session
查看>>
DocX开源WORD操作组件的学习系列一
查看>>
svn导出某两个版本之间变化的文件
查看>>
box2dflash flash物理引擎
查看>>
[原创]FineUI秘密花园(二十六) — 选项卡控件概述
查看>>
python 守护线程和loggin模块
查看>>
Android中检测软键盘的弹出和关闭
查看>>
大数记录之,大数乘整型数nyoj832
查看>>
使用Unity3D自带动画系统制作下雨效果
查看>>
创建、显示和删除保存的用户名和密码(cmdkey)
查看>>
连载《一个程序猿的生命周期》-4.母亲的病魔
查看>>
关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)...
查看>>
02 svn 文件提交与目录结构
查看>>
让Quality Center走下神坛--测试管理工具大PK(转)
查看>>
mysql 数据库插入语句之insert into,replace into ,insert ignore
查看>>