Flutter 打包android apk文件

Flutter 打包android apk文件

记录下打包的过程
原文链接:https://blog.csdn.net/weixin_44259356/article/details/104919257

证书

进入如下网页,在线生成证书文件
http://www.applicationloader.net/appuploader/keystore.php
将证书文件拷贝到项目:android/app 文件夹下,如下:

在这里插入图片描述

创建key.properties文件

在同目录下创建,内容如下
#密钥库口令
storePassword=123456
#密钥口令
keyPassword=123456
#别名
keyAlias=shby
#keystore的路径
storeFile=android.keystore

修改buid.gradle文件

添加

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 {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release
            //混淆
            minifyEnabled true
            useProguard true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }

混淆配置

新版默认开启混淆,能减少app体积,但是可能会遇到问题,我的app没有遇到问题,如需开启
创建 /android/app/proguard-rules.pro 文件,并添加以下规则:

#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }

打包apk

执行

flutter build apk

默认为release版本
如有错误可执行

flutter build apk --debug

发布debug版本
目录如下:
build\app\outputs\apk\debug\app-debug.apk.

错误处理

如果是android release版本则默认没有权限
例如:如果需要添加网络权限
在android/app/src/main/AndroidManifest.xml添加如下:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

参考链接:https://flutterchina.club/android-release/

c39e4deda30a425b976dfc42650b22a5


版权声明:本文为weixin_44259356原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。