Flutter Release apk无法正常工作?

nit*_*k72 3 android dart flutter

我已经运行它 flutter build apk来发布我的应用程序.现在我构建了verison 2.

现在我又要发布我的版本2 App.To得到发布apk我再次运行这个flutter build apk.我被释放apk但它是我的版本1发布apk.我去了我发布的目录并删除了我删除的已发布的apk并再次尝试然后我也得到verion 1发布的apk. 我也尝试了这个,但它也给了我Verion 1 apk

在构建版本2时,我正在调试模式下进行测试.在粪便模式下,正常工作正常.

这是应用程序的Github链接:https://github.com/nitishk72/Flutter-Github-API

Jua*_*dez 55

如果您的问题是flutter build (APK, bundle) 没有在真实设备中进行 API 调用,这是因为您需要在创建发布/构建之前将 Internet 权限添加到 Android Manifest

默认情况下,“互联网使用”在模拟器上可以正常工作,但不能在真实设备上正常工作。

要解决这个问题,只需:

打开文件“android/app/src/main/AndroidManifest.xml”并添加适当的用户权限:

<manifest> 
...
 <uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)

然后再次创建您的构建。


Gün*_*uer 16

我想你需要

flutter clean
Run Code Online (Sandbox Code Playgroud)

(我认为这是一个必要的错误,但我也遇到过它)

flutter build apk --release
Run Code Online (Sandbox Code Playgroud)

  • 它对我不起作用。请帮忙。打开应用程序时会被杀死。 (6认同)

sus*_*ngh 14

我遇到了同样的问题“应用程序在调试模式下正常工作,但在发布模式下不能正常工作”。我不知道为什么......但最后,我通过shrinkResources false minifyEnabled false在 android/app/build.gradle 文件中添加这些行来解决。

 buildTypes {
     release {
         signingConfig signingConfigs.config
         shrinkResources false
         minifyEnabled false
     }
 }
Run Code Online (Sandbox Code Playgroud)

  • 由于某些原因, --no-shrink 构建参数停止为我工作,但这有帮助 (2认同)

Bok*_*ken 10

当您创建新的 Flutter 项目时(从 Android Studio 菜单),在文件中:

/android/app/build.gradle
Run Code Online (Sandbox Code Playgroud)

那里有: 在此输入图像描述

你有:

buildTypes {
    release {
        signingConfig signingConfigs.debug    //   <--- HERE YOU ARE USING DEBUG KEY
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着release构建(例如从菜单触发Build -> Flutter -> Build APK)将使用debug密钥进行签名。

完整build.gradle文件(由 Android Studio 创建): 在此输入图像描述

解决方案

更改自:

signingConfig signingConfigs.debug
Run Code Online (Sandbox Code Playgroud)

到:

signingConfig signingConfigs.release
Run Code Online (Sandbox Code Playgroud)

所以(在build.gradle)你应该有:

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

错误

当您遇到错误时- 只需在 中Could not get unknown property 'release' for SigningConfig添加部分,因此:releasebuild.gradle

  1. 创建新.jks文件(通过Generate Signed Bundle / APK...

  2. 将凭据放入build.gradle (:app)

    在此处输入代码

  • 它对我不起作用,收到错误:无法获取 org.gradle.api.internal.FactoryNamedDomainObjectContainer 类型的 SigningConfig 容器的未知属性“release”。 (2认同)

jus*_*men 7

如果您使用 API 调用#

确保您的 android Manifest具有Internet 权限

<manifest> 
...
 <uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)

如果您使用共享首选项插件

android\build.gradle设置您的依赖项以使用classpath 'com.android.tools.build:gradle:3.5.1'

不是 classpath 'com.android.tools.build:gradle:4.1.0

像这样:

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        ...
    }
Run Code Online (Sandbox Code Playgroud)


Ars*_*eem 6

1)。

添加以下行android\app\src\mainAndroid manifest

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

然后添加这些行android\app\build.gradle

   buildTypes {
   release {
        shrinkResources false
        minifyEnabled false
   }}
Run Code Online (Sandbox Code Playgroud)

2)。

apk使用以下命令进行构建。

flutter build apk --no-shrink

或者

flutter build apk --split-per-abi --no-shrink

两种解决方案都适合我,但我个人推荐第二种


Tus*_*dey 5

  1. 您可以在 local.properties android 项目中更改

        sdk.dir=D:/SDK               //your android SDK location
        flutter.sdk=D:\\Flutter\\flutter  //your flutter SDK location
        flutter.versionName=1.0.0
        flutter.versionCode=2
        flutter.buildMode=release
    
    Run Code Online (Sandbox Code Playgroud)
  2. android/app/build.gradle 文件中的更改

         buildTypes {
                release {
                    // if everything ok then not add 
                    //minifyEnabled true 
                    //another you can remove minifyEnabled true
                    proguardFiles getDefaultProguardFile('proguard- 
                     android.txt'), 'proguard-rules.pro'
                    signingConfig signingConfigs.release
                }
            }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您还可以在 android/app/build.gradle defaultConfig 方法主体中进行更改。

      multiDexEnabled true
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果您想迁移到 androidx,请进行设置。

    依赖关系 { testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 实现 'androidx.multidex:multidex:2.0.1'

    }

    1. 并在按照此 cmd 创建构建文件夹之前进行清理。

       - flutter clean
      
       - flutter build apk --release
      
       - flutter install
      
      Run Code Online (Sandbox Code Playgroud)

6.发布Apk位置。

        in `android studio termial` or inside `project-root` you can navigate to this.

        cd build\app\outputs\apk\release
Run Code Online (Sandbox Code Playgroud)