uni-app iOS 真机sqlite一直弹窗 已勾选sqlite模块但一直提示未配置 安卓没问题
uni-app iOS 真机sqlite一直弹窗 已勾选sqlite模块但一直提示未配置 安卓没问题
操作步骤:
- 勾选sqlite模块
- ios重新打包自定义基座
- 真机测试 只要操作sqlite 就一直弹窗
预期结果:
- 不弹窗
实际结果:
- 一直弹窗
bug描述:
iOS 自定义基座真机sqlite一直弹窗 已经勾选sqlite模块但是一直提示没有配置; 自定义基座也重新打包 也不好使; 安卓没问题一切正常;
图片
项目信息
信息类别 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC操作系统 | Mac |
PC操作系统版本 | 13.5.1 (22G90) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.98 |
手机系统 | iOS |
手机系统版本 | iOS 16 |
手机厂商 | 苹果 |
手机机型 | iphone 13 pro |
页面类型 | vue |
Vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
6 回复
给之前的卸载,再自定义基座
解决了多谢
没重新打自定义基座吧
打了
现在可以了换了个测试机(也是醉了)
在使用 uni-app 开发 iOS 应用时,如果遇到 SQLite 模块在真机上一直弹窗提示未配置的问题,而 Android 平台正常,可能是由于以下原因导致的。以下是一些排查和解决方案:
1. 确认 SQLite 模块已正确配置
- 在
manifest.json
文件中,确保已勾选 SQLite 模块。 - 检查
manifest.json
文件内容,确保配置正确:{ "app-plus": { "modules": { "SQLite": {} } } }
2. 检查 iOS 平台配置
- 确保在
manifest.json
中正确配置了 iOS 平台的相关设置。 - 检查
manifest.json
文件中的ios
节点,确保没有遗漏配置。
3. 重新生成 iOS 项目
- 删除
unpackage
和platforms/ios
文件夹。 - 重新运行
npm run dev:custom
或npm run build:custom
,重新生成 iOS 项目。
4. 检查插件版本
- 确保使用的 SQLite 插件是最新版本。
- 如果使用的是第三方 SQLite 插件,检查插件是否支持 iOS 平台。
5. 真机调试日志
- 在真机调试时,查看控制台日志,确认是否有其他错误信息。
- 使用
console.log
或uni.showModal
输出调试信息,检查 SQLite 模块是否正常加载。
6. 检查 iOS 权限
- 确保在
manifest.json
中配置了必要的 iOS 权限。 - 例如,如果需要访问本地文件,确保已添加
NSDocumentsFolderUsageDescription
权限。
7. 更新 HBuilderX
- 确保使用的 HBuilderX 是最新版本。
- 旧版本可能存在兼容性问题,更新到最新版本后重新尝试。
8. 使用原生插件
- 如果问题仍然存在,可以尝试使用原生插件(如
cordova-sqlite-storage
)替代 uni-app 自带的 SQLite 模块。 - 安装插件后,按照插件文档进行配置和使用。
9. 联系官方支持
- 如果以上方法均无法解决问题,可以联系 uni-app 官方支持团队,提供详细的错误日志和复现步骤,寻求帮助。
示例代码
以下是一个简单的 SQLite 使用示例,确保代码逻辑正确:
// 打开数据库
const db = plus.sqlite.openDatabase({
name: 'test.db',
path: '_doc/test.db'
});
// 创建表
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT)');
});
// 插入数据
db.transaction(function(tx) {
tx.executeSql('INSERT INTO test (name) VALUES (?)', ['uni-app']);
});
// 查询数据
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM test', [], function(tx, result) {
console.log(result.rows);
});
});