flutter中App签名

一、创建 keystore

1.先输入命令:

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


2.按提示输入相关参数,如下图所示

二、引用 keystore(

1.创建一个名为<app dir>/android/key.properties的文件,其中包含对密钥库的引用:

storePassword=第一步创建的key.jks文件时输入的密码
keyPassword=第一步创建的key.jks文件时输入的密码
keyAlias=key //.jks文件名,这里我们创建的key.jks,所以为key
storeFile=第一步创建的key.jks文件的存储路径 如:C:/Users/<user name>/key.jks

注意:

  • 保持文件私密,不要将它加入公共源代码控制中;
  • storeFile中的路径是以<app dir>/android/app/开始的相对路径,因此为了防止不必要的错误建议使用绝对路径

2.在gradle中配置签名

通过编辑<app dir>/android/app/build.gradle文件为您的应用配置签名

(1)添加
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']
    }
}

(2)修改buildTypes 
buildTypes {
    release {
        signingConfig signingConfigs.release
        ndk{ // 必须加入这部分,否则可能导致编译成功的release包在真机中会闪退
             abiFilters "armeabi-v7a"
         }
    }
    debug {
         ndk {
             //这里要加上,否则debug包会出问题,后面三个为可选,x86建议加上不然部分模拟器回报错
             abiFilters "armeabi", "armeabi-v7a", "arm64-v8a",  "x86"
         }
     }
}

注意 :

release包在真机中闪退可能是因为打包时没有引入arm64的libflutterso文件导致在arm64架构手机上出现“兼容”问题。

主要是引用so库的问题arm64cpu架构是可以向下兼容的,就是arm64架构的cpu可以使用arm32的.so文件。出现问题真正原因是我们在引用so库时(引用的三方库中引用了so库)。

三、开启混淆

默认情况下 flutter 不会开启 Android 的混淆。

如果使用了第三方 Java 或 Android 库,也许你想减小 apk 文件的大小或者防止代码被逆向破解。

配置混淆

创建 /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.**  { *; }
复制代码

注意 :上述配置只混淆了 Flutter 引擎库,任何其他库(比如 Firebase)需要添加与之对应的规则。

开启混淆/压缩

打开 /android/app/build.gradle 文件,定位到 buildTypes 块。

在 release 配置中将 minifyEnabled 和 useProguard 设为 true,再将混淆文件指向上一步创建的文件。

android {
 
    ...
 
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

四、构建一个发布版(release)APK

如果您完成了签名步骤,则会对APK进行签名。

使用命令行:

  1. cd <app dir>
  2. 运行flutter build apk (flutter build 默认会包含 --release选项).

打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk

五、在设备上安装发行版APK

按照以下步骤在已连接的Android设备上安装上一步中构建的APK

  1. 用USB将Android设备连接到电脑
  2. 运行 cd <app dir> .
  3. 运行 flutter install .
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值