Android Studio
上鼠标修改构建类型
Release
版本
- 激活路径:
More tool windows->Build Variants->Active Build Variant->release
APK
路径:Project\app\build\intermediates\apk\app-release.apk
Debug
版本
- 激活路径:
More tool windows->Build Variants->Active Build Variant->debug
APK
路径:Project\app\build\intermediates\apk\app-debug.apk
build.gradle(:app)
文件中代码修改构建类型
Release
版本
- 生成
Release
签名密钥的密钥库
bash
keytool -genkey -v -keystore yang_release_store.jks -keyalg RSA -keysize 2048 -validity 10000 -alias yang_release_key_name
- 配置
Release
包的签名属性和构建属性
groovy
signingConfigs {
release {
keyAlias 'yang_release_key_name' // 密钥别名,和密钥密码成为一组
keyPassword 'yang.guo' // 密钥密码
storeFile file('../build_store/yang_release_store.jks') // 密钥库文件路径
storePassword 'yang.guo' // 密钥库密码
}
}
buildTypes {
release {
minifyEnabled true // 启用代码混淆和优化
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 启用代码混淆和优化的默认配置文件
signingConfig signingConfigs.release // 使用release签名配置
}
}
Gradle
指令打Release
包
groovy
./gradlew assembleRelease
Debug
版本
- 生成
Debug
签名密钥的密钥库
bash
keytool -genkey -v -keystore yang_debug_store.jks -keyalg RSA -keysize 2048 -validity 10000 -alias yang_debug_key_name
- 配置
Debug
包的签名属性和构建属性
groovy
signingConfigs {
debug{
keyAlias 'yang_debug_key_name' // 密钥别名,和密钥密码成为一组
keyPassword 'yang.guo' // 密钥密码
storeFile file('../build_store/yang_debug_store.jks') // 密钥库文件路径
storePassword 'yang.guo' // 密钥库密码
}
}
buildTypes {
debug {
applicationIdSuffix ".debug" // 打包后缀
debuggable true // 启用debug模式的包
signingConfig signingConfigs.debug // 使用debug签名配置
}
}
Gradle
指令打Debug
包
groovy
./gradlew assembleDebug
如何区分当前APK
文件是Release
包还是Debug
包
检查APK
中的BuildConfig
文件
- 解压
APK
文件:- 查找
BuildConfig
类:在解压后的目录中,找到classes.dex
文件,将其反编译为Java
代码(可以使用dex2jar
和JD-GUI
工具) - 查看
BuildConfig
类:在反编译后的Java
代码中,找到BuildConfig
类,查看其中的DEBUG
字段 - 如果
DEBUG
字段为true
,则表示是Debug
包 - 如果
DEBUG
字段为false
,则表示是Release
包
- 查找
检查APK
的调试字段
- 解压
APK
文件:- 查找调试属性:在解压后的目录中,查找
AndroidManifest.xml
文件,查看其中的android:debuggable
属性 - 如果
android:debuggable
属性为true
,则表示是Debug
包 - 如果
android:debuggable
属性为false
,则表示是Release
包
- 查找调试属性:在解压后的目录中,查找