Flutter应用程序无法在调试模式下启动

时间:2018-08-08 16:53:18

标签: android dart flutter

我有一个带有调试配置的简单Flutter应用程序。在更改gradle配置和其他内容以在发布模式下构建apk之后,我根据文档进行了所有配置,发布版本运行良好。但是现在我无法在调试模式下运行应用程序。它显示此错误

I/flutter (15809): Observatory server failed to start after 11 tries
I/flutter (15809): Could not start Observatory HTTP server:
I/flutter (15809): SocketException: Failed to create server socket (OS Error: Permission denied, errno = 13), address = 127.0.0.1, port = 0
I/flutter (15809): #0      _NativeSocket.bind (dart:io/runtime/binsocket_patch.dart:545:7)
I/flutter (15809): <asynchronous suspension>
I/flutter (15809): #1      _RawServerSocket.bind (dart:io/runtime/binsocket_patch.dart:1138:10)
I/flutter (15809): #2      _ServerSocket.bind (dart:io/runtime/binsocket_patch.dart:1385:10)
I/flutter (15809): #3      ServerSocket.bind (dart:io/runtime/binsocket_patch.dart:1375:26)
I/flutter (15809): #4      _HttpServer.bind (dart:_http/http_impl.dart:2503:10)
I/flutter (15809): #5      HttpServer.bind (dart:_http:276:19)
I/flutter (15809): #6      Server.startup.poll (dart:vmservice_io/server.dart:352:36)
I/flutter (15809): <asynchronous suspension>
I/flutter (15809): #7      Server.startup (dart:vmservice_io/server.dart:364:23)
I/flutter (15809): <asynchronous suspension>
I/flutter (15809): #8      main (dart:vmservice_io:239:12)
I/flutter (15809):

它显示白屏,没有任何内容。

2 个答案:

答案 0 :(得分:4)

在构建发行版本时,它说如果应用程序不需要它,则删除Internet许可。但是,当我们进行开发时,我们必须保持这一点。它需要工作热装。在我添加

之后
 <uses-permission android:name="android.permission.INTERNET"/>

一切都很好

答案 1 :(得分:2)

很长一段时间后,我解决了同样的问题。 这不仅是AndroidManifest.xml中的INTERNET权限。 就我而言,我收到了相同的错误,但是我注意到我的项目在app> src中没有调试文件夹。

我需要手动创建此文件夹并插入文件AndroidManifest.xml。 使用以下代码:

loadElement: function() {
    var me = this,
        complete = function(){
            // me.el.onerror = me.el.onload = emptyFn;
            me.el.onload = emptyFn;
            if (me.el.src && me.el.src.includes('app.js?')) {
                alert('error loading app.js');
            }
            me.el = null;
            me.loaded = me.evaluated = me.done = true;
            me.notifyRequests();
        };
    me.createLoadElement(function(){
        complete();
    });
    me.evaluateLoadElement();
    return true;
},