当前位置:网站首页>flutter中App签名
flutter中App签名
2022-08-02 14:06:00 【shinechow】
一、创建 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的libflutter的so文件导致在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进行签名。
使用命令行:
cd <app dir>- 运行
flutter build apk(flutter build默认会包含--release选项).
打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk。
五、在设备上安装发行版APK
按照以下步骤在已连接的Android设备上安装上一步中构建的APK
- 用USB将Android设备连接到电脑
- 运行
cd <app dir>. - 运行
flutter install.
边栏推荐
猜你喜欢
随机推荐
Flink时间和窗口
[VCU] Detailed S19 file (S-record)
C语言日记 7 输入/输出格式控制
MySQL知识总结 (八) InnoDB的MVCC实现机制
关于Flink
函数递归和动态内存初识
Tornado framework routing system introduction and (IOloop.current().start()) start source code analysis
Web Design (Beginners) [easy to understand]
宝塔搭建PHP自适应懒人网址导航源码实测
ToF相机从Camera2 API中获取DEPTH16格式深度图
关于spark
鼠标右键菜单栏太长如何减少
Linux: CentOS 7 install MySQL5.7
主存储器(二)
主存储器(一)
MySQL知识总结 (二) 存储引擎
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
C语言初级—判断一个数是不是素数(函数封装)
数据的表示方法和转换(二进制、八进制、十进制、十六进制)
重新学习编程day1 【初始c语言】【c语言编写出计算两个数之和的代码】










