安卓基礎(編譯.Class)

方法安全性維護性開源友好度
刪除.java用.class? 極低? 差?
代碼混淆 (ProGuard)? 中等? 易?
AAR 庫模塊? 高? 易?

對于.class

步驟 1:編譯生成 .class 文件

  1. ??打開終端??(Android Studio 底部的?Terminal?標簽頁)

  2. 導航到你的模塊目錄(通常是?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 文件到源碼目錄

  1. 創建用于存放字節碼的特殊目錄(??非標準做法,慎用!??):
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:刪除原始源代碼

  1. 刪除?SecondActivity.java

步驟 5:驗證構建

  • ??手動刪除?build?目錄??(避免殘留緩存)
  • 重新構建項目:
./gradlew clean assembleDebug

?? 重要警告 & 替代方案

  1. ??反編譯風險??:

    • .class?文件可被工具如?jd-gui?輕松反編譯成源碼。
    • ??黑客只需10秒就能看到你的"隱藏"代碼??。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84363.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

golang常用庫之-go-feature-flag庫(特性開關(Feature Flags))

文章目錄 golang常用庫之-go-feature-flag庫&#xff08;特性開關&#xff08;Feature Flags&#xff09;&#xff09;一、什么是特性開關&#xff08;Feature Flags&#xff09;二、go-feature-flag庫我可以使用 GO Feature Flag 做什么&#xff1f;選擇使用 Open Feature SDK…

微前端 - Module Federation使用完整示例

Angular 框架中 項目結構 main-app/src/app/app.module.tsapp.component.ts micro-app/src/app/app.module.tsapp.component.ts主應用配置 安裝必要依賴&#xff1a; ng add angular-architects/module-federation修改 webpack.config.js&#xff1a; const { share, Shar…

麒麟v10系統的docker重大問題解決-不支持容器名稱解析

今天給客戶在麒麟v10Kylin-Server-V10-SP1下安裝nextcloudonlyoffice的時候出現無法連接onlyoffice的問題,經過分析找到了是docker版本過低的原因,現在把解決思路和步驟分享給大家。 一、問題 用一鍵安裝工具,給客戶裝好了系統,Nextcloud可以正常訪問 但是訪問nextcloud中的o…

PyCharm中運行.py腳本程序

1.最近在弄一個python腳本程序&#xff0c;記錄下運行過程。 2.編寫的python程序如下 # # Copyright 2017 Pixar # # Licensed under the terms set forth in the LICENSE.txt file available at # https://openusd.org/license. # # Check whether this script is being run …

學習資料搜集-ARMv8 cache 操作

【ARM64】【cache/MMU】學習總結_arm64 mmu-CSDN博客 [mmu/cache]-ARMV8的cache的維護指令介紹_data cache set allocation-CSDN博客 https://download.csdn.net/blog/column/12036969/139483584 驗證碼_嗶哩嗶哩 【ARM Cache 與 MMU 系列文章 2 -- Cache Coherence及內存順…

Flutter快速上手,入門教程

目錄 一、參考文檔 二、準備工作 下載Flutter SDK&#xff1a; 配置環境 解決環境報錯 zsh:command not found:flutter 執行【flutter doctor】測試效果 安裝Xcode IOS環境 需要安裝brew&#xff0c;通過brew安裝CocoaPods. 復制命令行&#xff0c;打開終端 分別執行…

八股文——JVM

1. JVM組成 1.1 JVM由哪些部分組成&#xff1f;運行流程&#xff1f; Java Virtual Machine&#xff1a;Java 虛擬機&#xff0c;Java程序的運行環境&#xff08;java二進制字節碼的運行環境&#xff09;好處&#xff1a;一次編寫&#xff0c;到處運行&#xff1b;自動內存管理…

在Pnetlab6上繞過TPM、安全啟動和 RAM 檢查安裝windows 11筆記

筆者本次安裝的windows11的鏡像為: zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso 1、創建鏡像目錄并上傳iso文件 mkdir /opt/unetlab/addons/qemu/win-win11x64-2024-LTSC //目錄名稱務必按照官方文檔格式,否則無法識別 目錄創建完成后,將.iso格式鏡像上…

PCL點云庫入門(第18講)——PCL庫點云特征之3DSC特征描述3D shape context descriptor

一、3DSC&#xff08;3D Shape Context&#xff09;特征算法原理 1. 背景 3DSC 是一種描述三維點云局部形狀的特征描述子&#xff0c;受二維 Shape Context 的啟發。它用于捕捉點云某一點局部的幾何分布信息&#xff0c;對點云配準、識別等任務非常有效。 2. 基本思想 3DSC…

SpringBoot+Mysql校園跑腿服務平臺系統源碼

&#x1f497;博主介紹&#x1f497;&#xff1a;?在職Java研發工程師、專注于程序設計、源碼分享、技術交流、專注于Java技術領域和畢業設計? 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的老師 Wechat / QQ 名片 :) Java精品實戰案例《700套》 2025最新畢業設計選題推薦…

分庫分表的取舍

文章目錄 大數據量下采用**水平分表**的缺點**1. 跨表查詢復雜性與性能下降****2. 數據分布不均衡****3. 分布式事務與一致性問題****4. 擴展性受限****5. 查詢條件限制與索引管理復雜****6. 數據遷移與維護成本高****7. 業務邏輯復雜度增加****總結** shardingJdbc分片策略**1…

Vue3解決“找不到模塊@/components/xxx.vue或其相應的類型聲明ts文件(2307)”

問題 1&#xff1a;如果沒有這個env.d.ts文件&#xff0c;就新建 declare module "*.vue" {import { DefineComponent } from "vue";const component: DefineComponent<{}, {}, any>;export default component; }2&#xff1a;如果有tsconfig.json文…

計算機視覺與深度學習 | 基于MATLAB的圖像特征提取與匹配算法總結

基于MATLAB的圖像特征提取與匹配算法全面指南 圖像特征提取與匹配 基于MATLAB的圖像特征提取與匹配算法全面指南一、圖像特征提取基礎特征類型分類二、點特征提取算法1. Harris角點檢測2. SIFT (尺度不變特征變換)3. SURF (加速魯棒特征)4. FAST角點檢測5. ORB (Oriented FAST …

如何通過API接口獲取淘寶商品列表?操作詳解

一、準備工作 注冊開發者賬號 訪問淘寶開放平臺官網/萬邦開放平臺&#xff0c;完成企業開發者認證&#xff08;個人賬號權限受限&#xff09;&#xff0c;使用已有淘寶賬號可直接登錄。創建應用并填寫基本信息&#xff08;如應用名稱、類型等&#xff09;&#xff0c;系統生成A…

大數據驅動企業決策智能化的路徑與實踐

&#x1f4dd;個人主頁&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 一、引言&#xff1a;數據驅動的企業競爭力重構 在這個瞬息萬變的商業時代&#xff0c;“快者勝”的競爭邏輯愈發明顯。企業如何在復雜環…

DataGridView關閉默認第一列及表頭居中設置

1、關閉默認第一列 如上圖所示&#xff0c;C#和VB.net中的DataGridView控件都是有一個默認的第一列&#xff08;雖然是空白&#xff09;的&#xff0c;如何關閉這個默認列呢&#xff1f; 把“RowHeadersVisible”的值設置成“false”就可以了&#xff1a; 2、表頭居中顯示 如上…

nodejs express 打包部署

當前文件路徑 webpack.config.js const path require(path); module.exports {entry: ./app.js, // Express 入口文件target: node, // 指定 Node.js 環境output: {path: path.resolve(__dirname, dist),filename: bundle.js},mode: production };打包命令 npx webpac…

CentOS 7 修改為靜態 IP 地址完整指南

在企業網絡環境中,服務器通常需要配置靜態 IP 地址以確保網絡連接的穩定性和可管理性。以下是使用 NetworkManager 工具在 CentOS 7 系統中將動態 IP 配置修改為靜態 IP 的完整指南: 一、檢查當前網絡配置 查看網絡連接狀態: 使用 nmcli connection show 命令列出所有網絡連…

微信小程序動態組件加載的應用場景與實現方式

動態組件加載的應用場景與實現方式 你提供的代碼展示了微信小程序中動態加載組件的方法&#xff0c;但這種方式在實際開發中需要注意使用場景和實現細節。下面我來詳細說明如何應用&#xff1a; 應用場景 按需加載組件&#xff1a;在某些條件滿足時才加載組件動態配置組件&a…

學習記錄: 使用react-router-dom

假設有一個vite創建的react項目,先npm install react-router-dom. 在app中: import { RouterProvider, createBrowserRouter } from "react-router-dom"; import Login from "./comm/Login"; import Home from "./comm/Home"; import TotalMan…