Reputation: 1746
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
Upvotes: 57
Views: 190616
Reputation: 6768
flutter build apk // this generate apk
flutter build appbundle // this generate aab
And remember that you need to execute flutter clean
before execute flutter build apk
Upvotes: 0
Reputation: 456
Make sure you have the Internet Permission on you android Manifest
<manifest>
...
<uses-permission android:name="android.permission.INTERNET"/>
...
</manifest>
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'
...
}
Upvotes: 9
Reputation: 1608
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
}}
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
Upvotes: 7
Reputation: 5446
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):
Change from:
signingConfig signingConfigs.debug
to:
signingConfig signingConfigs.release
so (in build.gradle
) you should have:
buildTypes {
release {
signingConfig signingConfigs.release
}
}
When you have error Could not get unknown property 'release' for SigningConfig
- just add section release
in build.gradle
, so:
Upvotes: 11
Reputation: 788
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
}
}
Upvotes: 37
Reputation: 401
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'
Upvotes: 4
Reputation: 1713
I decide to open the MyProject/android folder in android studio and build the apk from android studio. It finally worked properly.
Upvotes: 2
Reputation: 20129
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.
Upvotes: 101
Reputation: 4857
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
Upvotes: 9
Reputation: 657308
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
Upvotes: 85