华为安全类授权开发教程

2019-08-14  本文已影响0人  Walk_In_Jar

最近完成了这么个app,需要帮助的,可以留言。
1、与华为签订一系列的协议,他才会给你开通安全授权的入口。
2、提交一个你的应用demo(你的DEMO),与api申请表与自检表,申请开发证书,得到开发证书后,集成它的SDK,我用的是Android Studio ,先导出一个alis为cert的apk(此步骤是生成正确的签名文件,不要这个apk了),然后导出一个不签名的apk,最后用apksigner 使用刚刚的签名文件对其进行重签名,再集成开发证书,再apksigner重签名,得到的apk在指定的开发设备上测试吧。
原因是,As导出的签名apk可能与后面使用apksinger签名方法不一致,导致后面申请临时商用证书时拿不到权限。
3、在开发应用时,其提供了一个Sample,需要修改这个地方:
源代码如下:

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AppOpsManagerEx appManager = new AppOpsManagerEx();
   try {
    appManager.setMode(AppOpsManagerEx.TYPE_OPEN_BLUETOOTH, "com.huawei.mdm.sample2", AppOpsManagerEx.MODE_ALLOWED);
   } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  

        mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        mDeviceRestrictionManager = new DeviceRestrictionManager();
        mAdminName = new ComponentName(this, SampleDeviceReceiver.class);

        initSampleView();
        updateState();
        new SampleEula(this, mDevicePolicyManager, mAdminName).show();
    }

要删除

   try {
    appManager.setMode(AppOpsManagerEx.TYPE_OPEN_BLUETOOTH, "com.huawei.mdm.sample2", AppOpsManagerEx.MODE_ALLOWED);
   } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

如果不删除,可能会导致闪退。
4、apksinger命令:

apksigner sign --ks (你的签名文件路径) --v1-signing-enabled true –v2-signing-enabled true  -v3-signing-enabled false (你的apk路径)

华为不支持v3签名方式,所以最好是V1+V2的签名方式。
输入两个密码后,得到的apk应该就没问题了。
5、总结 :
始终使用apksinger进行签名,保持前后签名一致。
采用v1+v2,V3要false掉。
签名文件的别名为cert(小写),申请商用证书时,操作步骤应为 :
AS导出的未签名文件——apksigner签名(得到1.apk,好好保存这个apk,不要更改)——提交商用证书申请,网页上提示是临时商用证书即为正确——得到V2临时证书——使用Dev程序集成证书——apksigner重签名(得到2.spk)————提交2.spk申请正式商用证书,反馈时间差不多要6天。
2.apk理应在任何华为设备上可以调用,如果失败,就不要提交申请正式证书,过不了的,请检测CERT.SF文件的——X-Android-APK-Signed: 2 只有2。
得到最终的商用证书后,对1.apk集成证书,再重签名,此时就完成了。

上一篇下一篇

猜你喜欢

热点阅读