/*
* just a example! client creator :)
*/
import 'package:flutter/material.dart';
import 'package:tdlib/td_client.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'TDLib Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter TDLib Example'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
/*
Here we go!
*/
int clientId = 0;
void _clientCreator() async {
/*
Here we renew!
*/
int oldClientId = clientId;
int newClientId = await TdClient.createClient();
setState(() {
clientId = newClientId;
});
// closing after renewing! just to get NEW client identifier.
if (oldClientId != 0) {
await TdClient.destroyClient(oldClientId);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'TDLib Client ID\n$clientId',
),
Text(
'',
// ignore: deprecated_member_use
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _clientCreator,
tooltip: 'creator',
child: Icon(Icons.cached),
),
);
}
}
An Observatory debugger and profiler on sdk gphone x86 is available at: http://127.0.0.1:43629/SLxpUgM8P80=/
D/HostConnection(28686): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_2
D/EGL_emulation(28686): eglMakeCurrent: 0xf5360760: ver 2 0 (tinfo 0xf56b7dd0) (first time)
I/Choreographer(28686): Skipped 964 frames! The application may be doing too much work on its main thread.
W/System.err(28686): java.lang.UnsatisfiedLinkError: dlopen failed: library "libtdjson.so" not found
W/System.err(28686): at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
W/System.err(28686): at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
W/System.err(28686): at java.lang.System.loadLibrary(System.java:1664)
W/System.err(28686): at org.drinkless.tdlib.JsonClient.<clinit>(JsonClient.java:15)
W/System.err(28686): at org.drinkless.tdlib.JsonClient.create(Native Method)
W/System.err(28686): at org.naji.td.tdlib.TdlibPlugin.onMethodCall(TdlibPlugin.java:107)
W/System.err(28686): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
W/System.err(28686): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/System.err(28686): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
W/System.err(28686): at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err(28686): at android.os.MessageQueue.next(MessageQueue.java:335)
W/System.err(28686): at android.os.Looper.loop(Looper.java:183)
W/System.err(28686): at android.app.ActivityThread.main(ActivityThread.java:7656)
W/System.err(28686): at java.lang.reflect.Method.invoke(Native Method)
W/System.err(28686): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
W/System.err(28686): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/ple.hello_worl(28686): No implementation found for long org.drinkless.tdlib.JsonClient.create() (tried Java_org_drinkless_tdlib_JsonClient_create and Java_org_drinkless_tdlib_JsonClient_create__)
E/flutter (28686): [ERROR:flutter/shell/platform/android/platform_view_android_jni_impl.cc(43)] java.lang.UnsatisfiedLinkError: No implementation found for long org.drinkless.tdlib.JsonClient.create() (tried Java_org_drinkless_tdlib_JsonClient_create and Java_org_drinkless_tdlib_JsonClient_create__)
E/flutter (28686): at org.drinkless.tdlib.JsonClient.create(Native Method)
E/flutter (28686): at org.naji.td.tdlib.TdlibPlugin.onMethodCall(TdlibPlugin.java:107)
E/flutter (28686): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/flutter (28686): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/flutter (28686): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/flutter (28686): at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (28686): at android.os.MessageQueue.next(MessageQueue.java:335)
E/flutter (28686): at android.os.Looper.loop(Looper.java:183)
E/flutter (28686): at android.app.ActivityThread.main(ActivityThread.java:7656)
E/flutter (28686): at java.lang.reflect.Method.invoke(Native Method)
E/flutter (28686): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/flutter (28686): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/flutter (28686):
F/flutter (28686): [FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(942)] Check failed: CheckException(env).
F/libc (28686): Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 28686 (ple.hello_world), pid 28686 (ple.hello_world)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/sdk_gphone_x86/generic_x86_arm:11/RSR1.200819.001.A1/6823625:user/release-keys'
Revision: '0'
ABI: 'x86'
Timestamp: 2020-09-19 22:41:43+0300
pid: 28686, tid: 28686, name: ple.hello_world >>> com.example.hello_world <<<
uid: 10151
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: '[FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(942)] Check failed: CheckException(env).
'
eax 00000000 ebx 0000700e ecx 0000700e edx 00000006
edi f0c1b80e esi ffbbd810
ebp f5a0fb90 esp ffbbd7b8 eip f5a0fb99
backtrace:
#00 pc 00000b99 [vdso] (__kernel_vsyscall+9)
#01 pc 0005ad68 /apex/com.android.runtime/lib/bionic/libc.so (syscall+40) (BuildId: a690ed60a8b6a282b41dd991389b5fdb)
#02 pc 00076511 /apex/com.android.runtime/lib/bionic/libc.so (abort+209) (BuildId: a690ed60a8b6a282b41dd991389b5fdb)
#03 pc 0117efe2 /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#04 pc 0116b0c7 /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#05 pc 011661ee /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#06 pc 011d5dc3 /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#07 pc 0117d29d /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#08 pc 0117fddb /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#09 pc 0117fd1e /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#10 pc 0118617e /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#11 pc 011861ac /data/app/~~tzyR3n12WtmOvbpJV1ViwA==/com.example.hello_world-eYKN35FIsrUVuyGfUOW0rw==/lib/x86/libflutter.so (BuildId: ab1cd743c331d656739b38947d269b708c594cb6)
#12 pc 00019337 /system/lib/libutils.so (android::SimpleLooperCallback::handleEvent(int, int, void*)+39) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
#13 pc 0001a367 /system/lib/libutils.so (android::Looper::pollInner(int)+1127) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
#14 pc 00019e96 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+118) (BuildId: ab4be013cda31e8c45d48aa23a89d0f8)
#15 pc 0010ef8b /system/lib/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long long, int)+59) (BuildId: 588f2cd5873ff4273bb25b25edb82606)
#16 pc 0021be48 /system/framework/x86/boot-framework.oat (art_jni_trampoline+136) (BuildId: cd049c9ca9f46317ecd7d512d6b856181c4d6d60)
#17 pc 020013a6 /memfd:jit-cache (deleted) (offset 0x2000000) (android.os.MessageQueue.next+230)
#18 pc 0013b922 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+338) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#19 pc 001d0381 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+241) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#20 pc 003866e1 /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+385) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#21 pc 0037aa1e /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1070) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#22 pc 007a1197 /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+967) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#23 pc 001357a1 /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#24 pc 00396968 /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)
#25 pc 0036fae2 /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.12175385690420896393)+370) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#26 pc 00379bff /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+207) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#27 pc 0037b495 /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+2117) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#28 pc 0018e613 /apex/com.android.art/lib/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+81395) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#29 pc 00142de2 /apex/com.android.art/lib/libart.so (ExecuteSwitchImplAsm+18) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#30 pc 001a1698 /system/framework/framework.jar (android.app.ActivityThread.main)
#31 pc 0036fa6e /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.12175385690420896393)+254) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#32 pc 00379ae0 /apex/com.android.art/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+176) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#33 pc 0078b305 /apex/com.android.art/lib/libart.so (artQuickToInterpreterBridge+1061) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#34 pc 0014220d /apex/com.android.art/lib/libart.so (art_quick_to_interpreter_bridge+77) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#35 pc 0013baf2 /apex/com.android.art/lib/libart.so (art_quick_invoke_static_stub+418) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#36 pc 001d0392 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+258) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#37 pc 0062ffe8 /apex/com.android.art/lib/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned int)+1464) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#38 pc 00588680 /apex/com.android.art/lib/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+80) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#39 pc 0008a778 /apex/com.android.art/javalib/x86/boot.oat (art_jni_trampoline+168) (BuildId: b386118502376442aa402e8d28c29e95a6eb8614)
#40 pc 0013b922 /apex/com.android.art/lib/libart.so (art_quick_invoke_stub+338) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#41 pc 001d0381 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+241) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#42 pc 003866e1 /apex/com.android.art/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+385) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#43 pc 0037aa1e /apex/com.android.art/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1070) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#44 pc 007a1197 /apex/com.android.art/lib/libart.so (MterpInvokeVirtual+967) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#45 pc 001357a1 /apex/com.android.art/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#46 pc 004492d2 /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
#47 pc 0036fae2 /apex/com.android.art/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.12175385690420896393)+370) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#48 pc 00379ae0 /apex/com.android.art/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+176) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#49 pc 0078b305 /apex/com.android.art/lib/libart.so (artQuickToInterpreterBridge+1061) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#50 pc 0014220d /apex/com.android.art/lib/libart.so (art_quick_to_interpreter_bridge+77) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#51 pc 00893696 /system/framework/x86/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2102) (BuildId: cd049c9ca9f46317ecd7d512d6b856181c4d6d60)
#52 pc 0013baf2 /apex/com.android.art/lib/libart.so (art_quick_invoke_static_stub+418) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#53 pc 001d0392 /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+258) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#54 pc 0062e633 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, char*)+579) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#55 pc 0062eb05 /apex/com.android.art/lib/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, char*)+85) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#56 pc 004ce62f /apex/com.android.art/lib/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+735) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#57 pc 003f8a8e /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, char*, art::Primitive::Type, art::InvokeType)+2846) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#58 pc 003e60b9 /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::CheckJNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+73) (BuildId: 123e60096a46399e6f56e4eb5c70759a)
#59 pc 0008f90e /system/lib/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+62) (BuildId: 588f2cd5873ff4273bb25b25edb82606)
#60 pc 00098c8e /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+910) (BuildId: 588f2cd5873ff4273bb25b25edb82606)
#61 pc 00003804 /system/bin/app_process32 (main+1588) (BuildId: c5eedbfb6130af84c3db8e121fb1202e)
#62 pc 000522e3 /apex/com.android.runtime/lib/bionic/libc.so (__libc_init+115) (BuildId: a690ed60a8b6a282b41dd991389b5fdb)
Lost connection to device.
Maybe i am missing something? Seems like the problem in that library "libtdjson.so" not found. I supposed that i should compile libtdjson.so by myself and put somewhere in the project(that kinda non-obvious, because documentation tells no word about this). I tried to put lib into core dir of project and still getting errors.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.20.4, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.49.0)
[✓] Connected device (1 available)
• No issues found!