ئالدىنقى يازمىلىرىمىزدا Hermes نى ئەسلى كودىدىن Compile قىلىپ ئۇنى C++ قا ئەكىرگەندۇق، ۋە ئاددىي ھالدا Qt6 بىلەن بىرىكتۈرۈپ ئۈستەليۈزى پروگراممىلىرىنى ئېچىش ئۈچۈن ئاتلانغان ئىدۇق،
QObject نى JavaScript قا چىقىرىپ ئۇنى زىيارەت قىلىشقا بولاتتى،
بۇ يازمىمىزدا بىز بۇنى Dart/Flutter غا چىقىرىپ باقايلى،
مەسىلەن ئوخشاش يوسۇندا مەن Hermes نى ئەسلى كودىدىن Android arm64 كە Compile قىلىش ئۈچۈن يېرىم سائەتلەردەك ۋاقىت سەرىپ قىلىپ دەمال قاملاشمىدى،
تۆەندىكىسى قاملاشمىغانلىق ئىسپاتى:
مەن ئاۋال Hermes نىڭ CMakeLists.txt غا ئازراق ئۆزگەرتىش كىرگۈزدۈم،
بېشىدا ھەممە ئىشلار نۇرمال، بىراق Compile قىلغاندا بەزى ئىشلار باشلاندى:
ئاندىن
LibUCI نى تاپالمىدىم دەيدۇ، شۇنىڭۋىلەن CMakeLists.txt نى تەتقىق قىلىپ libuci نى ئەسلى كودىدىن تەرجىمەشتىن تارتىپ ئازراق ئۇرۇندۇميۇ ئەمما بەك كۆپ ۋاقىت سەرىپ قىلىشنى دەمال توغرا كۆرمىدىم، مەن بۇ مەسىلىنى ھەل قىلالايدىغانلىقىمغا ئىشىنىمەن،
شۇنىڭۋىلەن داۋاملىق ھالدا QuicjJS نى Dart/Flutter غا ئەكىرىش ئۈستىدە ئازراق تەتقىقاتنى باشلىدىم ۋە QuicjJs نى ئەسلى كودىدىن ئاسانلا Linux-x64, Android-Arm64 كە بولاقلىيالىدىم، ھەم بولاقنىڭ سىغىمىمۇ ئۇنچە كۆپ چىقىپ كەتمىدى، تەخمىنەن بىر مىگابايىتتىن كىچىك،
ئەمدىكى مەسىلە ئۇنى Dart ffi بىلەن Dart قا ئەكىرىش كىرەك،
شۇنىڭۋىلەن github دىن ئىزدەپ باشقىلارنىڭ ماڭا ئوخشاش ئىشلارنى قىلىپ تەييارلاپ قويغانلىقى مەلۇم بولدى،
شۇنداق پەيزى قىلىپ قويغاننى ئاز دەپ تىخى pub.dev غىمۇ چىقىرىپ بوپتۇ،
https://hub.nuaa.cf/ekibun/flutter_qjs
https://pub.flutter-io.cn/packages/flutter_qjs
ئەمما بەخىتكە قارشى پەقەت Flutter نىلا قوللايدىكەن، قارىماققا Dart نى قوللايدىغاندەك قىلمايدۇ،
ئەمما شۇنداقتىمۇ چۈشۈرۈپ سېنىدىم، ئەمما ئۆزىنىڭ C++ Shared library لىرىنى تاپالمىدى، شۇنىڭۋىلەن ئازراق ئەسلى كودىنى تەتقىق قىلدىم،
تاپالمىغان يېرىنى تاپتىم...
ئەگەر سىستېما Linux بىلەن macOs بولغاندا C++ shared library سىنى نۆۋەتتىكى Executable دىن ئىزدەيدىكەن،
ئۇنداقتا مەن ئۆزگەرتىپ ئۆزۈم بىرنى قىلسامچۇ؟
شۇنىڭۋىلەن github دىن ئەسلى كودىنى چۈشۈرۈپ compile قىلىشقا ئاتلاندىم:
ئەمما ئىشلار دەسلىۋىدە بەك ئوڭۇشلۇق بولۇپ كەتمىدى، شۇنداقتىمۇ ئۆزۈم CMake ھۆججىتىدىن بىرنى يېزىپ ئۆزۈمگە كىرەكلىك بولغان quickjs, بىلەن ئاۋۇ github دىكى بۇرادەر تەمىنلىگەن ئەسلى كودنى Compile قىلدىم، تۆۋەندىكىسى مەن يازغان CMakeLists.txt
Compiling...
شۇنىڭۋىلەن Dart بىلەن ئازراق بىر كۆۋرۈكلەرنى ياسىغاندىن كىيىن JavaScript نى ئىجرا قىلىشقا بولدى، ھەمدە ئارقىدىن 15 مىنۇت تىرىشقاندىن كىيىن Dart class لارنى JavaScript ئىچىدە ئېنىقلاپ زىيارەت قىلىش ۋە فۇنكىسىيەلىرىنى چاقىرىشنى ئەمەلگە ئاشۇردۇم،
تىخىمۇ قالتىس يېرى: JavaScript دە Dart class غا ۋارىسلىق قىلغىلى ھەمدە كىڭەيتكىلى بولىدۇ،
پەچەت ھەي،
كىيىنكى قەدەمدە قانداق قىلساق بولار؟
بىز Dart نىڭ class لىرىنى JavaScript دە قۇرۇپ كىڭەيتىپ زىيارەت قىلالىدۇق، ئەگەردە Flutter نى JavaScript دە يېزىپ باقساقچۇ؟
يەنە ئەگەردە ۋىيشىن ئەپچاقنىڭ سىغىشتۇرۇش قەۋىتىنى ياساپ ئەپچاقنى بىۋاستە Flutter ھالەتتە ئىجرا قىلىپ كۆچمە ئەپ ئېچىپ باقساقچۇ؟
ۋە ياكى Uniapp ۋە ياكى بولمىسا DOM api نى تەقلىدلىگەندىن كىيىن HTML, Css لەرنى سىغىشتۇرۇپ تور بەتلەرنى Native ھالەتتە يۈرگۈزۈپ باقساقچۇ؟
ئاندىن React, Vue لارنىڭ تۆۋەن قاتلىمىنى ئازراق مىدىرىتىپلا Vue, React لار بىلەن Flutter يېزىپ چىقساقچۇ؟ ۋە ياكى React native غا Renderer قىلىپ باقساقچۇ؟
مەن بۇنى چوقۇم قىستۇرمىلارنى دىينامىك يۈكلەش ئۈچۈن ئىشلىتىمەن.
تامام.