'Flutter build apk on release mode cannot generate updated version
I had run this flutter build apk
to release my App. Now I had built version 2 of that.
Now, I want to release my version 2 App. So, I run flutter build apk
again. I get the released apk but It is still version 1 released apk.
I deleted the released apk and tried again but still got version 1 released apk.
While building version 2 in debug mode, everything works fine.
Here is the Github Link to that App: https://github.com/nitishk72/Flutter-Github-API
Solution 1:[1]
I think you need
flutter clean
(I'd consider it a bug that this is necessary, but I'm encountering it as well)
and
flutter build apk --release
Solution 2:[2]
If your problem is that the flutter build (APK, bundle) isn't making API calls in a real device, this is because you need to add the Internet permission to Android Manifest before creating the release/build.
By default, "internet use" will work fine on the emulator but not on a real device.
To fix this, simply:
Open the file "android/app/src/main/AndroidManifest.xml" and add the proper user-permission:
<manifest>
...
<uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
And then create your build again.
Solution 3:[3]
I had facing same problem "Application work properly in Debug mode but not in release mode". I don't know why... but finally, I have solved by adding these lines shrinkResources false minifyEnabled false
in android/app/build.gradle file.
buildTypes {
release {
signingConfig signingConfigs.config
shrinkResources false
minifyEnabled false
}
}
Solution 4:[4]
you can change in local.properties android project
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
changes in your android/app/build.gradle file
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 } }
you can also changes in android/app/build.gradle defaultConfig method body.
multiDexEnabled true
if you want to migrate to androidx then do it setup.
dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation 'androidx.multidex:multidex:2.0.1'
}
and clean before create build folder by following this cmd.
- flutter clean - flutter build apk --release - flutter install
6.Release Apk location.
in `android studio termial` or inside `project-root` you can navigate to this.
cd build\app\outputs\apk\release
Solution 5:[5]
When you are creating new Flutter project (from Android Studio menu), in file:
/android/app/build.gradle
you have:
buildTypes {
release {
signingConfig signingConfigs.debug // <--- HERE YOU ARE USING DEBUG KEY
}
}
Which means that release
build (e.g. triggered from menu Build -> Flutter -> Build APK
) will use debug
key for signing.
Full build.gradle
file (created by Android Studio):
Solution
Change from:
signingConfig signingConfigs.debug
to:
signingConfig signingConfigs.release
so (in build.gradle
) you should have:
buildTypes {
release {
signingConfig signingConfigs.release
}
}
Error
When you have error Could not get unknown property 'release' for SigningConfig
- just add section release
in build.gradle
, so:
Solution 6:[6]
The problem was that flutter build automatically shrinks the code with R8. flutter build --no-shrink
solved the problem. I guess I need to add all required exceptions to the proguard-rules.pro file.
Building apk using the below commands.
Enter
cd <app dir>
(Replace with your application’s directory.)flutter build apk --split-per-abi --no-shrink
(The flutter build command defaults to --release .)
Removing the --split-per-abi
flag results in a fat APK that contains your code compiled for all the target ABIs. Such APKs are larger in size than their split counterparts, causing the user to download native binaries that are not applicable to their device’s architecture.
Solution 7:[7]
1).
add following lines in 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"/>
and then add these lines in android\app\build.gradle
buildTypes {
release {
shrinkResources false
minifyEnabled false
}}
2).
Building apk
using the below commands.
flutter build apk --no-shrink
or
flutter build apk --split-per-abi --no-shrink
Both Solutions worked for me but personally I recommend second one
Solution 8:[8]
If you're using an API Call#
Make sure you have the Internet Permission on you android Manifest
<manifest>
...
<uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
If you're using Shared Preferences plugin
In android\build.gradle
set your dependencies to use the classpath 'com.android.tools.build:gradle:3.5.1'
NOT classpath 'com.android.tools.build:gradle:4.1.0
Like this:
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
...
}
Solution 9:[9]
I hope this can help someone. I ran into a problem that my release version does not works and there are no any error messages in logcat.
The problem turned out to be that I had FutureBuilder
in which i start Future<void>
. By running flutter run
it works properly (snapshot.hasData
was true
), but in release version it was always false
. Of course, documentation of the FutureBuilder
says that hasData
should be false
in this case. But in fact in debug mode it has different behaviour.
P.S. Another possible problems: Now my app still not working, but this time i saw on logcat next error:
Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
Downgrading gradle plugin version from 7.* to 3.5.4 solves this issue.
classpath 'com.android.tools.build:gradle:3.5.4'
Solution 10:[10]
I decide to open the MyProject/android folder in android studio and build the apk from android studio. It finally worked properly.
Solution 11:[11]
Langkah 5 skrip cd . && flutter build apk --release
keluar dengan kode status 1
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow