当前位置:网站首页>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实现Exactly Once
C语言日记 7 输入/输出格式控制
drf source code analysis and global catch exception
Raj delivery notes - separation 第08 speak, speaking, reading and writing
Web Design (Beginners) [easy to understand]
Spark_Core
C语言日记 2 标识符
自定义UDF函数
Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off
Error Correction Design Principle of Hamming Check Code
MySQL 8.0 新特性
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十四章)
Verilog Learning Series
我理解的学习金字塔
MySQL知识总结 (十) 一条 SQL 的执行过程详解
uni-app页面、组件视图数据无法刷新问题的解决办法
Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件
二级指针,数组指针,指针数组和函数指针
spark on yarn
redis基础










