针对UniApp项目打包成Android APK时的兼容性问题,已实施全面的优化方案,确保所有功能在APP环境中正常运行。
// 图片预览 - APP环境先下载到本地
// #ifdef APP-PLUS
uni.downloadFile({
url: url,
success: (res) => {
// 使用本地路径预览
uni.navigateTo({
url: `/pages/fileView/imageView?url=${encodeURIComponent(res.tempFilePath)}`
});
}
});
// #endif
// H5环境直接使用网络URL
// #ifdef H5
uni.navigateTo({
url: `/pages/fileView/imageView?url=${encodeURIComponent(url)}`
});
// #endif
// APP环境优化
// #ifdef APP-PLUS
const saveDir = plus.os.name === 'Android' ?
plus.io.convertLocalFileSystemURL('_downloads/') :
plus.io.convertLocalFileSystemURL('_documents/');
const downloadTask = uni.downloadFile({
url: url,
filePath: `${saveDir}${fileName}`, // 指定保存路径
success: (res) => {
// 提供打开文件选项
uni.showModal({
title: '下载成功',
confirmText: '打开文件',
success: (modalRes) => {
if (modalRes.confirm) {
plus.runtime.openFile(res.filePath);
}
}
});
}
});
// 显示下载进度
downloadTask.onProgressUpdate((res) => {
const progress = Math.round(res.progress);
uni.showLoading({ title: `下载中 ${progress}%` });
});
// #endif
/* APP环境专用样式 */
/* #ifdef APP-PLUS */
.file-preview-popup {
width: 85vw;
max-height: 75vh;
}
.file-preview-content {
max-height: 350px;
}
/* #endif */
APP会自动申请以下权限:
- WRITE_EXTERNAL_STORAGE
: 文件写入权限
- INTERNET
: 网络访问权限
- ACCESS_NETWORK_STATE
: 网络状态检测
_downloads/
目录(用户可访问)_documents/
目录(应用沙盒){
"app-plus": {
"modules": {
"FileSystem": {}
},
"permissions": {
"写入系统存储": {
"request": "always"
}
}
}
}
如遇到兼容性问题:
1. 检查设备Android版本(建议5.0+)
2. 确认存储权限已授予
3. 测试网络连接状况
4. 查看控制台错误日志
文档版本: v1.0
最后更新: 2025-07-20
适用版本: UniApp v2.0.2+