踩坑
- 自定义
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>
附加一个官方的解决方案
+ https://ask.dcloud.net.cn/question/64257- 把原生导航栏去掉,自己自定义了导航栏发现,在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
会提示该应用含不良信息解决方案
: https://ask.dcloud.net.cn/article/37501解决方案
:修改了版本号(应用版本名称、应用版本号【要比之前版本高】)就好了??? 其它什么也没修改。
-
uniapp
的包名
和appid
的关系- 两者没有任何关系
- 包名是指在打包的时候填的(默认为应用的
appid
,但格式不完全一样),包名可以自己任意填,但最好按照规范填写。 appid
是 应用的唯一标识。
-
在使用高德地图,
逆编码(根据地址获取经纬度)api
时,提示10009
在查阅错误码后,发现原因是因为 申请的key
类型不一样,之前申请的是js API
,逆编码需要申请Web服务API
,在已经申请的应用上面新申请对应服务key
就好了。 -
使用 uniapp 开发微信小程序的时候,预览的时候,出现文件体积过大,可以 在
manifest.json
配置文件,找到微信小程序配置 勾选上 上传代码时 自动压缩 ,就可以了。 -
在使用 定位的时候 ,需要勾选定位权限,需要选择 定位 和地图 ,H5 端需要使用 腾讯地图key,其他端需要使用 高德或者百度 key 。在选择 key 类型的时候,申请 安卓端 的 key https://ask.dcloud.net.cn/article/29
-
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 );
} );
}
}
微信根据包名获取应用签名获取工具
- https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android3b8804.apk
- https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html(上面地址失效,用这个网页内最下面的“签名生成工具”)
- 获取签名工具,需要 应用的
包名
,不是appid
,(打包时在未修改包名的情况下,包名默认为appid
,但格式不完全一样) - 根据获取的
签名
和包名
可以用来申请支付等…
Android平台签名证书(.keystore)生成指南
360 加固保
- https://jiagu.360.cn/#/global/index
- 可对开发的app进行安全加固,防止逆编译。
- 可以检测app安全状况。
- …