Android Studio -> Android Studio 获取release模式和debug模式的APK

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代码(可以使用dex2jarJD-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
相关推荐
张风捷特烈1 小时前
每日一题 Flutter#5,6 | 两道 Widget 选择题
android·flutter
移动开发者1号1 小时前
App主界面点击与跳转启动方式区别
android·kotlin
移动开发者1号1 小时前
我用Intent传大图片时竟然崩了,怎么回事啊
android·kotlin
androidwork13 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
每次的天空13 小时前
Android第十三次面试总结基础
android·面试·职场和发展
wu_android13 小时前
Android 相对布局管理器(RelativeLayout)
android
李斯维15 小时前
循序渐进 Android Binder(二):传递自定义对象和 AIDL 回调
android·java·android studio
androidwork15 小时前
OkHttp 3.0源码解析:从设计理念到核心实现
android·java·okhttp·kotlin
像风一样自由16 小时前
【001】frida API分类 总览
android·frida
casual_clover16 小时前
Android 之 kotlin 语言学习笔记四(Android KTX)
android·学习·kotlin