基于cordova的app发布技巧

         背景:APP用到的相关插件,cordova-plugin-bdasr人脸注册和识别、cordova-amap-location获取经纬度坐标及地理位置描述、cordova-plugin-android-permissions应用权限获取及授权。

     一、 签名问题

      apk文件只有签名后才能安装使用,签名的作用一方面保证安装包内文件的完整性,以防文件被篡改导致不可预知的后果;另一方面在安装包内附加应用的开发者信息。

       apk签名一般按照如下流程即可:【相关详细信息参见“创建app数字签名证书”】

     1)创建形成数字签名证书文件,如该文件名为:thiskey.jks

      2)编译完成形成未签名的apk文件,如文件名为:abc-unsigned.apk

       3)对apk文件进行签名,如形成签名文件名为:abc.apk

     签名命令:jarsigner -verbose -keystore thiskey.jks -signedjar abc.apk  -digestalg SHA1 -sigalg MD5withRSA abc-unsigned.apk nankailog

      二、 授权问题

     apk需要授予“存储”、“位置信息”、“相机”权限,否则无法进行脸部识别或者无法获取地理位置定位信息,以及由此导致的各类错误,最终就是相关应用功能无法正常执行。

     虽然可以在移动终端的“设置”功能中手工给应用进行授权,但如果apk安装包的config.xml没有进行正确设置,会导致无法执行正确的手工授权,甚至无法进行授权(即找不到需要的权限进行设置);或者即使config.xml正确设置了,手工授权时也需要操作人员具有一定的专业知识,否则手工操作授权的过程也会降低应用使用的友好体验。

    因此为了方便授权,提高操作的友好性:

   1)安装安卓运行时权限检测插件

…\ src-cordova> cordova plugin add cordova-plugin-android-permissions

    2)代码中增加权限校验,和赋权功能

let permissions = cordova.plugins.permissions;
let p_list = [

permissions.CAMERA,
permissions.INTERNET,
permissions.WRITE_EXTERNAL_STORAGE, permissions.ACCESS_NETWORK_STATE,
permissions.ACCESS_WIFI_STATE,
permissions.CHANGE_WIFI_STATE,
permissions.READ_PHONE_STATE,
permissions.ACCESS_COARSE_LOCATION, permissions.ACCESS_FINE_LOCATION ];
permissions.hasPermission(p_list, (status) => {
      if (!status.hasPermission) {
          permissions.requestPermissions(p_list, (status) => {
              if (!status.hasPermission) { this.$q.notify("请手工打开定位权限!"); }
               else { //this.$q.notify("已授权!"); }; }, () => { this.$q.notify("授予权限失败!"); }); } else { //this.$q.notify("有权限!"); }; }, () => { this.$q.notify("访问权限失败!"); });

    3)cordova的config.xml的“”段内增加如下配置信息


 
 
 
 
 
 
 

    4)签名的apk安装完成后,第一次执行会提示打开诸多权限,同时打开即可。如果不同意,那就只能手工到移动终端的“设置”功能中手工给应用进行授权:“存储”、“位置信息”、“相机”权限。

    常见问题:

     1)config.xml中需要授予权限的确定依据

     到应用用到的每个plugin中的plugin.xml文件中“uses-permission”查找所涉及的权限,然后汇总填写到config.xml中。

      2)无法扫脸识别、无法获取定位信息时,手工到“设置”功能中手工给应用进行授权:“存储”、“位置信息”、“相机”权限。

     3)如果不配置以上参数,则系统采用默认参数,由此可能导致诸多不可控权限错误。(如果运气好,也可能一切都能正常运行)

     三、app图标

cordova的config.xml的“”段内增加如下配置信息:




      当然前提是在以上路径res/icon/android/中增加所需要的图标文件。

     如果不配置以上信息,则采用默认的安卓图标。

     四、跨域访问

     cordova-plugin-bdasr人脸识别插件需要访问百度开放的API,在开发环境下需要通过开发环境中的反向代理功能进行API访问:

url: '/baiduapi/rest/2.0/face/v3/search?' + qs.stringify(param3),

    在发布版本中,由于APP是直接访问,所以无需反向代理,直接访问API:

url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?' + qs.stringify(param3),

    常见问题:需要搞清楚开发环境、web发布版本、APP版本的差异性,前两者都需要进行反向代理,当然开发环境的反向代理是开发环境内进行配置支持,WEB发布版本一般需要在服务器端部署nginx以支持反向代理,app则不需要反向代理,直接访问即可。

你可能感兴趣的:(基于cordova的app发布技巧)