Skip to content

Instantly share code, notes, and snippets.

@SPodjasek
Created May 7, 2019 11:44
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SPodjasek/0a93fed9ca038169c5afe962f10a5d18 to your computer and use it in GitHub Desktop.
Save SPodjasek/0a93fed9ca038169c5afe962f10a5d18 to your computer and use it in GitHub Desktop.
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
checkReleaseBuilds false
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "xxx"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
flutter {
source '../..'
}
afterEvaluate {
mergeReleaseJniLibFolders.doLast {
def archTypes = ["arm-release", "arm64-release"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.google.firebase:firebase-core:16.0.1"
implementation "com.google.firebase:firebase-messaging:17.1.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'
@function1983
Copy link

Hi @SPodjasek, thanks for sharing the file. Mine, for the most part, looks identical.
Here is my flutter doctor

[✓] Flutter (Channel dev, v1.5.8, on Linux, locale en_US.UTF-8)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Android Studio (version 3.4)
[!] VS Code (version 1.33.1)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)

I wonder what is your flutter build command? I have tried the following:

  • flutter clean; flutter build appbundle on my computer still omit arm64-v8a/libflutter.so
  • flutter clean; flutter build apk same result
  • flutter clean; flutter build apk --target-platform=android-arm64 will have the opposite effect (armeabi-v7a/libflutter.so is missing)

Here is my intermediates directory which looks absolutely fine.
libs

@SPodjasek
Copy link
Author

I use flutter build appbundle and it always include proper libs in output build/app/outputs/bundle/release/app.aab.

Can you switch flutter to beta channel and check there?

@jtszalay
Copy link

* What went wrong:
A problem occurred evaluating root project 'android'.
> A problem occurred configuring project ':app'.
   > Could not get unknown property 'mergeReleaseJniLibFolders' for project ':app' of type org.gradle.api.Project.

@minh98
Copy link

minh98 commented Jun 22, 2019

worked for me with flutter build appbundle. Thanks :D

@shashi2602
Copy link

  • What went wrong:
    A problem occurred evaluating project ':app'.

Could not find method fterEvaluate() for arguments [build_8a95qgiavjx0ev0fdlftv5rhy$_run_closure4@c9821b4] on project ':app' of type
org.gradle.api.Project.

what went wrong

@SPodjasek
Copy link
Author

IMHO There's no need to use this custom app_build.gradle anymore as proper multi-arch support has landed in mainline flutter...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment