zoukankan      html  css  js  c++  java
  • Flutter Gradle配置新人篇

     

    Flutter Build IOS版本基本都很顺畅,所以文中就不在说明。但是如果你使用flutter create的项目,使用模板中的gradle配置编译Android APK总是会遇到一些问题。下面,我们一步一步来避开这些坑。

    由于Flutter编译是原生的编译,在IOS下使用Xcode。在Android上自然使用Gradle。所以你遇到的问题,基本上就是gradle配置的问题。

    1、Android X

    如果你的项目不支持AndroidX,可能有的插件就没有办法编译了。如果你创建项目的时候选择了支持AndroidX,那么你可以跳过这个环节。

    如何判断你的项目是否支持AndroidX

    打开android/gradle.properties 或 .android/gradle.properties 看看里面是否包含了

    android.useAndroidX=true
    android.enableJetifier=true

    如果你新建一个项目,为了让Flutter支持Android,那么你需要使用下面的命令

    flutter create --androidx -t <project-type> <new-project-path>

    手动升级

    1、修改 android/gradle/wrapper/gradle-wrapper.properties

    distributionUrl=https://services.gradle.org/distributions/gradle-4.10.2-all.zip

    2、更新 android/build.gradle,将过去的版本更新为3.3.0至少

    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
    }

    3、修改 android/gradle.properties

    android.enableJetifier=true
    android.useAndroidX=true

    4、现在修改SDK version,打开 android/app/build.gradle targetSdkVersion最少28

    defaultConfig {
            minSdkVersion 17
            targetSdkVersion 28
    }
    升级AndroidX与否,是根据你自身的情况来决定,不会影响后续的文章内容

    2、自动签名配置

    gradle编译时,可以为你自动签名,这样省去了编译后手动签名的步骤。

    1、创建签名文件

    此处忽略如何创建.keystore格式的签名,请自行创建keystore签名。

    2、新增key.properties文件

    在android目录中创建一个key.properties文件,这个文件将包含签名文件的重要信息

    文件内填入一下配置信息

    storePassword= 自己配置的签名密码
    keyPassword= 自己配置的签名密码
    keyAlias= keyAlias
    storeFile= .keystore文件存储目录

    3、在 android/app/build.gradle下按照下面的格式,新增到 android{} 内

    signingConfigs {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }

    并修改同级的buildTypes,在release中使用配置中的签名,debug模式无需签名

    buildTypes {
            release {
                signingConfig signingConfigs.release
            }
    
            debug {
            }
        }

    3、abi配置

    gradle打包时,将自动把不同的abi(兼容不同处理器的ABI)打包到APK中,默认模板中没有配置其他的ABI,所以会出现有的设备无法安装或者安装后闪退的情况。

    下面我们将 android/app/build.gradle 中的 buildTypes 修改。

    我们区分release和debug修改。debug中的abi根据你的调试设备进行配置

    下面的配置基本可以兼容市面上很多的安卓设备,包含了64位的ABI,试错后,这是最佳的配置。仅供参考,根据自身情况修正。

    buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled true
                shrinkResources true
                ndk{
                    abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
                    abiFilters.clear()
                }
            }
    
            debug {
                ndk {
                    //调试的时候用模拟器的就可以了,不然调试打包安装太慢
                    abiFilters "x86"
                }
            }
        }

    4、编译打包

    现在你可以使用flutter build apk来进行编译。默认的情况下 flutter build apk即为--release。

    注意:Flutter官方推荐使用 flutter build apk --split-per-abi 来分开打包编译不同的ABI版本,Google Play中可以按照不同ABI版本上传。但是国内的基本没有上传时可以区分不同ABI针对不同用户群体的功能,所以我们还是一次性打包。

     

    现在你可以使用 adb install ./android.apk将编译的结果安装到你的设备啦

  • 相关阅读:
    mysql DCL(数据控制语句)
    sybase 脚本建表和删除表
    mysql DML(数据操纵语句)
    delphi fastmm4 调试
    delphi class of 类引用
    DELPHI SetLocaleInfo 设置本地时间
    DELPHI 去字符串中所有空格
    SUSE 11 安装MongoDB
    suse下 登录mongodb
    DELPHI 的 {$M +} 和{$M -}
  • 原文地址:https://www.cnblogs.com/sundaysandroid/p/13502229.html
Copyright © 2011-2022 走看看