参考链接:https://www.52pojie.cn/thread-395689-1-1.html

res目录下资源文件在编译时会自动生成索引文件(R.java ),

asset目录下的资源文件无需生成索引。

一般来说:使用C++游戏引擎的资源文件放在asset下

      java开发中除音频和视频资源(放在raw或asset下),均放在res下。

  • Dalvik字节码是什么?

  Dalvik是Google专门为Android设计的一个虚拟机。

  Dalvik VM是基于寄存器的,而JVM是基于栈的,Dalvik有专属的文件执行格式dex(Dalvik executable),jvm使用的是java字节码。

  Dalvik VM你jvm速度更快,占用空间更少。

  • 什么是Smali?

  Smali,baksmali分贝时指安卓系统里的java虚拟机(Dalvik)所使用的一种。dex格式文件的汇编器,反汇编器。

  语法为一行宽松的Jasmin/dedeser语法,且实现了.dex格式的所用功能(注解,调试信息,线路信息等)。

  对apk文件进行反汇编后,便会生成此类文件。其中在Dalvik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个寄存器表示。

  • Dalvik字节码有两种类型:原始类型,引用类型。

  

  原始类型:  

      B --- byte

      C --- char

      D --- double

      F --- float

      I --- int

      J --- long

      S --- short

      V --- void

      Z --- boolean  

      [XXX --- array    //数组表示方式:基本类型前加上“[”,eg:int型数组表示为:[I

      LXXX/yyy --- object  //对象表示以L开头,格式为LpackageName/objectName;(分号必须有)

      //eg:String在Smali中为:LJava/lang.String; ,其中java/lang对应java.lang包,String就是定义在该包中的一个对象。

      //内部类表示为:LpackName/objectName$subObjectName;。即在内部类前面加“$”符号。

    方法定义:Func-Name(para-Type1para-Type2para-Type3...)Return-Type    //参数之间没有空格

    eg:hello()v    //void hello()

      hello(III)Z    //boolean hello(int,int,int)

      hello(Z[I[ILjava/lang/String;J)Ljava/lang/String    //String hello(boolean,int[],int[],String,long)

  • Smali基本语法

  .field private isFlag:z  定义变量

  .method       方法

  .parameter     方法参数

  .prologue      方法开始

  .line 123     此方法位于第123行

  invoke-super   调用父函数

  const/high16 vO, 0x7fo3   把0x7fo3赋值给v0

  invoke-direct   调用函数

  return-void   函数返回void

  .end method   函数结束

  new-instance   创建实例

  iput-object   对象赋值

  iget-object   调用对象

  invoke-static   调用静态函数

  • 条件跳转分支:

  "if-eq vA, vB, :con_**"   如果vA等于vB则跳转到:cond_ **

  "if-ne vA, vB, :cond_**"    如果vA不等于vB则跳转到:cond_ **

  "if-It vA, vB, :cond_**"    如果vA小于vB则跳转 到:cond_ **

  "if-ge vA, vB, :cond_**"     如果vA大于等于vB则跳转到:cond_ **

  "if-gt vA, vB, :cond_**"    如果vA大于vB则跳转到:cond_ **

  "if-le vA, vB, :cond_ *"     如果vA小于等于vB则跳转到:cond_ **

  "if-eqz vA, :cond_**"    如果vA等于0则跳转到:cond_ **

  "if-nez vA, :cond_**"    如果vA不等于0则跳转到:cond_ **

  "if-Itz vA, :cond_**"    如果vA小于0则跳转到:cond_**

  "if-gez vA, :cond_**"   如果vA大于等 于0则跳转到:cond_ **

  "if-gtz vA, :cond_**"     如果vA大于0则跳转到:cond_ **

  "if-lez vA, :cond_**"    如果vA小于 等于0则跳转到:cond **

  

  

最新文章

  1. 聊聊css hack
  2. SQL变量、Substring、charindex、case函数、去除重复
  3. 解决href标签跳转到WEB-INF下的jsp页面的办法
  4. linux 配置tomcat运行远程监控(JMX)
  5. 【Matplotlib】设置刻度(1)
  6. 简明Python中的一个小错误
  7. struts2 ,web.xml中配置为/*.action,运行报错Invalid <url-pattern> /*.action in filter mapp
  8. MySQL和Navicat使用总结
  9. 对于Unicode编码在js中和html中
  10. 正则表达式(来源http://deerchao.net/tutorials/regex/regex.htm)
  11. My97DatePicker使用的问题
  12. springmvc+mybatis下载项目自带模板
  13. Retrofit 实现获取往里圆角图片,且传值到另一个页面
  14. Spring以及tomcat中的Listener
  15. Windows 10 执行pip list报错 UnicodeDecodeError: 'gbk' codec can't decode
  16. EasyUI datebox 设置不可编辑后再次修改为可编辑失效的解决
  17. yum 和 rpm安装mysql彻底删除(转)
  18. AngularJS——第7章 依赖注入
  19. 佛祖保佑,永不死机 - /etc/motd文件配置
  20. Git与TortoiseGit基本操作

热门文章

  1. oracle 中decode函数用法
  2. 【go】http实验
  3. jquey中json字符串与json的转换(转)
  4. swift - UIWebView 和 WKWebView(iOS12 之后替换UIWebView)
  5. 同种类型不同名字的变量在for循环中操作
  6. Linux配置Nginx负载均衡
  7. redis创建集群——[ERR] Sorry, can't connect to node 192.168.X.X
  8. 半吊子的STM32 — SPI通信
  9. js 横屏 竖屏 相关代码 与知识点
  10. vue,angular,react框架对比