Flutter APK 打包、修改应用信息、加固和签名

249 阅读2分钟

1. 修改应用名称、图标和启动页

1.1 修改应用名称

文件路径android/app/src/main/AndroidManifest.xml

xml

<application
    android:label="Your App Name"  <!-- 修改此处 -->
    ...>
</application>

或通过 strings.xml 引用(推荐):
路径android/app/src/main/res/values/strings.xml

xml

<string name="app_name">Your App Name</string>

在 AndroidManifest.xml 中引用:

xml

<application android:label="@string/app_name" ...>

1.2 修改应用图标

  • 使用插件(推荐) :
    安装 flutter_launcher_icons

    yaml

    dev_dependencies:
      flutter_launcher_icons: "^0.13.1"
    
    flutter_icons:
      android: true
      image_path: "assets/icon/icon.png"  # 替换为你的图标路径
    

    运行命令生成图标:

    bash

    flutter pub get
    flutter pub run flutter_launcher_icons:main
    
  • 手动替换:
    覆盖 android/app/src/main/res/mipmap-* 目录下的 ic_launcher.png 文件(不同分辨率需提供不同尺寸)。


1.3 修改启动页

  • 使用插件(推荐) :
    安装 flutter_native_splash

    yaml

    dev_dependencies:
      flutter_native_splash: "^2.3.1"
    
    flutter_native_splash:
      image: "assets/splash/splash.png"  # 替换为启动页图片
      android: true
    

    运行命令生成启动页:

    bash

    flutter pub get
    flutter pub run flutter_native_splash:create
    
  • 手动修改:
    编辑 android/app/src/main/res/drawable/launch_background.xml(或创建新文件)自定义布局。


2. 打包 Release APK

bash

flutter build apk --release

生成路径: build/app/outputs/apk/release/app-release-unsigned.apk


3. APK 加固(以 360 加固为例)

  1. 下载 360 加固助手
  2. 登录后上传 app-release-unsigned.apk
  3. 选择加固选项(如基础加固、防篡改)。
  4. 加固完成后下载文件(通常命名为 your_app_jiagu.apk)。

4. 重新签名(V1 + V2 签名)

4.1 生成密钥库(如果尚未创建)

bash

keytool -genkey -v -keystore ~/keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release

按提示输入信息(密码、组织等)。


4.2 配置签名信息

文件路径android/app/build.gradle

gradle

android {
    ...
    signingConfigs {
        release {
            keyAlias "release"
            keyPassword "your_key_password"  # 密钥密码
            storeFile file("~/keystore.jks") # 密钥库路径
            storePassword "your_store_password" # 密钥库密码
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

4.3 手动签名加固后的 APK

bash

# 替换以下路径和密码
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
-keystore ~/keystore.jks \
-storepass your_store_password \
-keypass your_key_password \
-signedjar signed.apk \
/path/to/your_app_jiagu.apk \
release

4.4 使用 zipalign 优化 APK

bash

# 使用 Android SDK 的 zipalign(替换 SDK 路径)
~/Android/Sdk/build-tools/34.0.0/zipalign -v 4 signed.apk final_release.apk

生成最终 APK: final_release.apk


完整流程总结

图表

代码


常见问题

  1. 图标/启动页不更新

    • 清理构建缓存:flutter clean
    • 删除 build 目录后重新打包。
  2. 签名错误

    • 检查 jarsigner 和 zipalign 路径是否正确。
    • 确认密钥库密码和别名匹配。
  3. V1/V2 签名验证

    bash

    apksigner verify --verbose final_release.apk
    

    输出应包含 Verified using v1 scheme 和 Verified using v2 scheme