面向开发者

一.运行时

1.更快的解释器

2.JIT

  • 更快的安装时间
  • 更少的磁盘空间

3.AndroidOS的部分在线更新
4.只编译hot代码
在N之前,M以下的版本恢复和更新系统,都会有一个比较长时间的应用升级过程(Android应用优化)。这过程中系统需要对应用进行完全编译,编译完成以后,有可能占用10、20M的包会变成30、40M。那么,在N中我们提供了一种机制,哪怕你的包体积有100M以上,也有一个非常快的安装过程。这一切得于在N中提供了一个解释器,最一开始运行的时候,不再是经过编译,而是由最新的解释器来负责,解释器运行完之后,会把运行过的代码放在一个成为profile的文件夹,之后当你的手机处于空闲或者充电的状态下,再进行一部分的编译。只有系统认为完全有必要的情况下,才会对整个的apk进行编译。这样的话,我们就避免了装一个100M、200M的包装3分钟的情况。

二.新的运行时类库

  • ICU4J
    • Unicode编码以及全球化支持
    • 新的包名android.icu(避免与com.ibm.icu的冲突)

*新的功能接口

  • java.util.function
  • java.util.stream

    在N中我们把国际化的语言支持类库加入到系统里面,可以进一步的缩小包体积。另外,我们也引入了java 8,java 8 中有一些新的函数。如果想在N中使用java 8,必须详细的指定它,(编者注:此处缺少指定代码)。
    还有些新的函数方法,像Lambdas(通过匿名类实现,向后兼容到Ginerbread)

    Vertex[] v = new Vertex[100];
    //...
    Arrays.sort(v,(Vertex v1, Vertex v2) -> { return v1.length() - v2.length();});
    Arrays.sort(v,(v1, v2) -> { return v1.length() - v2.length();});
    Arrays.sort(v,VertexFactory.compareVertices);
    

    另外,我们使用java中的接口,我们可以放入一些静态的默认实现,但需注意的是,它并不向后兼容。

    public interface Renderable{
    void draw(Canvas c);
    default bool isHardwareAccelerated(){
    return false;
    }
    static int getMaxTextureSize(){
    return 2048;
    }
    }
    

三.Renderscript

  • Single source
    ** 一个文件包括多个kernel

    ** 通过kernel启动kernel

  • Renduction kernels

  • 增强fp16的支持

在android手机里面比较高频的应用就是照相。而Renderscript就是帮助大家去做图片处理和视频处理的。在N中,我们增加了很多新的功能,比如在脚本中,用一个kernel去调用另外一个kernel,以避免,kernel脚本和java之间来回的频繁调用。

四.OpenGL ES 3.2

  • GLES 3.1 + Android extension pack

    • Except EXT_texture_sRGB_decode
  • 高级的blending equations

  • Tessellation shaders
  • Geometry shaders
  • ASTC(LDR)
  • Image atomics
  • Floating point framebuffers

五.Vulkan

  • 更底层,低开销,跨平台3DAPI
  • 异步/多线程 命令产生
  • Intermediate shader binary format(SPIR-V)
  • 离线shaders编译
  • 基于对象的API,无全局状态
  • 内容管理和同步
  • 无错误检查

六.adb shell

  • 返回 remote process 退出状态
  • 通过stdin输入参数($ cat README | adb shell wc -l)
  • 增强的命令行工具(ls,etc.)
  • 性能改进(pull,push)

七.NDK

  • Clang 3.8
  • GCC4.9
  • 切换到Clang,GCC准备退休了!
  • ARM工具缺省是arm7 arch

八.VR

在最新版本的android 7.1的系统上是有VR的API的,但需要硬件支持,所以大家在使用的时候,一定要记得检测硬件配置,并不是所有手机的硬件配置都支持这个API的。

Activity.setVrModeEnabled(boolean, ComponentName);
  //ActivityManager.setVrThread(int tid);

results matching ""

    No results matching ""