nightmare-space / adb_kit Goto Github PK
View Code? Open in Web Editor NEW使用 Flutter 开发的 ADB GUI 客户端
License: BSD 3-Clause "New" or "Revised" License
使用 Flutter 开发的 ADB GUI 客户端
License: BSD 3-Clause "New" or "Revised" License
Flutter 2.8.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 77d935af4d (5 天前) • 2021-12-16 08:37:33 -0800
Engine • revision 890a5fca2e
Tools • Dart 2.15.1
build error
E/flutter (24822): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: Stack Overflow
E/flutter (24822): #0 new _BroadcastStreamController (dart:async/broadcast_stream_controller.dart:97:3)
E/flutter (24822): #1 new _SyncBroadcastStreamController (dart:async/broadcast_stream_controller.dart:358:9)
E/flutter (24822): #2 new _AsBroadcastStreamController (dart:async/broadcast_stream_controller.dart:459:9)
E/flutter (24822): #3 new _AsBroadcastStream (dart:async/stream_impl.dart:811:23)
E/flutter (24822): #4 Stream.asBroadcastStream (dart:async/stream.dart:502:16)
E/flutter (24822): #5 new UnixPty (package:dart_pty/src/unix_pty.dart:31:23)
E/flutter (24822): #6 new PseudoTerminal (package:dart_pty/src/interface/pseudo_terminal_interface.dart:32:12)
E/flutter (24822): #7 TerminalUtil.getShellTerminal (package:pseudo_terminal_utils/src/terminal_util.dart:48:12)
E/flutter (24822): #8 new Global._internal (package:adb_tool/global/instance/global.dart:26:37)
E/flutter (24822): #9 Global._getInstance (package:adb_tool/global/instance/global.dart:35:26)
E/flutter (24822): #10 new Global (package:adb_tool/global/instance/global.dart:22:23)
E/flutter (24822): #11 Print.log (package:adb_tool/global/instance/global.dart:222:5)
E/flutter (24822): #12 Logger._print. (package:signale/src/core/logger.dart:21:19)
E/flutter (24822): #13 List.forEach (dart:core-patch/growable_array.dart:410:8)
E/flutter (24822): #14 Logger._print (package:signale/src/core/logger.dart:17:22)
E/flutter (24822): #15 Logger.d (package:signale/src/core/logger.dart:31:5)
E/flutter (24822): #16 Log.d (package:signale/src/log.dart:8:19)
E/flutter (24822): #17 UnixPty.createPseudoTerminal (package:dart_pty/src/unix_pty.dart:48:9)
E/flutter (24822): #18 new UnixPty (package:dart_pty/src/unix_pty.dart:33:24)
E/flutter (24822): #19 new PseudoTerminal (package:dart_pty/src/interface/pseudo_terminal_interface.dart:32:12)
E/flutter (24822): #20 TerminalUtil.getShellTerminal (package:pseudo_terminal_utils/src/terminal_util.dart:48:12)
E/flutter (24822): #21 new Global._internal (package:adb_tool/global/instance/global.dart:26:37)
E/flutter (24822): #22 Global._getInstance (package:adb_tool/global/instance/global.dart:35:26)
E/flutter (24822): #23 new Global (package:adb_tool/global/instance/global.dart:22:23)
E/flutter (24822): #24 Print.log (package:adb_tool/global/instance/global.dart:222:5)
E/flutter (24822): #25 Logger._print. (package:signale/src/core/logger.dart:21:19)
E/flutter (24822): #26 List.forEach (dart:core-patch/growable_array.dart:410:8)
E/flutter (24822): #27 Logger._print (package:signale/src/core/logger.dart:17:22)
E/flutter (24822): #28 Logger.d (package:signale/src/core/logger.dart:31:5)
E/flutter (24822): #29 Log.d (package:signale/src/log.dart:8:19)
E/flutter (24822): #30 UnixPty.createPseudoTerminal (package:dart_pty/src/unix_pty.dart:48:9)
E/flutter (24822): #31 new UnixPty (package:dart_pty/src/unix_pty.dart:33:24)
E/flutter (24822): #32 new PseudoTerminal (package:dart_pty/src/interface/pseudo_terminal_interface.dart:32:12)
E/flutter (24822): #33 TerminalUtil.getShellTerminal (package:pseudo_terminal_utils/src/terminal_util.dart:48:12)
E/flutter (24822): #34 new Global._internal (package:adb_tool/global/instance/global.dart:26:37)
E/flutter (24822): #35 Global._getInstance (package:adb_tool/global/instance/global.dart:35:26)
E/flutter (24822): #36 new Global (package:adb_tool/global/instance/global.dart:22:23)
E/flutter (24822): #37 Print.log (package:adb_tool/global/instance/global.dart:222:5)
E/flutter (24822): #38 Logger._print. (package:signale/src/core/logger.dart:21:19)
E/flutter (24822): #39 List.forEach (dart:core-patch/growable_array.dart:410:8)
E/flutter (24822): #40 Logger._print (package:signale/src/core/logger.dart:17:22)
E/flutter (24822): #41 Logger.d (package:signale/src/core/logger.dart:31:5)
E/flutter (24822): #42 Log.d (package:signale/src/log.dart:8:19)
E/flutter (24822): #43 UnixPty.createPseudoTerminal (package:dart_pty/src/unix_pty.dart:48:9)
E/flutter (24822): ...
E/flutter (24822): ...
E/flutter (24822): #8614 new Global._internal (package:adb_tool/global/instance/global.dart:26:37)
E/flutter (24822): #8615 Global._getInstance (package:adb_tool/global/instance/global.dart:35:26)
E/flutter (24822): #8616 new Global (package:adb_tool/global/instance/global.dart:22:23)
E/flutter (24822): #8617 Print.log (package:adb_tool/global/instance/global.dart:222:5)
E/flutter (24822): #8618 Logger._print. (package:signale/src/core/logger.dart:21:19)
E/flutter (24822): #8619 List.forEach (dart:core-patch/growable_array.dart:410:8)
E/flutter (24822): #8620 Logger._print (package:signale/src/core/logger.dart:17:22)
E/flutter (24822): #8621 Logger.d (package:signale/src/core/logger.dart:31:5)
E/flutter (24822): #8622 Log.d (package:signale/src/log.dart:8:19)
I used the asset files from your project:
https://github.com/nightmare-space/adb_tool/tree/main/assets/android
And I used this code to extract them to the phone's memory and make them executable with chmod +x.
Unfortunately I always get a permission error when I try running adb --version command.
List<String> androidFiles = [
'adb',
'adb_binary',
'adb.bin-armeabi',
'libbrotlidec.so',
'libbrotlienc.so',
'libc++_shared.so',
'liblz4.so.1',
'libprotobuf.so',
'libusb-1.0.so',
'libz.so.1',
'libzstd.so.1',
'libbrotlicommon.so',
];
for (var element in androidFiles) {
ByteData data = await rootBundle.load('assets/android/$element');
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
var program = '/data/data/com.example.my_app/files/usr/bin/$element'; // Is it correct?
var file = File(program);
file = await file.create(recursive: true);
file.writeAsBytes(bytes);
await Process.run('chmod', ['+x', program]);
}
var results = await Process.run('/data/data/com.example.my_app/files/usr/bin/adb', ['--version']);
var version = results.stdout;
My application name is com.example.my_app.
Did I put the asset files in the right place?
Thank you in advance.
已升级1.4.0,导出似乎还是没反应。
如果开发者有空的话,希望可以修复一下,感谢开发。
download链接好像失效了
[adb_kit-main] flutter pub get
Resolving dependencies...
Because adb_kit depends on adbutil from path which doesn't exist (could not find package adbutil at "../adbutil"), version solving failed.
Language doesn't get changed to english in some places
Hi mengyanshou,
I successfully used your adb binary on my Flutter application like so.
// Make the binary executable.
final folder = (await getTemporaryDirectory()).path;
final binary = p.join(folder, "adb");
await Process.run('chmod', ['+x', binary]);
// Shell command is working.
var serial = "192.168.1.20";
var extras = ['shell', 'echo helloworld'];
var result = await Process.run(binary, ['-s', serial, ...extras]);
var output = result.stdout.trim(); // helloworld
Unfortunately I can't make the push and install commands working.
// Push command is failing.
var record = p.join(folder, 'record.log'); // File exists.
extras = ['push', record, '/sdcard/record.log'];
result = await Process.run(binary, ['-s', serial, ...extras]);
var errors = result.stderr.trim(); // adb: error: failed to stat remote object '/data/user/0/com.example.myapp/cache/record.log': No such file or directory
Could you tell me what is missing to make these commands work?
Hope I am not annoying you and thanks in advance.
第一次启动进入控制面板可以正常显示应用列表,关闭控制面板,再次进入,应用列表就刷新不出来了,
我用Flutter 3.7.3 无法编译成功
Flutter (Channel stable, 3.7.3, on Microsoft Windows [版本 10.0.19044.1415], locale zh-CN)
adbConnection.open(参数) 里面的参数填写的是什么作用的,有相关的文档吗,要填写什么才是执行adb指令,而不是adb shell指令。
希望能得到您的解答。o(╥﹏╥)o
-----来自酷友的疑惑
另外别人运行需要手动删除闭源部分这也太,让人很难参与开发,
感觉这app做的挺好的而且flutter跨平台范围内没有竞品,但是一个pr没有,部分开源太伤了,
复现流程:
注意不是点击 item 右侧的箭头
另外,如果是点击 item 右侧箭头,即 不起新的标签页面进入设备操作,没有为 MacOS 的三个按钮留出位置,内容会覆盖上去。
页面 crash 的问题很影响使用,看到了您的文件分享 iOS App,希望这个 ADB 工具也能上架一下 macOS 的。
加油!
我通过type-c线把两个安卓手机连接起来,建立好连接之后,开始push一个 apk文件(30M)到另外一台安卓手机上,过了大概7、8分钟, 进度才走到7%左右,而手机电已经掉了20%,怎么才能加快push速度?
adb_kit_extension这个库找不到
Is it just ADB or are there other problems?
It seems there is no way to compile ADB on iOS.
However, there are pure ADB implementations, but none written in Dart.
I successfully run adb_shell on iOS with Kivy, but it takes 40 minutes (inside VM) to compile a simple app!
The dadb is working perfectly on Android, Linux, macOS, and Windows.
Maybe it would be possible to create a Kotlin Multiplatform library, add dadb as dependency and then create a Dart plugin for Android and iOS. Have you already tried this kind of solution for adb_tool and if so, what did you conclude?
大佬我这遇到有adb shell密码可以加一下这个功能吗?
如标题,在当前的终端模拟器里面试了下,没有成功。本地指Android设备
flutter: [GetX] Instance "IconController" has been created
flutter: [GetX] Instance "IconController" has been initialized
[ERROR:flutter/shell/common/shell.cc(93)] Dart Unhandled Exception: Bad state: Failed to create PTY: Failed to create process, stack trace: #0 new Pty.start
package:flutter_pty/flutter_pty.dart:123
#1 Global.initTerminal
package:adb_tool/…/instance/global.dart:74
#2 Global.initGlobal
package:adb_tool/…/instance/global.dart:195
#3 _ADBToolEntryPointState.init
package:adb_tool/main.dart:109
#4 _FutureBuilderState._subscribe.
package:flutter/…/widgets/async.dart:627
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.