安卓基础(编译.Class)

方法 安全性 维护性 开源友好度
删除.java用.class ❌ 极低 ❌ 差
代码混淆 (ProGuard) ✅ 中等 ✅ 易
AAR 库模块 ✅ 高 ✅ 易

对于.class

步骤 1:编译生成 .class 文件

  1. ​打开终端​ ​(Android Studio 底部的 Terminal 标签页)

  2. 导航到你的模块目录(通常是 app 或模块名):

bash 复制代码
cd app  # 进入你的模块目录

执行 Gradle 编译命令生成 .class 文件:

bash 复制代码
./gradlew compileDebugJavaWithJavac  # 调试版本
# 或发布版本
./gradlew compileReleaseJavaWithJavac

​找到 .class 文件​​:

  • 生成路径:app/build/intermediates/javac/debug/classes/your/package/name/SecondActivity.class
  • 示例(包名为 com.example.app):
bash 复制代码
app/build/intermediates/javac/debug/classes/com/example/app/SecondActivity.class

步骤 2:复制 .class 文件到源码目录

  1. 创建用于存放字节码的特殊目录(​非标准做法,慎用!​):
bash 复制代码
mkdir -p app/src/main/java/com/example/app/bytecode

复制编译好的 .class 文件到源码目录:

bash 复制代码
cp app/build/intermediates/javac/debug/classes/com/example/app/SecondActivity.class app/src/main/java/com/example/app/bytecode/

步骤 3:修改源码使用反射加载类

java 复制代码
// 在调用 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:删除原始源代码

  1. 删除 SecondActivity.java

步骤 5:验证构建

  • ​手动删除 build 目录​(避免残留缓存)
  • 重新构建项目:
bash 复制代码
./gradlew clean assembleDebug

⚠️ 重要警告 & 替代方案

  1. ​反编译风险​​:

    • .class 文件可被工具如 jd-gui 轻松反编译成源码。
    • ​黑客只需10秒就能看到你的"隐藏"代码​
相关推荐
天空之城--2 小时前
Android Flutter行业动态与学习参考(2026年8月)
android·flutter
quantdash_cc3 小时前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash
杉氧4 小时前
原生交互:如何在 Flutter 中嵌入 Android/iOS 原生组件并解决手势冲突
android·flutter·dart
Android打工仔4 小时前
Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
android·kotlin
hunterandroid4 小时前
[Android 从零到一] Kotlin Channel 与复杂并发场景:从生产者-消费者到结构化并发治理
android
FlightYe5 小时前
linux系统编程(八):阻塞与非阻塞IO对比
android·linux·运维·服务器·github·vim
恋猫de小郭5 小时前
Flutter iOS Deep Link 为什么会突然失效:一系列难以言喻的问题
android·前端·flutter
qq_422828626 小时前
android 图形学之图层数据送显(八)
android
Kapaseker6 小时前
小白都看得懂的 Skill 教程 - 初识 Skill
android·kotlin·vibecoding
神奇小梵6 小时前
安全和开发的需要了解的知识————下载内容的安全,和下载内容如何运行
android·windows·安全·个人开发