安卓基础(编译.Class)
方法 | 安全性 | 维护性 | 开源友好度 |
---|---|---|---|
删除.java用.class | ❌ 极低 | ❌ 差 | ❌ |
代码混淆 (ProGuard) | ✅ 中等 | ✅ 易 | ✅ |
AAR 库模块 | ✅ 高 | ✅ 易 | ✅ |
对于.class
步骤 1:编译生成 .class 文件
-
打开终端(Android Studio 底部的
Terminal
标签页) -
导航到你的模块目录(通常是
app
或模块名):
cd app # 进入你的模块目录
执行 Gradle 编译命令生成 .class
文件:
./gradlew compileDebugJavaWithJavac # 调试版本
# 或发布版本
./gradlew compileReleaseJavaWithJavac
找到 .class 文件:
- 生成路径:
app/build/intermediates/javac/debug/classes/your/package/name/SecondActivity.class
- 示例(包名为
com.example.app
):
app/build/intermediates/javac/debug/classes/com/example/app/SecondActivity.class
步骤 2:复制 .class 文件到源码目录
- 创建用于存放字节码的特殊目录(非标准做法,慎用!):
mkdir -p app/src/main/java/com/example/app/bytecode
复制编译好的 .class
文件到源码目录:
cp app/build/intermediates/javac/debug/classes/com/example/app/SecondActivity.class app/src/main/java/com/example/app/bytecode/
步骤 3:修改源码使用反射加载类
// 在调用 SecondActivity 的地方(如 MainActivity.java)
try {// 动态加载编译后的类Class<?> secondActivityClass = Class.forName("com.example.app.bytecode.SecondActivity");// 启动 Activity(假设 SecondActivity 继承自 Activity)Intent intent = new Intent(this, secondActivityClass);startActivity(intent);
} catch (ClassNotFoundException e) {e.printStackTrace();// 处理异常
}
步骤 4:删除原始源代码
- 删除
SecondActivity.java
步骤 5:验证构建
- 手动删除
build
目录(避免残留缓存) - 重新构建项目:
./gradlew clean assembleDebug
⚠️ 重要警告 & 替代方案
-
反编译风险:
.class
文件可被工具如 jd-gui 轻松反编译成源码。- 黑客只需10秒就能看到你的"隐藏"代码。