Skip to content
SophiaGuo edited this page Sep 29, 2020 · 10 revisions

Hardcoder 常见问题

  1. 开发者接入 Hardcoder 如何获取厂商权限?

    为方便开发者接入,我们努力与各厂商进行沟通,建立一套尽可能自助申请权限的机制。

    厂商 无需注册 自助注册 需要申请 申请方式
    OPPO OPPO 开放平台官网 https://open.oppomobile.com/wiki/doc#id=10355 注册获取 APP 授权码,通过 checkPermission 接口传入
    vivo 邮件联系:yindeyi@vivo.com 获取测试权限,并在 APP 接入后根据 APP 测试数据判定是否开放线上权限
    小米 APP 接入后根据 APP 测试数据判定是否开放权限,邮件联系:mispeed-business@xiaomi.com
    华为
    三星
    魅族 申请邮箱:hc_support@meizu.com

    厂商列表会随着业务的发展持续更新。

  2. 具体支持 Hardcoder 机型列表

    厂商 支持机型
    OPPO 开放平台申请后 Reno 以上机型
    vivo 旧机型如下列表,新机型包括 2019 年起新出的 X 系列、NEX 系列、IQOO 系列
    小米 MIUI 10 部分支持,MIUI 11以上全部支持
    华为 系统版本 EMUI 9.0 以上大部分机型
    三星 Android Q 及以上所有机型,Android P 部分机型(见下表)
    魅族 全量支持

    vivo 旧机型支持列表:

    机器 版本
    PD1836 vivo X27 Pro 1.11.4
    PD1805 vivo NEX S 7.8.1
    PD1821 vivo NEX 双屏版 5.5.7
    PD1911 Z5x/Z5x 1.6.1
    PD1838 X27 8G+128G版/X27 8G+128G版 1.10.8
    PD1824 vivo IQOO 1.16.33
    PD1914 iQOO Neo 1.5.1
    PD1829 vivo X27 1.11.1

    小米支持版本列表:

    开发版支持版本 稳定版支持版本
    Redmi K20 19.6.19 以上 V11 以上
    Redmi K20 Pro 19.5.28 以上 V11.1 以上
    小米9 19.1.24 以上 V10.2.31.0 以上
    Redmi Note 8 Pro 19.10.13 以上 V11 以上
    小米9 SE 19.3.09 以上 V10.3.6.0 以上
    小米MIX2S 19.3.09 以上 V10.3.3.0 以上
    小米8透明探索版 19.3.09 以上 V10.3.5.0 以上
    小米MIX 3 18.9.29 以上 V10.3.2.0 以上
    小米8屏幕指纹版 19.3.09 以上 V10.3.4.0 以上
    小米8 18.9.29 以上 V10.3.4.0 以上
    小米CC9 美图定制版 19.3.07 以上 V10.3.1.0 以上
    小米CC9 19.3.07 以上 V10.3.3.0 以上
    小米MAX3 19.3.07 以上 V11.1 以上
    小米8青春版 19.3.07 以上 V11.1 以上
    小米8SE 19.2.21 以上 V11.1 以上
    小米MIX2 19.2.22 以上 V10.3.1.0 以上
    小米6 19.2.22 以上 V10.3.1.0 以上
    红米Note7Pro 19.3.15 以上 V10.3.9.0 以上
    红米Note7 19.2.21 以上 V10.3.3.0 以上

    三星 Android P 版本支持机型列表(Android Q 及以上全部支持)

    型号
    三星 A30 SM-A3050
    三星 A50s SM-A5070
    三星 A60 SM-A6050
    三星 A70 SM-A7050
    三星 A80 SM-A8050
    三星 A8s SM-G8870
    三星 A90s SM-A9080
    三星 A9 Star SM-G8850
    三星 M30s SM-M3070
    三星 Note10+ SM-N9760
    三星 W2018 SM-W2018
    三星 W2019 SM-W2019
  3. Hardcoder 会造成系统资源抢占或者浪费吗?

    Hardcoder 所有调用只是应用发出的请求,代表应用此时需要资源,但是具体响应取决于系统。比如在系统资源紧张时,系统有可能无法分配相应资源。

    同时,Hardcoder server 端也会对应用请求资源做一定限制(厂商侧),确保不会造成资源抢占问题,比如只有应用在前台时允许请求资源,在后台时请求会被忽略;限制应用请求资源的最长时间等。

  4. Hardcoder 覆盖了哪些机型,开发者需要做适配吗?

    目前 OPPO、vivo、华为、小米、三星、魅族等主流手机厂商已支持 Hardcoder,覆盖 4.6 亿+ 设备量。调用 initHardcoder 接口创建 socket 连接时可判断该手机是否支持 Hardcoder,若不支持,会设置标志位,后续所有请求调用会被拦截,确保不影响在不支持 Hardcoder 机型上的性能。开发者无需再做适配。

  5. Hardcoder 的请求会阻塞吗?

    Hardcoder 本质上只是应用提出资源诉求,所有调用为异步调用,不阻塞。一般情况下应用无需关心请求是否被响应,若需要得到请求是否被执行,可通过异步回调获取。

  6. 场景值需要与厂商协商吗?

    场景值由 APP 自行定义,推荐使用 Hardcoder 分类定义,代码在 HardCoderJNI.java

    public final static int APP_SCENE_UNDEFINE = 0;                 //未定义场景
    public final static int APP_SCENE_STARTUP = 1;                  //进程启动,APP启动
    public final static int APP_SCENE_WINDOW_SWITCH = 2;            //UI页面切换(同一进程),activity,fragment切换
    public final static int APP_SCENE_WINDOW_SCROLL = 3;            //UI页面滑动
    public final static int APP_SCENE_DATA_LOADING_AND_PROCESS = 4; //数据加载和处理任务,指APP本地前后台任务
    public final static int APP_SCENE_MULTI_MEDIA_PROCESS = 5;      //多媒体相关业务
    public final static int APP_SCENE_COMMUNICATE = 6;              //APP/服务端通信
    public final static int APP_SCENE_SYSTEM_DEVICE = 7;            //调用系统服务
    
  7. 其他注意事项

    • 目前华为手机限制了一个 APP 不能超过三个连接,即不能超过三个进程同时请求 Hardcoder。后续华为侧会修改此限制,但需要更新 ROM。
  • 部分厂商会在 APP 启动时使用暴力提频,在 APP 启动时直接把频率提到最高,此时使用 Hardcoder 性能提升空间可能较小。其余场景特别是在系统无法检测到的场景,比如 Fragment 切换等 Hardcoder 性能提升比较明显。
Clone this wiki locally