安卓基础(编译.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秒就能看到你的"隐藏"代码​
相关推荐
Jackilina_Stone2 小时前
【faiss】用于高效相似性搜索和聚类的C++库 | 源码详解与编译安装
android·linux·c++·编译·faiss
棒棒AIT3 小时前
mac 苹果电脑 Intel 芯片(Mac X86) 安卓虚拟机 Android模拟器 的救命稻草(下载安装指南)
android·游戏·macos·安卓·mac
fishwheel3 小时前
Android:Reverse 实战 part 2 番外 IDA python
android·python·安全
消失的旧时光-19436 小时前
Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
android·网络·retrofit
zcychong6 小时前
Handler(二):Java层源码分析
android
Chef_Chen8 小时前
从0开始学习R语言--Day58--竞争风险模型
android·开发语言·kotlin
用户2018792831679 小时前
演员的智能衣橱系统之Selector选择器
android
CYRUS_STUDIO9 小时前
OLLVM 混淆 + VMP 壳照样破!绕过加壳 SDK 的核心检测逻辑
android·逆向·汇编语言
Kapaseker9 小时前
憋了一周了,12000字深入浅出Android的Context机制
android