Skip to content

Latest commit

 

History

History
371 lines (294 loc) · 12.4 KB

README_zh.md

File metadata and controls

371 lines (294 loc) · 12.4 KB

MiBridge
MiSpeed

Powerful yet simple to use .

Build Status Doc Status Jar Status license

小米应用加速器

其他语言

English

Index

我们的目的

一切为了用户,让用户得到最好的体验!

简介

小米应用加速器向开发者提供申请系统资源的接口,可以为开发者提升应用关键场景下的性能,提升用户使用体验。

我们的优势

  • 轻量级接入
    通过JAR包接入,大小只有几kb, 不会对开发者的应用造成负担
  • 快速系统通信
    通过Binder直接与系统层进行通信,申请系统资源,快速高效
  • 场景化定制
    为开发者在不同的场景下提供不同级别的系统资源

接入说明

MiBridge.jar
 您可以引入此jar包调用小米应用加速器相关接口。
TestMiBridge
 此目录包含:
  mibridge: MiBridge jar包的实现代码。
  app: 测试MiBridge的app代码。

申请调试权限

请提供以下信息,发送到邮箱[email protected], 申请接入调试权限。

邮件主题:xx(APP名称)申请小米应用加速器接入调试权限

应用包名 申请人
com.mi.testmibridge 张三

我们将会为您开通调试权限.

支持设备版本列表

使用maven依赖

1.配置小米应用加速器的Maven仓库地址

打开Android Studio项目级“build.gradle”文件。在“allprojects > repositories”中配置小米应用加速器的Maven仓地址。

allprojects {
 repositories {
        ...
  //增加小米应用加速器的Maven仓库地址
  maven {
    url "https://repos.xiaomi.com/maven"
    credentials {
      username 'mi-bridge'
      password 'AKCp8nH4XbDQshne9w5PgaLroZ7kozqtAPo6Kw6pfZLBWzPEtAJoFzU73RHryxXkmcL5biUL2'
      }
    }
  }
}

2、添加编译依赖

打开应用级的“build.gradle”文件。

dependencies {
    ...
    //1.0.xx是mibridge的版本号,后续升级也要修改对应版本号。
    implementation "com.xiaomi.mibridge:mibridge:1.0.18"
    ...
}

接口定义

权限检查接口

  1. boolean checkDebugPermission(Context context, String pkg, int uid, String auth_key)
    介绍:通过申请获得的鉴权码,检查应用是否有调试权限。

    参数:
    context : 应用上下文
    pkg : 应用包名
    uid : android.os.Process.myUid()
    auth_key : 上一步中申请获得的鉴权码

    返回结果:
    true: 权限检查通过
    false: 权限检查失败,无接口使用权限

  2. boolean checkPermission(String pkg, int uid)
    介绍:检查应用是否有权限

    参数:
    pkg : 应用包名
    uid : android.os.Process.myUid()

    返回结果:
    true: 权限检查通过
    false: 权限检查失败,无接口使用权限

系统资源申请接口

  1. int requestCpuHighFreq(int uid, int level, int timeoutms)
    介绍:向系统申请cpu频率资源的接口

    参数:
    uid : android.os.Process.myUid()
    level : 需要的cpu频率level,系统将会根据不同机型设置不同的cpu频率
    timeoutms : 申请cpu资源的持续时间

    Level级别 解释(以小米8为例) timeoutms
    1 Level 1 将会设置系统当前最小频率为系统最高频率 最长10s
    2 Level 2 将会设置系统当前最小频率为系统较高频率
    例:小米8对应大核最低2.2GHz, 小核最低1.5GHz
    最长5s
    3 Level 3 将会设置系统当前最小频率为系统正常频率以上
    例:小米8对应大核最低1.9GHz, 小核最低1.0GHz
    最长1.5s

    注意:请谨慎使用Level 1级别。Level 1级别使用场景数量限制为5,
    Level 2级别使用场景数量限制为20,Level 3 不做限制。

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  2. int cancelCpuHighFreq(int uid)
    介绍:取消申请cpu频率资源的接口

    参数:
    uid : android.os.Process.myUid()

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  3. int requestThreadPriority(int uid, int req_tid, int timeoutms)
    介绍:申请线程获得高优先级,将会优先得到调度运行

    参数:
    uid : android.os.Process.myUid()
    req_tid : 申请的线程id
    timeoutms : 申请的时长

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  4. int cancelThreadPriority (int uid, int req_tid)
    介绍:取消申请线程优先级的接口

    参数:
    uid : android.os.Process.myUid()
    req_tid : 取消的线程id

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  5. int requestGpuHighFreq(int uid, int level, int timeoutms)
    介绍:向系统申请gpu频率资源的接口

    参数:
    uid : android.os.Process.myUid()
    level : 需要的gpu频率level,系统将会根据不同机型设置不同的gpu频率
    timeoutms : 申请gpu资源的持续时间

    Level级别 解释 timeoutms
    1 Level 1 将会设置系统当前最小频率为系统最高频率 最长10s
    2 Level 2 将会设置系统当前最小频率为系统较高频率 最长5s
    3 Level 3 将会设置系统当前最小频率为系统正常频率以上 最长1.5s

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  6. int cancelGpuHighFreq(int uid)
    介绍:取消申请gpu频率资源的接口

    参数:
    uid : android.os.Process.myUid()

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  7. int requestDdrHighFreq(int uid, int level, int timeoutms)
    介绍:向系统申请ddr频率资源的接口

    参数:
    uid : android.os.Process.myUid()
    level : 需要的ddr频率level,系统将会根据不同机型设置不同的ddr频率
    timeoutms : 申请ddr资源的持续时间

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  8. int cancelDdrHighFreq(int uid)
    介绍:取消申请ddr频率资源的接口

    参数:
    uid : android.os.Process.myUid()

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  9. int requestIOPrefetch(int uid, String filePath)
    介绍:申请IO预读取接口

    参数:
    uid : android.os.Process.myUid()
    filePath : 预读取的文件路径

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!

  10. int requestBindCore(int uid, int req_tid)
    介绍:申请线程优先大核运行接口

    参数:
    uid : android.os.Process.myUid()
    req_tid : 申请的线程id

    返回结果:
    0: Success
    -1: Fail
    -2: Permission not granted!
    系统状态接口

  11. int getSystemState(int uid, Context context, int type)
    介绍:如开发者所知,在设备温度升高的时候,系统常常会为了降低温度/减缓温度升高的速度,保护硬件进行限频、限帧等限制。同时,系统续航模式切换到省电模式或超级省电的时候,系统也会为了延长续航进行限频、限帧等限制。限制后可能会导致应用出现卡顿等状况让设备使用体验不佳,因此当设备温控限频即将发生变化时,系统可调用预定义的回调函数通知三方应用,同时系统也为三方应用提供了温控level的查询接口及当前续航模式的查询接口,在温控level变化时应用可收到警报,或者应用要进行复杂操作时,可查询下用户当前的温控level及续航模式,如果温控限频严重或续航模式为省电模式/超级省电,建议应用可在保障基本操作流畅的前提下,动态调整代码执行负载和代码复杂度,配合手机系统协同优化,提高整机使用体验。
    参数:
    uid : 调用者UID
    context : 应用上下文
    type : 查询的系统状态类型,目前有两类:

    • 1 : 设备壳温
    • 2 : 系统省电模式

    返回结果 :

    • 当查询设备壳温时(type = 1),返回对应温度的温控级别
      • 0: 正常范围
      • 1: 轻微限频
      • 2: 较严重限频
      • 3: 非常严重限频
      • -2 : Permission not granted!
    • 当查询设备省电模式(type = 2),返回当前省电模式
      • 0:性能模式
      • 1:均衡模式
      • 2:省电模式
      • 3:超级省电
      • -2 : Permission not granted!
  12. int registerThermalEventCallback(int uid, ThermalEventCallBack cb)
    介绍:注册回调,当系统温控级别发生变化,触发回调接口onThermalLevelChanged

    ThermalEventCallBack  cb = new ThermalEventCallBack() {
        @Override
        public void onThermalLevelChanged(int level) {
            //do somthing;
        }
    };

    参数 :
    uid : 调用者UID
    cb : 回调实例,须重写onThermalLevelChanged()方法
    返回结果 :

    • 0 : 注册成功
    • -1 : 注册失败
    • -2 : Permission not granted!
  13. int unRegisterThermalEventCallback(int uid, ThermalEventCallBack cb)
    介绍:注销回调
    参数:
    uid : 调用者UID
    cb : 回调实例
    返回结果 :

    • 0 : 注销成功
    • -1 : 注销失败
    • -2 : Permission not granted!

申请正式权限

请提供以下信息,发送到邮箱[email protected], 申请正式权限。
邮件主题:xx(APP名称)申请小米应用加速器正式权限
__1. 资源接口使用场景

场景 cpu level thread priority timeout (ms)
打开xxx页面 1 0 100
Xxx滑动 2 0 1000
场景3 3 1 500
场景4 1 0 100
场景5 0 1 2000

__2. 性能测试

场景 具体测试内容 优化前 优化后 提升
进入某页面 进入页面耗时 100 ms 80 ms 20%
某页面滑动 滑动丢帧数(率) 10% 6% 40%
场景3 测试内容3 .. .. ..

备注:我们也会根据您提供的场景进行性能测试。

__3. 功耗测试

场景 Base 接入后 Diff
场景1 1000 mA 1050 mA 50
场景2 .. .. ..

备注:我们也会根据您提供的场景进行功耗测试。

更多合作

后续将会开放更多接口
requestIOHighFreq,requestMemory,requestNetwork等

后续可以提供的支持
为您的应用提供更多的支持(例如,卡顿打点,内存泄漏打点),提升应用的性能,提升用户的使用满意度。