HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

HBuilderX语法校验、eslint实时校验自动修复功能说明

语法校验 HBuilderX eslint

本帖文档已集成到: hx产品文档

一个校验工具可以帮助我们在编写代码时避免一些愚蠢的错误。

一个好的校验工具可以在我们浪费时间找BUG之前告诉我们存在的问题。

一个好的校验工具可以确保一个项目遵循编码规范。

1. 插件安装与配置

HBuilderX 包含4款语法校验插件,htmlhint, stylelint, eslint-plugin-vue, eslint-js。主要用于校验html,css/less/sass/scss,vue, javascript

如下图:

1.1 安装插件

点击菜单【工具】【插件安装】,在弹出的窗口中,根据需要安装所需插件即可。

1.2 插件配置

安装完插件后,进入菜单【工具】【插件配置】,找到所需插件,进行插件配置。

2. 语法校验

当代码中出现错误时,保存的时候,底部工具栏会出现提示,且代码中出错的地方会出现红色波浪线,按下F4可以跳转到错误的地方。

如下图:

3. 插件规则配置

插件配置文件入口:菜单【工具】【插件配置】

语言/文件 插件名称 配置文件 配置教程
vue eslint-plugin-vue .eslintrc.js vue规则配置说明
css/less/sass stylelint .stylelintrc.js css规则配置说明
html htmllint .htmlhintrc html规则配置说明
javascript eslint-js .eslintrc.js js规则配置说明

stylusphp,暂时没有语法校验插件,后期会增加。

备注: 关于eslint, HBuilderX 2.6.8已支持语法错误自动修复。见本文第四章。

4. eslint自动修复、以及实时校验功能说明

2.6.8+版本起,新增eslint 文件保存自动修复错误、实时语法校验的功能。见https://ask.dcloud.net.cn/article/37070

2.2.0和2.6.8之间的版本,使用eslint一键修复功能。见https://ask.dcloud.net.cn/article/36532

继续阅读 »

本帖文档已集成到: hx产品文档

一个校验工具可以帮助我们在编写代码时避免一些愚蠢的错误。

一个好的校验工具可以在我们浪费时间找BUG之前告诉我们存在的问题。

一个好的校验工具可以确保一个项目遵循编码规范。

1. 插件安装与配置

HBuilderX 包含4款语法校验插件,htmlhint, stylelint, eslint-plugin-vue, eslint-js。主要用于校验html,css/less/sass/scss,vue, javascript

如下图:

1.1 安装插件

点击菜单【工具】【插件安装】,在弹出的窗口中,根据需要安装所需插件即可。

1.2 插件配置

安装完插件后,进入菜单【工具】【插件配置】,找到所需插件,进行插件配置。

2. 语法校验

当代码中出现错误时,保存的时候,底部工具栏会出现提示,且代码中出错的地方会出现红色波浪线,按下F4可以跳转到错误的地方。

如下图:

3. 插件规则配置

插件配置文件入口:菜单【工具】【插件配置】

语言/文件 插件名称 配置文件 配置教程
vue eslint-plugin-vue .eslintrc.js vue规则配置说明
css/less/sass stylelint .stylelintrc.js css规则配置说明
html htmllint .htmlhintrc html规则配置说明
javascript eslint-js .eslintrc.js js规则配置说明

stylusphp,暂时没有语法校验插件,后期会增加。

备注: 关于eslint, HBuilderX 2.6.8已支持语法错误自动修复。见本文第四章。

4. eslint自动修复、以及实时校验功能说明

2.6.8+版本起,新增eslint 文件保存自动修复错误、实时语法校验的功能。见https://ask.dcloud.net.cn/article/37070

2.2.0和2.6.8之间的版本,使用eslint一键修复功能。见https://ask.dcloud.net.cn/article/36532

收起阅读 »

ios和安卓蓝牙通讯开发经验分享

蓝牙

混合开发ios与安卓蓝牙收发数据,通讯加密解密已经完成。还希望官方继续更新,欢迎大家一起讨论进步!

混合开发ios与安卓蓝牙收发数据,通讯加密解密已经完成。还希望官方继续更新,欢迎大家一起讨论进步!

安卓原生小白,uniapp离线打包接入自定义插件简单调用成功流程记录

uniapp离线打包 uniapp插件

【此事件研究第二天】为了实现安卓和uniapp结合,发现之前是直接想复杂了,想着用插件的方式,完全可以直接调用java写的方法和页面。
uniapp直接调用安卓自定义方法

在需要接入三方sdk的情况下,研究了下uniapp离线打包。整个过程中遇到的坑
uniapp离线打包填坑记

在离线打包成功后,后续又花了些时间研究了,引入自定义插件。
参考文档:uni-app原生插件开发教程 Android Studio 版
全程参考官方提供文档,可最新sdk包里下载下来的UniPlugin-Hello-AS项目;
主要也是想弄明白整个流程。

纯小白经验记录贴,pc和手机端一起搞的,担心太久不搞手机会忘记。

1.在HbuilderX新建一个uniapp项目,就是最简单的hello uniapp,

  1. 在Android Studio 内新建一个安卓项目,将uniapp项目离线打包至安卓项目内,并成功运行。
  2. 全都成功后,按照官方提供的文档uni-app原生插件开发教程 Android Studio 版
    在uni-app插件Module,我给的名字mytest_text,剩下的配置就按照官方提供的就行。

4.上面的完了,配置就结束了,可以开始开发了。(官方提供的其实已经很简单了,但是我太蠢了,看着脑壳疼,走了个简单的,枯了)
就是写了一个简单的方法可以在uniapp下vue中调用。第一步出去,那离成功就不远了。

在module下src->main->java->com.exmaple.mytest_test 下新建MyTestText。
参考UniPlugin-Hello-AS项目下的 RichAlertWXModule

package com.example.mytest_text;  

import com.taobao.weex.WXSDKEngine;  
import com.alibaba.fastjson.JSONObject;  
import com.taobao.weex.annotation.JSMethod;  
import com.taobao.weex.bridge.JSCallback;  

public class MyTestText extends WXSDKEngine.DestroyableModule {  
    public String NAME = "name";  
    public String VALUE = "value";  
    @Override  
    public void destroy() {  

    }  
    @JSMethod(uiThread = true)  
    public void add(JSONObject options, JSCallback jsCallback) {  
        System.out.println("WWWWWWW-WWWWW");  
        String name = options.getString(NAME);  
        String value = options.getString(VALUE);  
        JSONObject result = new JSONObject();  
        result.put("result",name+value);  
        jsCallback.invoke(result);  
    }  
}  

新建 MyTest_AppProxy

package com.example.mytest_text;  

import android.app.Application;  

import com.taobao.weex.WXSDKEngine;  
import com.taobao.weex.common.WXException;  

import io.dcloud.weex.AppHookProxy;  

public class MyTest_AppProxy  implements AppHookProxy {  
    @Override  
    public void onCreate(Application application) {  
    }  
}  

用于引入插件配置,
在安卓项目 assets下新建一个dcloud_uniplugins.json文件,

{  
  "nativePlugins": [  
    {  
      "hooksClass": "",  
      "plugins": [  
        {  
          "type": "module",  
          "name": "MyTest-Text",  
          "class": "com.example.mytest_text.MyTestText"  
        }  
      ]  
    },  
    {  
      "hooksClass": "uni.dcloud.io.uniplugin_stepcounter.StepCounterHookProxy"  
    }  
  ]  
}

name:为插件名,在uniapp调用时需要用到,class需要是自己java类

5.安卓上配置好,现在转向uniapp内,在需要的地方调用方法。本地打包,将生成的文件www下的替换掉之前的。在安卓下运行。就可以调用成功

运行后显示;

继续阅读 »

【此事件研究第二天】为了实现安卓和uniapp结合,发现之前是直接想复杂了,想着用插件的方式,完全可以直接调用java写的方法和页面。
uniapp直接调用安卓自定义方法

在需要接入三方sdk的情况下,研究了下uniapp离线打包。整个过程中遇到的坑
uniapp离线打包填坑记

在离线打包成功后,后续又花了些时间研究了,引入自定义插件。
参考文档:uni-app原生插件开发教程 Android Studio 版
全程参考官方提供文档,可最新sdk包里下载下来的UniPlugin-Hello-AS项目;
主要也是想弄明白整个流程。

纯小白经验记录贴,pc和手机端一起搞的,担心太久不搞手机会忘记。

1.在HbuilderX新建一个uniapp项目,就是最简单的hello uniapp,

  1. 在Android Studio 内新建一个安卓项目,将uniapp项目离线打包至安卓项目内,并成功运行。
  2. 全都成功后,按照官方提供的文档uni-app原生插件开发教程 Android Studio 版
    在uni-app插件Module,我给的名字mytest_text,剩下的配置就按照官方提供的就行。

4.上面的完了,配置就结束了,可以开始开发了。(官方提供的其实已经很简单了,但是我太蠢了,看着脑壳疼,走了个简单的,枯了)
就是写了一个简单的方法可以在uniapp下vue中调用。第一步出去,那离成功就不远了。

在module下src->main->java->com.exmaple.mytest_test 下新建MyTestText。
参考UniPlugin-Hello-AS项目下的 RichAlertWXModule

package com.example.mytest_text;  

import com.taobao.weex.WXSDKEngine;  
import com.alibaba.fastjson.JSONObject;  
import com.taobao.weex.annotation.JSMethod;  
import com.taobao.weex.bridge.JSCallback;  

public class MyTestText extends WXSDKEngine.DestroyableModule {  
    public String NAME = "name";  
    public String VALUE = "value";  
    @Override  
    public void destroy() {  

    }  
    @JSMethod(uiThread = true)  
    public void add(JSONObject options, JSCallback jsCallback) {  
        System.out.println("WWWWWWW-WWWWW");  
        String name = options.getString(NAME);  
        String value = options.getString(VALUE);  
        JSONObject result = new JSONObject();  
        result.put("result",name+value);  
        jsCallback.invoke(result);  
    }  
}  

新建 MyTest_AppProxy

package com.example.mytest_text;  

import android.app.Application;  

import com.taobao.weex.WXSDKEngine;  
import com.taobao.weex.common.WXException;  

import io.dcloud.weex.AppHookProxy;  

public class MyTest_AppProxy  implements AppHookProxy {  
    @Override  
    public void onCreate(Application application) {  
    }  
}  

用于引入插件配置,
在安卓项目 assets下新建一个dcloud_uniplugins.json文件,

{  
  "nativePlugins": [  
    {  
      "hooksClass": "",  
      "plugins": [  
        {  
          "type": "module",  
          "name": "MyTest-Text",  
          "class": "com.example.mytest_text.MyTestText"  
        }  
      ]  
    },  
    {  
      "hooksClass": "uni.dcloud.io.uniplugin_stepcounter.StepCounterHookProxy"  
    }  
  ]  
}

name:为插件名,在uniapp调用时需要用到,class需要是自己java类

5.安卓上配置好,现在转向uniapp内,在需要的地方调用方法。本地打包,将生成的文件www下的替换掉之前的。在安卓下运行。就可以调用成功

运行后显示;

收起阅读 »

MUI框架制作红色精美的服装商城app界面模板

mui

一款基于MUI框架制作红色精美的服装商城app界面模板,也可以用来做手机移动端服装购物商城或其它主题商城模板。

下载地址:https://www.sucaihuo.com/templates/5871.html

继续阅读 »

一款基于MUI框架制作红色精美的服装商城app界面模板,也可以用来做手机移动端服装购物商城或其它主题商城模板。

下载地址:https://www.sucaihuo.com/templates/5871.html

收起阅读 »

触发事件`@longTap`和`@longpress`

支付宝小程序 微信小程序 uni_app

这两个都表示长按触发事件,那么这两个有啥区别呢?

经过实践,发现在微信和h5端只有longpress起效果,在支付宝小程序端只有longTap起效果,一开始做用了longpress,结果坑了支付宝,这两个还要用区分编译分开来写两套代码

我在想官方不能把不同环境的长按事件合成一个吗?还是有技术难题

继续阅读 »

这两个都表示长按触发事件,那么这两个有啥区别呢?

经过实践,发现在微信和h5端只有longpress起效果,在支付宝小程序端只有longTap起效果,一开始做用了longpress,结果坑了支付宝,这两个还要用区分编译分开来写两套代码

我在想官方不能把不同环境的长按事件合成一个吗?还是有技术难题

收起阅读 »

基于井通区块链的小游戏

HBuilderX uniapp

1、本程序使用HBuilderX工具开发
2、与井通接口对接,采集并解析数据展现给用户
3、使用uniapp,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台
4、本程序示例包含用户存储、与井通Api交互、与自开发程序交互、并提供开发基础组件和动画效果等功能

继续阅读 »

1、本程序使用HBuilderX工具开发
2、与井通接口对接,采集并解析数据展现给用户
3、使用uniapp,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台
4、本程序示例包含用户存储、与井通Api交互、与自开发程序交互、并提供开发基础组件和动画效果等功能

收起阅读 »

HBuilderX 通过mumu 模拟器调试 uni-app(win版)

HBuilderX

1.下载mumu模拟器

2.(可以忽略)查看mumu模拟器的端口(默认端口:7555):查找该文件:myandrovm_vbox86.nemu
C:\Program Files (x86)\MuMu\emulator\nemu\vms\myandrovm_vbox86\myandrovm_vbox86.nemu
打开文件:查找:adb
得到如图结果:

3.使用adb 连接接口。提示 adb 是无效命令:(。
提示“'adb' 不是内部或外部命令,也不是可运行程序或批处理文件

4.下载安装 Android SDK Tools(如果安装的时候无法进行下一步的话,需要安装JDK,JDK的配置需要百度一下。要不然会无法安装Tools)
4.1 安装的时候最好选择 【install for anyone using this computer】
下载地址:https://www.androiddevtools.cn/

5.将adb 命令配置到系统路径中去。
5.1系统变量:新建变量名:ANDROID_SDK_HOME
变量值:C:\Program Files (x86)\Android\android-sdk
如图:

5.2 系统变量下的path 添加两个变量值:
%ANDROID_SDK_HOME%\platform-tools
%ANDROID_SDK_HOME%\tools
如下图:

6.测试 adb
打开cmd,输入 adb。出现如下图就说明adb安装成功了。

7.Hbuilder 配置 adb(需要根据自己的安装路径进行配置。)
mumu模拟器的端口是:7555

8.运行:

报错:
java.net.ConnectException: Connection refused: connect
10:40:53.716 at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
10:40:53.717 at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
10:40:53.717 at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
10:40:53.717 at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.PlainSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.SocksSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.Socket.connect(Unknown Source)
10:40:53.717 at java.net.Socket.connect(Unknown Source)
10:40:53.717 at java.net.Socket.<init>(Unknown Source)
10:40:53.717 at java.net.Socket.<init>(Unknown Source)
10:40:53.717 at com.pandora.console.core.ConsoleLauncher.main(ConsoleLauncher.java:41)

如果报错的话,重启HbuilderX 试试。
反正我是这么解决的:)

9.运行成功。

继续阅读 »

1.下载mumu模拟器

2.(可以忽略)查看mumu模拟器的端口(默认端口:7555):查找该文件:myandrovm_vbox86.nemu
C:\Program Files (x86)\MuMu\emulator\nemu\vms\myandrovm_vbox86\myandrovm_vbox86.nemu
打开文件:查找:adb
得到如图结果:

3.使用adb 连接接口。提示 adb 是无效命令:(。
提示“'adb' 不是内部或外部命令,也不是可运行程序或批处理文件

4.下载安装 Android SDK Tools(如果安装的时候无法进行下一步的话,需要安装JDK,JDK的配置需要百度一下。要不然会无法安装Tools)
4.1 安装的时候最好选择 【install for anyone using this computer】
下载地址:https://www.androiddevtools.cn/

5.将adb 命令配置到系统路径中去。
5.1系统变量:新建变量名:ANDROID_SDK_HOME
变量值:C:\Program Files (x86)\Android\android-sdk
如图:

5.2 系统变量下的path 添加两个变量值:
%ANDROID_SDK_HOME%\platform-tools
%ANDROID_SDK_HOME%\tools
如下图:

6.测试 adb
打开cmd,输入 adb。出现如下图就说明adb安装成功了。

7.Hbuilder 配置 adb(需要根据自己的安装路径进行配置。)
mumu模拟器的端口是:7555

8.运行:

报错:
java.net.ConnectException: Connection refused: connect
10:40:53.716 at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
10:40:53.717 at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
10:40:53.717 at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
10:40:53.717 at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.PlainSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.SocksSocketImpl.connect(Unknown Source)
10:40:53.717 at java.net.Socket.connect(Unknown Source)
10:40:53.717 at java.net.Socket.connect(Unknown Source)
10:40:53.717 at java.net.Socket.<init>(Unknown Source)
10:40:53.717 at java.net.Socket.<init>(Unknown Source)
10:40:53.717 at com.pandora.console.core.ConsoleLauncher.main(ConsoleLauncher.java:41)

如果报错的话,重启HbuilderX 试试。
反正我是这么解决的:)

9.运行成功。

收起阅读 »

App包体积大小说明及模块选择注意

体积

uni-app的App引擎,默认有十几M的体积。
它比5+App体积大,因为它在自带一个小程序引擎,在Android上,还有一个独立的jscore。(iOS上使用了自带的jscore,不占用包体积。不过iOS的包,本身就比Android包大,这是iOS的编译原理导致的)

一般而言,开发者自己的代码压缩后应该在0.5-2M左右(不计图片)。所以整包一般是在15-20M之间。

uni-app除了基础引擎,还有很多可选原生插件、模块。打包时可以选择包含哪些模块,这也会影响包体积。
云打包在manifest的App模块配置中选择,离线打包在离线包里有一个excel表格,说明了模块清单,可自行选择要包含的模块。

如果在意体积,开发者可以在manifest去掉对intel cpu的支持,还可以减少几M的体积。intel的cpu在实际上很少见。

详见:App体积优化

继续阅读 »

uni-app的App引擎,默认有十几M的体积。
它比5+App体积大,因为它在自带一个小程序引擎,在Android上,还有一个独立的jscore。(iOS上使用了自带的jscore,不占用包体积。不过iOS的包,本身就比Android包大,这是iOS的编译原理导致的)

一般而言,开发者自己的代码压缩后应该在0.5-2M左右(不计图片)。所以整包一般是在15-20M之间。

uni-app除了基础引擎,还有很多可选原生插件、模块。打包时可以选择包含哪些模块,这也会影响包体积。
云打包在manifest的App模块配置中选择,离线打包在离线包里有一个excel表格,说明了模块清单,可自行选择要包含的模块。

如果在意体积,开发者可以在manifest去掉对intel cpu的支持,还可以减少几M的体积。intel的cpu在实际上很少见。

详见:App体积优化

收起阅读 »

vue 项目移植到 uni-app 项目过程中通配选择器“*”的处理

通配

在小程序和App平台是不允许使用通配选择器的

不过在实际应用过程中可以曲线实现,比如使用伪类选择器 :not 替代

原始样式:

* {  
  opacity: 0.5  
}

替代样式:

:not(not) {  
  opacity: 0.5  
}

提示:由于通配选择器性能较差,项目中尽量减少通配选择器的使用

继续阅读 »

在小程序和App平台是不允许使用通配选择器的

不过在实际应用过程中可以曲线实现,比如使用伪类选择器 :not 替代

原始样式:

* {  
  opacity: 0.5  
}

替代样式:

:not(not) {  
  opacity: 0.5  
}

提示:由于通配选择器性能较差,项目中尽量减少通配选择器的使用

收起阅读 »

mui集合更换讯飞语音为百度语音识别的终极方法,超简单!都不用你写代码

h5+ 语音识别 百度语音识别 mui

网络中和官方都是在绕来绕去,造轮子不说,成功率不高,可操作性不强……

经过多次测试,发现一个终极解决方法,特别简单,如果你知道了肯定会脑海中无数动物飘过……

好了,那我就上代码了……

一、根据官方进行相关配置(配置语音权限、百度sdk申请key等)这里就不再重复了,一搜一大把

二、打开你的mui.js(或者mui.min.js),实际使用中你用哪个就打开哪个,千万别说你都用,大家会^_^你的

三.搜索代码“iFly”,更换为“baidu”

四、同步测试,打包后就可以了

怎么样,简单吧!是不是很懵逼……绕来绕去就这么简单就能解决

借鉴于:

继续阅读 »

网络中和官方都是在绕来绕去,造轮子不说,成功率不高,可操作性不强……

经过多次测试,发现一个终极解决方法,特别简单,如果你知道了肯定会脑海中无数动物飘过……

好了,那我就上代码了……

一、根据官方进行相关配置(配置语音权限、百度sdk申请key等)这里就不再重复了,一搜一大把

二、打开你的mui.js(或者mui.min.js),实际使用中你用哪个就打开哪个,千万别说你都用,大家会^_^你的

三.搜索代码“iFly”,更换为“baidu”

四、同步测试,打包后就可以了

怎么样,简单吧!是不是很懵逼……绕来绕去就这么简单就能解决

借鉴于:

收起阅读 »

uniapp离线打包白屏等问题,各种填坑记录

uniapp uniapp离线打包

做个简单的记录
1.白屏问题:
打算测试下uniapp的离线打包。
按照所有流程都处理了,appID也配置的一样,结果就是白屏,一直显示不出来。
后来发现src->main->res->layout里的文件没有删除。
里面是activity_main.xml.
安卓项目进入后的主页,context “.MainActivity”找不到,一直显示白屏。删掉后就好了。。。。

这个隐藏的这么深的。
之前一直以为是版本不对应,因为报错一直报低于14;都要搞哭了

2.登陆后,一直等不上去问题
在uniapp项目中,使用了个推,地图,视频流播放等功能,需要在libs里面讲用到的包都加上,不然会显示功能push 或者AMAP权限不全问题。

3.调用拍照,NFC等权限时,需要将安卓打包配置加在<application>之前

4.离线打包调试后,定位不显示问题;(使用的是高德地图)
参考链接:打包后地图定位不显示位置 http://ask.dcloud.net.cn/article/212
之前都是云打包,直接用的DCLOUD的证书,所以高德的SHA1使用的也是DCLOUD提供的;
用Android Studio 离线打包后,生成的自己的证书,所以SHA1也需要是自己的keystore。
参考链接 :
高德开发者文档生成SHA1
Android jks文件签名转换keystore文件签名

HBuilderX的appID绑定地图key时,需要安卓的applicationid一致。所以需要更改下Android Studio的build.gradle
内的applicationId 和HbuilderID一致。

继续阅读 »

做个简单的记录
1.白屏问题:
打算测试下uniapp的离线打包。
按照所有流程都处理了,appID也配置的一样,结果就是白屏,一直显示不出来。
后来发现src->main->res->layout里的文件没有删除。
里面是activity_main.xml.
安卓项目进入后的主页,context “.MainActivity”找不到,一直显示白屏。删掉后就好了。。。。

这个隐藏的这么深的。
之前一直以为是版本不对应,因为报错一直报低于14;都要搞哭了

2.登陆后,一直等不上去问题
在uniapp项目中,使用了个推,地图,视频流播放等功能,需要在libs里面讲用到的包都加上,不然会显示功能push 或者AMAP权限不全问题。

3.调用拍照,NFC等权限时,需要将安卓打包配置加在<application>之前

4.离线打包调试后,定位不显示问题;(使用的是高德地图)
参考链接:打包后地图定位不显示位置 http://ask.dcloud.net.cn/article/212
之前都是云打包,直接用的DCLOUD的证书,所以高德的SHA1使用的也是DCLOUD提供的;
用Android Studio 离线打包后,生成的自己的证书,所以SHA1也需要是自己的keystore。
参考链接 :
高德开发者文档生成SHA1
Android jks文件签名转换keystore文件签名

HBuilderX的appID绑定地图key时,需要安卓的applicationid一致。所以需要更改下Android Studio的build.gradle
内的applicationId 和HbuilderID一致。

收起阅读 »