安卓基础(编译.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秒就能看到你的"隐藏"代码​
相关推荐
每次的天空26 分钟前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭1 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日2 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安2 小时前
Android Library Maven 发布完整流程指南
android
岁月玲珑2 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
还鮟6 小时前
CTF Web的数组巧用
android
小蜜蜂嗡嗡7 小时前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi008 小时前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
zhangphil9 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android
你过来啊你9 小时前
Android View的绘制原理详解
android