
回复
本文简单分享一下提效插件的核心实现原理,有喜欢的朋友,可以下载体验、源码共享~
在HarmonyOS应用开发过程中,PC+手机开发模式,需要频繁使用hdc(HarmonyOS Device Connector)命令行工具进行设备调试。传统开发流程存在以下痛点:
因此我想,能不能,一键搞定?之操作DevEco 来实现这些操作呢?于是我想到了安卓的ADBIDEA,这不就是妥妥的一个道理吗~ 于是去研究了一下ADB IDEA 的原理,有了一些思路来实现,于是便有了 hdc_tools
hdc_tools插件通过深度集成常用功能到IDE界面,提供以下核心能力:
采用经典插件分层架构:
- API层(HDC命令封装)
- Service层(业务逻辑)
- UI层(Swing组件)
- SPI扩展(IDE集成)
public class DeviceManager {
private List<HarmonyDevice> cachedDevices = new CopyOnWriteArrayList<>();
// 使用hdc list targets命令获取设备
public void refreshDevices() {
HdcCommandExecutor.execute("list targets", result -> {
parseDeviceList(result.getOutput());
});
}
private void parseDeviceList(String rawOutput) {
// 使用正则表达式解析设备信息
Pattern pattern = Pattern.compile("(?<id>\\S+)\\s+(?<type>\\S+)");
Matcher matcher = pattern.matcher(rawOutput);
// ...解析逻辑
}
}
采用生产者-消费者模式实现命令队列:
public class CommandExecutor {
private static final ExecutorService pool =
Executors.newFixedThreadPool(4, new NamedThreadFactory("HDC-Command"));
public static Future<CommandResult> execute(String command) {
return pool.submit(() -> {
Process process = new ProcessBuilder("hdc", command.split(" "))
.redirectErrorStream(true)
.start();
try(BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()))) {
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
// 实时推送日志到UI
EventDispatcher.dispatch(new LogEvent(line));
}
return new CommandResult(
process.waitFor(),
output.toString()
);
}
});
}
}
实现日志分级过滤和关键字高亮:
public class LogHighlighter extends DefaultHighlighter {
private static final Color ERROR_COLOR = new Color(255, 200, 200);
private static final Pattern ERROR_PATTERN = Pattern.compile("E/\\w+");
@Override
public void highlight(JTextComponent textComponent) {
String text = textComponent.getText();
Matcher matcher = ERROR_PATTERN.matcher(text);
while(matcher.find()) {
addHighlight(matcher.start(), matcher.end(),
new Painter(ERROR_COLOR));
}
}
}
<toolWindow>
扩展点创建持久化视图EditorPopupMenu
扩展点Configurable
接口提供配置项ProjectManagerListener
监听项目生命周期intellij {
version = '2023.1'
plugins = ['java', 'android']
// 兼容范围:2021.3至2023.3
updateSinceUntilBuild = false
}
patchPluginXml {
sinceBuild = '213'
untilBuild = '233.*'
}
实测数据对比:
操作类型 | 传统方式 | 使用插件 | 效率提升 |
---|---|---|---|
安装APK | 12.3s | 2.1s | 83% |
抓取完整日志 | 45s | 8s | 82% |
多设备文件同步 | 78s | 15s | 80% |
未来演进方向:
项目已开源,欢迎贡献:
git clone https://gitee.com/yanftch/hdc_tools.git
通过本插件的开发实践,我们可以得出以下经验:
期待与各位开发者共同完善这个效率工具,为HarmonyOS生态建设贡献力量!