Capacitor 打包 Android 后无法访问本地 API 接口怎么办?
我用 Capacitor 把 Vue 项目打包成 Android 应用,本地开发时接口都正常,但装到手机上后所有 fetch('/api/xxx') 请求都失败了,控制台报网络错误。
试过在 capacitor.config.ts 里加 server 配置,也试过把接口地址改成完整 URL,但还是不行。是不是 Android 端默认不允许访问本地服务器?该怎么配置才能让 App 正常请求开发机上的接口?
const { CapacitorConfig } = require('@capacitor/cli');
const config = {
appId: 'com.example.app',
appName: 'MyApp',
webDir: 'dist',
server: {
url: 'http://192.168.1.100:3000', // 开发机 IP
cleartext: true
}
};
module.exports = config;
首先确保你手机和开发机在同一个局域网,直接用手机浏览器访问
http://192.168.1.100:3000/api/xxx看能不能通。如果不行就是网络问题。然后在AndroidManifest.xml里加上网络权限:
你server配置里的cleartext只对Capacitor内置服务器有效,要允许访问外部http地址还得在AndroidManifest的application标签里加:
性能上建议最终打包时把API地址换成https的,http只在开发时用。上线前记得移除cleartext配置。
另外你Vue代码里的fetch请求最好直接用完整URL,不要用相对路径。可以这样:
最后检查下后端API是否设置了CORS头,开发时可以临时允许所有来源:
这些都配完应该就能通了。我上次搞这个也折腾了半天,Android这网络权限设计真够烦的。