要判斷一個 Android 應用是否使用了 React Native 框架,可以通過以下方法逐步驗證:
一、安裝包結構分析
1. 解壓 APK
將 .apk
文件重命名為 .zip
并解壓,檢查以下特征文件:
? assets/index.android.bundle
:
React Native 的核心 JavaScript 代碼文件,包含壓縮后的 JS 邏輯和 React 組件。
? lib/
目錄:
包含 React Native 的原生庫文件(.so
文件),例如:
? libreactnativejni.so
(React Native 核心庫)
? libfbjni.so
(Facebook JNI 支持庫)
? libjscexecutor.so
(JavaScript 引擎)
? res/raw/
目錄:
可能包含 React Native 的離線資源文件(如預加載的 JS Bundle)。
二、代碼特征驗證
1. 反編譯 Java 代碼
使用工具(如 JADX)反編譯 APK,檢查以下標識:
? 主 Activity 繼承自 ReactActivity
:
public class MainActivity extends ReactActivity {@Overrideprotected String getMainComponentName() {return "MyApp"; // 對應 JS 注冊的組件名}
}
? React Native 核心包路徑:
代碼中引用 com.facebook.react
包下的類,例如:
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactPackage;
2. 檢查 index.android.bundle
查看 assets/index.android.bundle
的內容(需格式化或搜索關鍵詞):
? React 組件標識:
搜索 React.createElement
、React.Component
等 React 語法:
var App = () => React.createElement(Text, null, "Hello React Native");
? 模塊注冊代碼:
React Native 原生模塊通過 AppRegistry.registerComponent
注冊:
AppRegistry.registerComponent('MyApp', () => App);
三、依賴庫與資源
1. Gradle 依賴(如有源碼)
若可訪問項目源碼,檢查 app/build.gradle
是否包含 React Native 依賴:
dependencies {implementation "com.facebook.react:react-native:0.71.0"implementation "org.webkit:android-jsc:+" // JavaScript 引擎
}
2. 第三方庫標識
React Native 應用通常依賴以下第三方庫:
? react-navigation
:路由管理庫。
? react-native-reanimated
:動畫庫。
? @react-native-community/async-storage
:本地存儲庫。
四、運行時檢測
1. Logcat 日志過濾
運行應用時,通過 adb logcat
過濾 React Native 相關日志:
adb logcat | grep -iE "ReactNativeJS|ReactNative"
# 示例輸出:
# I/ReactNativeJS: Running application "MyApp" with appParams
# D/ReactNative: ReactInstanceManager.createReactContext()
2. 調試模式檢測
? 開發者菜單:
在應用中搖動設備(或模擬器按 Ctrl + M
),檢查是否彈出 React Native 開發者菜單(包含“Reload”、“Debug”等選項)。
? Chrome 調試:
若應用啟用遠程調試,Chrome 訪問 chrome://inspect
可調試 JS 代碼。
五、與其他框架的區分
特征 | React Native | Flutter | Cordova |
---|---|---|---|
核心文件 | index.android.bundle + libreactnativejni.so | libflutter.so + Dart 資源 | assets/www/ + cordova.js |
渲染方式 | 通過 JavaScript 橋接原生組件 | 自繪引擎(Skia) | WebView 渲染 |
全局對象 | ReactNative 、__fbBatchedBridge | flutter (Dart VM) | window.cordova |
六、總結步驟
- 解壓 APK:檢查是否存在
index.android.bundle
和 React Native 原生庫文件。 - 反編譯代碼:確認主 Activity 繼承自
ReactActivity
并包含com.facebook.react
包路徑。 - 運行時驗證:通過開發者菜單和日志過濾確認框架行為。
若滿足上述 至少兩項,即可確認應用基于 React Native 開發。