You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Android Studio最新版本中使用ProGuard打包APK?

Hey Krishna, let's walk through how to use ProGuard to package your APK in Android Studio, tailored to your existing project-level build.gradle setup. Here's a step-by-step guide:

使用ProGuard打包APK的完整指南

1. 先确认项目级build.gradle的基础配置

Looking at your provided project config, you already have the necessary Android Gradle plugin set up (classpath 'com.android.tools.build:gradle:3.2.0-alpha07'). One small tweak I'd suggest: you have duplicate allprojects blocks—merge them to avoid potential conflicts:

allprojects {
    repositories {
        jcenter()
        google()
        maven { url 'https://maven.google.com/' }
    }
}

2. 配置模块级build.gradle(app目录下的核心配置)

This is where you'll enable ProGuard for your release build. Open the build.gradle file inside your app module and update the buildTypes block:

android {
    // 其他现有配置(compileSdkVersion、defaultConfig等)...
    
    buildTypes {
        release {
            // 开启代码混淆与压缩
            minifyEnabled true
            // 指定ProGuard规则:Android官方默认优化规则 + 自定义规则文件
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // 可选:开启资源压缩(移除未使用的资源)
            shrinkResources true
        }
        debug {
            // Debug版本通常关闭混淆,如需测试混淆效果可改为true
            minifyEnabled false
        }
    }
}

// 别忘了添加Google Services插件(如果你的项目依赖它)
apply plugin: 'com.google.gms.google-services'
  • proguard-android-optimize.txt是Android SDK提供的优化版默认规则(比基础版proguard-android.txt更激进,压缩效果更好)
  • proguard-rules.pro是你的自定义规则文件,会自动创建在app模块根目录

3. 编写自定义ProGuard规则(proguard-rules.pro

ProGuard会混淆代码,但你需要保留一些关键类/方法不被混淆(比如反射调用的类、JNI方法、序列化类等)。这里是一些通用规则示例,你可以根据项目需求补充:

// 保留你的Application类
-keep public class com.yourpackage.YourApplication {
    public <init>();
}

// 保留JNI相关方法
-keepclasseswithmembernames class * {
    native <methods>;
}

// 保留Serializable序列化类及其成员
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

// 保留第三方库的规则(如果官方没自带的话)
// 比如Google Play Services相关规则(大部分第三方库会自动导入自身规则,若遇崩溃再手动添加)

小贴士:如果打包后APK出现崩溃,查看Logcat的错误信息,找到被错误混淆的类/方法,添加对应的-keep规则即可。

4. 生成签名的Release APK

Once all configs are set, you can package your APK:

  • Go to the Build menu in Android Studio → Select Generate Signed Bundle / APK
  • Choose APK and click Next
  • If you don't have a keystore, click Create new to generate one; if you already have one, select the keystore file and fill in the password, alias, and alias password
  • On the next screen, select the Release build type, check V2 (Full APK Signature) (recommended for better security), choose your output directory
  • Click Finish and wait for the build to complete

额外注意事项

  • Always test the released APK thoroughly—ProGuard can break logic if rules are missing (especially for reflection, annotations, or dynamic class loading)
  • If you use any third-party libraries, check their official docs for specific ProGuard rules they require

内容的提问来源于stack exchange,提问作者Krishna android

火山引擎 最新活动