API 不工作/http 错误 SocketException:在发布版本中查找主机失败(在调试模式下工作)对于 Flutter

问题描述 投票:0回答:3

获取一些关于path_provider-1.5.1和API不工作的注释,我通过http/dio在Release Build(在调试模式下工作)中集成了Flutter。

注意: /home/webelightpc/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.5.1/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:弃用详细信息。注意:某些输入文件使用或覆盖已弃用的 API。笔记: 使用 -Xlint 重新编译:详细信息已弃用。

flutter dart
3个回答
10
投票

根据https://github.com/flutter/flutter/issues/27883

奇怪的是,如果不在AndroidManifest.xml中添加权限,它可以在调试模式下工作,但在发布模式下任何API请求都将不起作用,解决方案如下简单......

只需添加这样的权限即可

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

在您应用程序的 android/app/src/main/AndroidManifest.xml 中


1
投票

对于那些刚接触 Flutter 的人来说,这里是完整的演示。您必须在“应用程序”标签上方添加权限

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.reprecinct.app.reprecinct">

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

   <application
        android:label="your app label"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

0
投票

如果您使用的是 vscode,并且您已添加必要的权限但仍然收到 socketException,那么它的 vscode。转到 vscode 中的运行和调试部分,取消选中所有异常。

© www.soinside.com 2019 - 2024. All rights reserved.