我的颤振应用程序没有从 release.apk 中的 api 获取数据,但在调试模式下工作

Posted

技术标签:

【中文标题】我的颤振应用程序没有从 release.apk 中的 api 获取数据,但在调试模式下工作【英文标题】:My flutter app not fetching data from api in release.apk but works in debug mode 【发布时间】:2020-12-22 15:13:04 【问题描述】:

我的 android 应用程序在颤振中没有从 release.apk 中的 api 获取数据,但在调试模式或模拟器中工作正常,我尝试了一切我还在我的 AndroidManifest.xml 代码中添加了互联网权限,但对我没有任何作用。请解决我对flutter和android开发不熟悉的问题。

app/src/main 文件代码中的AndroidManifest

 <manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="xyz">
        <!-- io.flutter.app.FlutterApplication is an android.app.Application that
             calls FlutterMain.startInitialization(this); in its onCreate method.
             In most cases you can leave this as-is, but you if you want to provide
             additional functionality it is fine to subclass or reimplement
             FlutterApplication and put your custom class here. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.RECORD_AUDIO"/>
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
    
    
        <application
            android:networkSecurityConfig="@xml/network_security_config"
            android:name="io.flutter.app.FlutterApplication"
            android:requestLegacyExternalStorage="true"
            android:usesCleartextTraffic="true"
            tools:ignore="UnusedAttribute"
            android:label="xyz"
            android:icon="@mipmap/ic_launcher"
            tools:targetApi="q">
    
    
    
            <provider
                android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
                android:authorities="$applicationId.flutter_downloader.provider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/provider_paths"/>
            </provider>
    
            <activity
                android:name=".MainActivity"
                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"
                    />
    
                <!-- Displays an Android View that continues showing the launch screen
                     Drawable until Flutter paints its first frame, then this splash
                     screen fades out. A splash screen is useful to avoid any visual
                     gap between the end of Android's launch screen and the painting of
                     Flutter's first frame. -->
    
                <meta-data
                    android:name="io.flutter.embedding.android.SplashScreenDrawable"
                    android:resource="@drawable/launch_background"
                    />
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
                <intent-filter>
                    <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                    <category android:name="android.intent.category.DEFAULT" />
                </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>

【问题讨论】:

谢谢..请回答我的问题 你有没有找到解决办法。我也陷入了同样的境地? 【参考方案1】:

请先隐藏您的 api 密钥。 api不工作一定是因为api键。你需要不同的。关注这个

Android: automatically choose debug/release Maps v2 api key?

【讨论】:

【参考方案2】:

我通过在 buildTypes 下的 android/app/build.gradle 文件中添加 shrinkResources falseminifyEnabled false 解决了这个问题

buildTypes 
    release 
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        shrinkResources false
        minifyEnabled false
        signingConfig signingConfigs.debug
    

【讨论】:

以上是关于我的颤振应用程序没有从 release.apk 中的 api 获取数据,但在调试模式下工作的主要内容,如果未能解决你的问题,请参考以下文章

反编译flutter release apk。在哪里可以找到源代码?

flutter app release apk 打不开摄像头

为啥flutter release apk会崩溃? [关闭]

在构建发布 apk 后,我的颤振应用程序没有从 http 获取数据 [重复]

Flutter - DEBUG 中的 Webview 正在工作,但在 RELEASE apk 上显示为空白,为啥?

无法在Android Studio中构建Release APK