要判断一个 Android 应用是否使用了 Capacitor 跨端框架,可以通过以下方法逐步验证:
一、安装包结构分析
1. 解压 APK
将 .apk
文件重命名为 .zip
并解压,检查以下特征文件:
• assets/public/
目录:
Capacitor 的核心 Web 资源(HTML/CSS/JS)默认存放在此目录,例如:
• index.html
(入口文件)
• runtime.js
(框架运行时)
• vendor.js
(依赖库)
• assets/capacitor.plugins.json
:
Capacitor 的插件清单文件,记录已安装的原生插件信息:
{"plugins": {"Camera": { "class": "com.capacitorjs.plugins.camera.CameraPlugin" }}
}
• lib/
目录:
包含 Capacitor 原生插件库(.so
文件),例如:
• libcapacitor-android.so
(核心库)
• libcapacitor-camera.so
(摄像头插件)
二、代码特征验证
1. 反编译 Java 代码
使用工具(如 JADX)反编译 APK,检查以下标识:
• 主 Activity 继承自 BridgeActivity
:
public class MainActivity extends BridgeActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);init(savedInstanceState, new ArrayList<>()); // 初始化 Capacitor}
}
• Capacitor 核心包路径:
代码中引用 com.getcapacitor
包下的类,例如:
import com.getcapacitor.BridgeActivity;
import com.getcapacitor.Plugin;
2. 检查 JavaScript 代码
查看 assets/public/
下的 JS 文件,检查以下特征:
• 全局对象 Capacitor
:
// 调用 Capacitor 插件
Capacitor.Plugins.Camera.getPhoto({ quality: 90 }).then(photo => { ... });
• 初始化代码:
入口文件中初始化 Capacitor:
import { Capacitor } from '@capacitor/core';
Capacitor.setPlatform('android');
三、配置文件与依赖项
1. capacitor.config.json
检查 assets/public/
或项目根目录下的配置文件:
{"appId": "com.example.app","appName": "MyApp","plugins": {"Camera": { "permissions": ["CAMERA"] }}
}
2. Gradle 依赖(如有源码)
若可访问项目源码,检查 app/build.gradle
是否包含 Capacitor 依赖:
dependencies {implementation 'com.getcapacitor:core:4.0.0'implementation 'com.getcapacitor:android:4.0.0'
}
四、运行时检测
1. WebView 调试
如果应用允许调试,通过 Chrome 的 chrome://inspect
连接 WebView 控制台:
• 检查全局对象:
console.log(window.Capacitor); // 输出 Capacitor 对象(包含版本和插件)
console.log(Capacitor.getPlatform()); // 输出 "android"
2. Logcat 日志过滤
运行应用时,通过 adb logcat
过滤 Capacitor 相关日志:
adb logcat | grep -iE "Capacitor|Bridge"
# 示例输出:
# D/Capacitor: Initializing plugin: Camera
# I/Capacitor: App launched with URL: capacitor://localhost
五、与其他框架的区分
特征 | Capacitor | Cordova |
---|---|---|
Web 资源目录 | assets/public/ | assets/www/ |
配置文件 | capacitor.config.json | config.xml |
主 Activity | BridgeActivity | CordovaActivity |
插件调用方式 | Capacitor.Plugins.xxx | cordova.exec() |
全局对象 | window.Capacitor | window.cordova |
六、总结步骤
- 解压 APK:检查
assets/public/
和capacitor.config.json
。 - 反编译代码:确认主 Activity 继承自
BridgeActivity
并包含com.getcapacitor
包路径。 - 运行时调试:通过 WebView 验证
window.Capacitor
对象和插件调用。
若满足上述 至少两项,即可确认应用基于 Capacitor 开发。