avatar

mdo

Hello

  • 首页
  • 知识库
  • 归档
  • 标签
  • 关于
主页 flutter 打包apk -详细版flutter 打包成apk
文章

flutter 打包apk -详细版flutter 打包成apk

发表于 2025-09-13 更新于 2025-09- 13
作者 mdo
32~41 分钟 阅读

1.修改你的flutter app的启动图标

具体步骤如下:在.android 目录下面 **android/app/src/main/res/ ** 这个文件夹下面中存放着app的图标,下图所框选的文件夹中替换你想要的启动图标

>

去替换图标即可,图标名称要保持一致,并且要与之适配的分辨率

2.修改应用名称,在android文件夹下,android/app/src/AndroidManifest.xml 中

 <application

         android:label="one-app"   
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">

                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>

3.继续在android文件夹下面,找build.gradle ,是app下面的文件

第一处修改点: 找到这样一段代码前面

在此代码之前添加一段代码:

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

修改完成,如下图所示:

第二处修改点:

将此代码整体替换为下面的代码块:

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

4.在android文件夹下面新建一个文件,名称为:key.properties 用于存放生成app签名密钥的密钥口令和密钥存储文件位置信息

在此文件中添加以下信息

密码以及密钥存储位置都可以修改,根据自己需求来做!

storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=D:/key.jks

5.这一步就快走到了打包的结尾,生成app签名密钥,

这里的D盘 可以修改为你想过要存储位置

keytool -genkey -v -keystore D:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

直接在终端输入这个命令,按回车,会出现如下内容:

这里我们输入之前自己设置即可,输入两次并成功之后,会出现让你填写如下图所示的等一系列信息。

输入完后按回车,密钥文件已生成,可在D盘进行查看。

6.最后一步打包,输入命令 flutter build apk

到这你的apk文件已经打包好啦!!!撒花✿✿ヽ(°▽°)ノ✿

7.打包完apk后,我们发现在整个app目录中多了一个文件夹,

寻找一下我们的apk包,在此文件夹下面

8.这个安装包可以尝试着安装到自己手机上或者模拟器上面,体验一下。

知识库
打包
许可协议:  CC BY 4.0
分享

相关文章

7月 21, 2026

think-orm 2.0.62 单独设置数据表字段缓存驱动和数据缓存驱动

think-cache 拥有强大的多通道(Multi-store)管理能力,但问题的根源在于 think-orm 底层的调用机制太死板。即使您在 think-cache 中配置了 file 和 redis 两个完全独立的通道,think-orm 默认也只会向您通过 Db::setCache() 注入

7月 1, 2026

WebSocket Server + 独立 RPC Server

从架构角度来说,它已经接近 think-swoole 能做到的极限了,但是我仍然不建议继续这样维护。 原因不是代码写法,而是 think-swoole 本身的事件模型。 第一处问题:addListener() 仍然共享 Worker 你的代码: $rpcServer = $server->addLi

6月 25, 2026

Linux | Reqable · API抓包调试 + API测试一站式工具

Reqable是什么? Reqable = Fiddler + Charles + Postman 极简的设计、极高的性能、丰富的功能、桌面手机多端平台。 多协议流量分析 基于经典的MITM中间人代理方案捕获和分析您的应用流量,自适应HTTP/HTTPS/SOCKS4/SOCKS5等多种代理协议,并

下一篇

FVM(FLutter Version Management)使用教程FVM

上一篇

解决方案之执行gradle报错

最近更新

  • 完美地解决 TP3 老系统数据的平滑读取
  • thinkphp3 redis序列化和反序列化
  • Table 空间极易发生哈希冲突并溢出
  • 将监控程序直接跑在云端
  • AI 驱动型 Facebook 群组关键词监控 Chrome 浏览器插件

热门标签

API CodeGeex Gitkraken Management Manticore Premiere Sublime Swoole ThinkPHP ThinkPHP5

目录

©2026 mdo. 保留部分权利。