uni-app uni.saveVideoToPhotosAlbum在自定义调试基座中正常 正式包中不正常
uni-app uni.saveVideoToPhotosAlbum在自定义调试基座中正常 正式包中不正常
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
手机系统:Android
手机系统版本号:Android 12
手机厂商:荣耀
手机机型:X40 GT
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
uni.saveVideoToPhotosAlbum({
filePath: filePath,
success: () => {
uni.showToast({
icon: 'success',
title: 'Success'
})
},
fail: (e) => {
uni.showToast({
title: e.errMsg || 'Error'
})
},
complete: () => {
}
});
操作步骤:
正常调用api
预期结果:
自定义调试基座中正常,正式包正常
实际结果:
自定义调试基座中正常走success,正式包走fail
bug描述:
如题,uni.saveVideoToPhotosAlbum这个api在自己打包的自定义调试基座中可以正常保存视频到相册,但是一切换到云端打正式包就会报fail,请官方人员排查原因,谢谢!
更多关于uni-app uni.saveVideoToPhotosAlbum在自定义调试基座中正常 正式包中不正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app uni.saveVideoToPhotosAlbum在自定义调试基座中正常 正式包中不正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 开发中,uni.saveVideoToPhotosAlbum 是一个用于将视频保存到相册的 API。如果你在自定义调试基座中正常,但在正式包中不正常,可能是由于以下原因导致的:
1. 权限问题
- 调试基座:在调试基座中,可能已经默认获取了相关权限,或者调试基座本身有更高的权限。
- 正式包:在正式包中,可能需要手动申请权限,或者用户没有授予相关权限。
解决方案:
- 在调用
uni.saveVideoToPhotosAlbum之前,确保已经获取了WRITE_EXTERNAL_STORAGE权限。 - 可以使用
uni.authorize或uni.getSetting来检查和申请权限。
uni.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
uni.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户同意授权
uni.saveVideoToPhotosAlbum({
filePath: 'your_video_path',
success() {
console.log('视频保存成功');
},
fail(err) {
console.log('视频保存失败', err);
}
});
},
fail() {
// 用户拒绝授权
console.log('用户拒绝授权');
}
});
} else {
// 已经授权
uni.saveVideoToPhotosAlbum({
filePath: 'your_video_path',
success() {
console.log('视频保存成功');
},
fail(err) {
console.log('视频保存失败', err);
}
});
}
}
});
2. 文件路径问题
- 调试基座:在调试基座中,文件路径可能是临时的或者模拟的路径。
- 正式包:在正式包中,文件路径可能不正确,或者文件不存在。
解决方案:
- 确保
filePath是正确的,并且文件确实存在。 - 可以使用
uni.getFileSystemManager来检查文件是否存在。
const fileManager = uni.getFileSystemManager();
fileManager.access({
path: 'your_video_path',
success() {
// 文件存在
uni.saveVideoToPhotosAlbum({
filePath: 'your_video_path',
success() {
console.log('视频保存成功');
},
fail(err) {
console.log('视频保存失败', err);
}
});
},
fail() {
// 文件不存在
console.log('文件不存在');
}
});
3. 打包配置问题
- 调试基座:在调试基座中,某些配置可能是默认开启的。
- 正式包:在正式包中,某些配置可能需要手动开启。
解决方案:
- 检查
manifest.json文件,确保相关权限和配置已经正确设置。 - 例如,确保
android.permission.WRITE_EXTERNAL_STORAGE已经添加到manifest.json中。
{
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.WRITE_EXTERNAL_STORAGE"
]
}
}
}
}
4. 平台差异
- 调试基座:在调试基座中,可能使用的是模拟器或特定设备。
- 正式包:在正式包中,可能运行在不同的设备或平台上,导致行为不一致。
解决方案:
- 确保在不同设备和平台上进行测试,确保兼容性。
- 可以使用
uni.getSystemInfo来获取设备信息,并根据不同设备进行适配。
uni.getSystemInfo({
success(res) {
console.log('设备信息', res);
// 根据设备信息进行适配
}
});
5. 日志和错误处理
- 调试基座:在调试基座中,可能更容易捕获错误信息。
- 正式包:在正式包中,错误信息可能不易捕获。
解决方案:
- 在正式包中,确保有完善的错误处理机制,并记录日志。
- 可以使用
uni.onError来捕获全局错误。
uni.onError(function(error) {
console.log('全局错误', error);
});

