踩坑

  • 自定义vue 组件不可以使用 页面的生命周期?
    • 是的,只能使用Vue原生的生命周期。
  • 每次线上打包APP之前要先去检查HbuilderX是不是最新版本
  • 使用不同的 dcloud 账号 需要重新获取 appid(应用程序的唯一标识),appid 更换后,之前安装的应用程序是没有办法自动更新的,会生成两个APP
    • 解决方案app升级通知用户,手动卸载之前的app,使用新安装的app,避免出现这种情况
    • 解决方案:可以让APP的拥有者(最开始获取Appid的账号),点击帮助 => 开发者云端控制台 => 我创建的应用 => 点击应用名 => 项目成员管理(左侧)=>添加就可以了
  • 使用的 Android 证书不同,AppId 一样,会导致App无法安装。
  • plus.runtime.version获取版本号,只有经过云打包后才会生效,所以在本地获取与设置的可能有出入
    • 解决方案可以通过plus.runtime.getProperty的方式来获取应用信息,从中获取版本号
  • 获取 uniapp 中的节点设置样式,document 在 uniapp 中是不存在的
    • 解决方案: 可以使用 vue$refs去获取节点,注意生命周期节点渲染顺序。也可以提前写好样式,通过双向数据绑定,控制变量添加 / 移除 类名
  <view :class="flag:'className':null "></view> 
  • 抽屉(uni-drawer)弹出后,在抽屉上触发滚动事件,也会引起遮罩层下方页面同时滚动
    • 解决方案
<template>
  <view class='container' :class="isOpen?'stop-move-scroll':''" >
    <uni-drawer ref="drawer" @change="changeDrawer">
        <!-- 内容区 -->
    </uni-drawer>
    <button type="default" @click="open"></button>
  </view>
</template>
<script>
  export default{
    data(){
      return {
        isOpen:false,
      }
    },
    methods:{
      open(){
        // 打开抽屉
        this.$refs.drawer.open();
        this.isOpen = true;
      },
      // 监听抽屉状态变化
      changeDrawer(state){
        this.isOpen = state;
        // 一些处理 ...
      }
    }
  }
</script>
<style>
  .stop-move-scroll {
	  height: 100vh;
 	  overflow: hidden;
  }
</style>
  • 附加一个官方的解决方案
    +
  • 把原生导航栏去掉,自己自定义了导航栏发现,在APP端会把手机的状态栏给遮挡住
    • 解决方案
  • uni-app H5端调用 uni.getLocation 获取位置失败,提示 errMsg: "getLocation:fail 此key每日调用量已达到上限"
    • 解决方案: 需要在 manifest H5 配置 中 添加 自己申请的 腾讯地图 key

uni.upx2px(750) == 750rpx

  • 调试运行APP基座的时候,发现老是调用之前开发过的APP,调用起来后,里面确实是现在开发的APP,但是无法启用调试,原因是选中了这个自定义基座在这里插入图片描述

    • 解决方案:修改成标准运行基座就好了
  • 支付uni.requestPayment 支付宝支付报错62009 原因是 没按规定格式传参
    在这里插入图片描述

  • 已经上线的App修改过名字之后,在以前的版本上安装更新更换过名字的App会提示该应用含不良信息

    • 解决方案
    • 解决方案 :修改了版本号(应用版本名称、应用版本号【要比之前版本高】)就好了??? 其它什么也没修改。
  • uniapp包名appid 的关系

    • 两者没有任何关系
    • 包名是指在打包的时候填的(默认为应用的appid,但格式不完全一样),包名可以自己任意填,但最好按照规范填写。
    • appid 是 应用的唯一标识。
  • 在使用高德地图,逆编码(根据地址获取经纬度)api时,提示 10009 在查阅错误码后,发现原因是因为 申请的key类型不一样,之前申请的是js API,逆编码需要申请 Web服务API,在已经申请的应用上面新申请 对应服务key 就好了。

  • 使用 uniapp 开发微信小程序的时候,预览的时候,出现文件体积过大,可以 在 manifest.json 配置文件,找到微信小程序配置 勾选上 上传代码时 自动压缩 ,就可以了。

  • 在使用 定位的时候 ,需要勾选定位权限,需要选择 定位 和地图 ,H5 端需要使用 腾讯地图key,其他端需要使用 高德或者百度 key 。在选择 key 类型的时候,申请 安卓端 的 key

  • uniapp 中 父子组件之间自定义方法

    • 子组件 uni.$emit(自定义事件名,参数);
    • 父组件 uni.on(自定义事件名,回调函数)

// 调用第三方程序
function launchApp() {
	if ( plus.os.name == "Android" ) {
		plus.runtime.launchApplication( {pname:"com.android.browser"
			,extra:{url:"http://www.html5plus.org"}}, function ( e ) {
				alert( "Open system default browser failed: " + e.message );
		} );
	} else if ( plus.os.name == "iOS" ) {
		plus.runtime.launchApplication( {action:"http://www.html5plus.org"}, function ( e ) {
			alert( "Open system default browser failed: " + e.message );
		} );
	}
}

微信根据包名获取应用签名获取工具

  • 获取签名工具,需要 应用的 包名 ,不是 appid,(打包时在未修改包名的情况下,包名默认为appid,但格式不完全一样)
  • 根据获取的 签名包名 可以用来申请支付等…

Android平台签名证书(.keystore)生成指南

360 加固保

  • 可对开发的app进行安全加固,防止逆编译。
  • 可以检测app安全状况。