当前位置: 首页 > news >正文

flutter 打包安卓apk 常用配置

打包之前需要先不配置不然会报错 Execution failed for task ‘:app:mergeReleaseResources’.

APP目录下的build.gradle

aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false

如图

配置targetSdkVersion 、minSdkVersion

在android/app/src目录下的build.gradle配置
在这两个地方配置就可以 比如安卓应用商店是安卓targetSdkVersion api 30

defaultConfig {
        applicationId "com.example.tianxi_user"
        minSdkVersion flutter.minSdkVersion //最低兼容的安卓版本,flutter中默认是16
        targetSdkVersion flutter.targetSdkVersion //应用适配的安卓版本 flutter中默认是33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
         ndk {
            //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
            // biFilters "armeabi", "armeabi-v7a", "arm64-v8a","x86","x86_64"
        }
    }

或者去flutter安装目录中去配置 一劳永逸

flutter\packages\flutter_tools\gradle
flutter.gradle 修改这里的配置


class FlutterExtension {
    /** Sets the compileSdkVersion used by default in Flutter app projects. */
    static int compileSdkVersion = 33

    /** Sets the minSdkVersion used by default in Flutter app projects. */
    static int minSdkVersion = 16

    /** Sets the targetSdkVersion used by default in Flutter app projects. */
    static int targetSdkVersion = 33

    /**
     * Sets the ndkVersion used by default in Flutter app projects.
     * Chosen as default version of the AGP version below as found in
     * https://developer.android.com/studio/projects/install-ndk#default-ndk-per-agp
     */
    static String ndkVersion = "23.1.7779620"

    /**
     * Specifies the relative directory to the Flutter project directory.
     * In an app project, this is ../.. since the app's build.gradle is under android/app.
     */
    String source

    /** Allows to override the target file. Otherwise, the target is lib/main.dart. */
    String target
}

使用自定义证书签名打包

使用 keytool 生成签名证书,placement certificate
keytool -genkey -v -keystore xxx(项目名).keystore -alias xxx(项目名) -keyalg RSA -keysize 2048 -validity 10000 -storepass (storePassword密码) -keypass (keyPassword密码)

根据提示生成证书keystore

  • 将 text.keystore 文件放到 android/app/ 目录下。
  • 编辑 android/app/build.gradle,添加 signingConfigs:
android {
  ...
  signingConfigs {
    release {
      keyAlias 'text'
      keyPassword '***' 
      storeFile file('text.keystore ')
      storePassword '***'
    }
  }
  buildTypes {
    ...
    release {
      signingConfig signingConfigs.release
    }
  }
}

填入 keystore 的密码。

最后使用 flutter build apk --release 进行签名打包。

只打包32/64

现在很多安卓应用商店只支持64位 安卓api30以上的。这里要调整下
只支持64位:flutter build apk --target-platform android-arm64

支持32位:flutter build apk --target-platform=android-arm
同时支持64位和32位:flutter build apk

报错Could not create task ':flutter_plugin_android_lifecycle:generateDebugUnitTestConfig

在Android Studio中 打开安卓目录
修改文件,把下面代码注释,在flutter中运行的时候放开


subprojects {
//    // 把这行注释掉,在flutter运行的时候,记得取消这行的注释
//    project.buildDir = "${rootProject.buildDir}/${project.name}"
}

相关文章:

  • Python数据结构——列表
  • androidkiller的两种异常情况
  • golang实现rpc方法一:使用net/rpc库【不能跨平台】
  • Java Swing 图书借阅系统 窗体项目 期末课程设计 窗体设计
  • 基本工具配置
  • 线程到底设置数量多少合适的探讨
  • 计算机网络(湖科大)第一章 概述
  • kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?
  • BIO、NIO、AIO 有什么区别?
  • vscode运行Python的两种方法,及无法运行的原因
  • 白嫖aws创建Joplin server服务器
  • C语言之数组与strlen与sizeof区别和应用
  • Poi实现根据word模板导出-图表篇
  • Redis面试题12
  • 开源协议概览
  • 桶排序(Java语言)
  • git修改历史(非最新)提交信息
  • 算法每日一题:字符串中的额外字符 | 动归 | 哈希 | 字符串
  • NUS CS1101S:SICP JavaScript 描述:二、使用数据构建抽象
  • HarmonyOS4.0——ArkUI应用说明
  • 龚正市长调研闵行区,更加奋发有为地稳增长促转型,久久为功增强发展后劲
  • “85后”贵阳市政府驻重庆办事处主任吴育材拟任新职
  • 杨文庄当选中国人口学会会长,曾任国家卫健委人口家庭司司长
  • 京东回应外卖系统崩溃:订单暴涨所致,已恢复
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • “80后”德州市接待事务中心副主任刘巍“拟进一步使用”