我已经在这个应用程序上工作了8个月并且到了最后,除了这个ip地址问题。我无法阻止我的应用在Android设备上调用10.0.2.2:3000,即使在实施了其他遇到相同问题的建议后也是如此。我不知道还有什么可以尝试。我应该提到的一件事是,使用浏览器我可以毫无问题地连接到服务器并运行应用程序。
在服务器端,我设置了以下环境变量:
Meteor.startup(()=> {
var ROOT_URL =' https://myapp:443';
Meteor.absoluteUrl.defaultOptions.rootUrl = ROOT_URL;
process.env.ROOT_URL = ROOT_URL;
process.env.MOBILE_ROOT_URL = ROOT_URL;
process.env.MOBILE_DDP_URL = ROOT_URL;
process.env.DDP_DEFAULT_CONNECTION_URL = ROOT_URL;
}
接下来我跑了:
- mupx设置
- mupx deploy
mup.json设置为:
" env":{
" ROOT_URL":" https://myapp.com:443",
},
" ssl":{
"证书":" ./。deploy / bundle.crt",
" key":" ./。deploy / privkey.pem",
" port":443
},
然后我使用以下方法构建apk:
- meteor build ../myAppProduction --server https://myapp.com:443
到目前为止一切正常。然后我将Meteor构建生成的apk复制到Android设备。安装并运行应用程序。该应用程序尝试连接,但当我检查IP地址时,它尝试连接到设备上它是10.0.2.2:3000。
我真的很感激这方面的一些帮助。我一直在努力工作3天没有运气。
谢谢,Mark
答案 0 :(得分:0)
如果在流星源上搜索10.0.2.2,则会发现:
16: if (/Android/i.test(navigator.userAgent)) { 17 // When Android app is emulated, it cannot connect to localhost, 18: // instead it should connect to 10.0.2.2 19 // (unless we're using an http proxy; then it works!) 20 if (!__meteor_runtime_config__.httpProxyPort) { 21: __meteor_runtime_config__.ROOT_URL = (__meteor_runtime_config__.ROOT_URL || '').replace(/localhost/i, '10.0.2.2'); 22: __meteor_runtime_config__.DDP_DEFAULT_CONNECTION_URL = (__meteor_runtime_config__.DDP_DEFAULT_CONNECTION_URL || '').replace(/localhost/i, '10.0.2.2'); 23 } 24 }
IP地址10.0.2.2是修复编程到meteor / android应用程序的东西。
在我的网站上,当使用“localhost”作为ROOT_URL的标识符时,这只会发生(在源代码中定义)。所以我只用“127.0.0.1”替换它
也许这对你有帮助
汤姆
答案 1 :(得分:-1)
想出来。一旦我运行流星 - 生产它就与ssl一起工作。