From ef97c6dc90a156d2afe0da17d5ba57aabc4ea9ba Mon Sep 17 00:00:00 2001 From: R0m1k3 Date: Fri, 27 Mar 2026 11:08:04 +0100 Subject: [PATCH] feat: Add generated Hive TypeAdapters for AppUser and PlaylistConfig models, and new build/doctor log files. --- .claude/settings.local.json | 8 + analyze_after_fixes.txt | Bin 0 -> 68378 bytes analyze_final.txt | 0 analyze_final_clean.txt | Bin 0 -> 41762 bytes analyze_head.txt | 100 +++ analyze_report.txt | Bin 0 -> 141400 bytes analyze_utf8.txt | 167 ++++ analyze_v10.txt | Bin 0 -> 41762 bytes analyze_v11.txt | Bin 0 -> 41762 bytes analyze_v2.txt | Bin 0 -> 44448 bytes analyze_v3.txt | Bin 0 -> 42098 bytes analyze_v4.txt | Bin 0 -> 51870 bytes analyze_v5.txt | Bin 0 -> 42934 bytes analyze_v6.txt | Bin 0 -> 42436 bytes analyze_v7.txt | Bin 0 -> 57626 bytes analyze_v8.txt | Bin 0 -> 42246 bytes analyze_v9.txt | Bin 0 -> 41762 bytes bin/api/auth_handler.dart | 144 ---- bin/api/playlists_handler.dart | 186 ----- bin/api/settings_handler.dart | 63 -- bin/api/users_handler.dart | 166 ---- bin/database/database.dart | 380 --------- bin/middleware/auth_middleware.dart | 57 -- bin/middleware/security_middleware.dart | 110 --- bin/models/playlist.dart | 65 -- bin/models/session.dart | 37 - bin/models/user.dart | 31 - bin/pubspec.yaml | 17 - bin/server.dart | 761 ------------------ bin/services/cleanup_service.dart | 109 --- bin/utils/password_hasher.dart | 17 - build_apk_log.txt | Bin 0 -> 1002 bytes build_apk_log_utf8.txt | 26 + build_apk_output.txt | 55 ++ build_error_fatale.txt | Bin 0 -> 132314 bytes build_error_log.txt | Bin 0 -> 153254 bytes build_final_log.txt | Bin 0 -> 148324 bytes build_final_verbose.txt | Bin 0 -> 132332 bytes build_full_verbose.txt | Bin 0 -> 132368 bytes build_last_500.txt | 444 ++++++++++ build_ndk_last_100.txt | 100 +++ build_tail_v7.txt | 378 +++++++++ build_tail_v8.txt | 436 ++++++++++ build_v3_tail.txt | 100 +++ build_verbose_tail.txt | 200 +++++ config.txt | 63 ++ dart_analyze_v10.txt | Bin 0 -> 84928 bytes dart_analyze_v8.txt | Bin 0 -> 91966 bytes dart_analyze_v8_utf8.txt | 319 ++++++++ dart_analyze_v9.txt | Bin 0 -> 77470 bytes doctor_cmd.txt | 31 + doctor_final_check.txt | Bin 0 -> 4282 bytes doctor_log.txt | Bin 0 -> 3450 bytes doctor_log_utf8.txt | 31 + exact_url.txt | Bin 0 -> 168 bytes final_analyze.txt | Bin 0 -> 73080 bytes final_analyze_utf8.txt | 239 ++++++ final_check.txt | Bin 0 -> 72542 bytes kernel_error_v2.txt | 1 + lib/core/api/api_client.dart | 3 + lib/core/api/dns_service.dart | 34 +- lib/core/models/iptv_models.dart | 155 ++++ .../patterns/stream_resolver_pattern.dart | 4 +- lib/core/patterns/video_player_wrapper.dart | 11 +- lib/core/utils/image_cache_config.dart | 3 +- .../iptv/screens/lite_player_screen.dart | 43 +- .../iptv/screens/mobile_dashboard_screen.dart | 16 +- .../iptv/screens/mobile_playlist_screen.dart | 2 +- .../mobile_playlist_selection_screen.dart | 2 +- .../screens/mobile_series_detail_screen.dart | 54 +- .../iptv/screens/native_player_screen.dart | 75 +- .../iptv/services/xtream_service_mobile.dart | 220 +++-- .../iptv/widgets/mobile_live_tv_tab.dart | 37 +- .../iptv/widgets/mobile_movies_tab.dart | 31 +- .../iptv/widgets/mobile_series_tab.dart | 62 +- .../iptv/widgets/mobile_settings_tab.dart | 14 +- .../providers/mobile_xtream_providers.dart | 40 +- lib/mobile/widgets/mobile_poster_card.dart | 6 +- pubspec.yaml | 6 +- simple_analyze.txt | Bin 0 -> 41762 bytes test/widget_test.dart | 2 +- 81 files changed, 3233 insertions(+), 2428 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 analyze_after_fixes.txt create mode 100644 analyze_final.txt create mode 100644 analyze_final_clean.txt create mode 100644 analyze_head.txt create mode 100644 analyze_report.txt create mode 100644 analyze_utf8.txt create mode 100644 analyze_v10.txt create mode 100644 analyze_v11.txt create mode 100644 analyze_v2.txt create mode 100644 analyze_v3.txt create mode 100644 analyze_v4.txt create mode 100644 analyze_v5.txt create mode 100644 analyze_v6.txt create mode 100644 analyze_v7.txt create mode 100644 analyze_v8.txt create mode 100644 analyze_v9.txt delete mode 100644 bin/api/auth_handler.dart delete mode 100644 bin/api/playlists_handler.dart delete mode 100644 bin/api/settings_handler.dart delete mode 100644 bin/api/users_handler.dart delete mode 100644 bin/database/database.dart delete mode 100644 bin/middleware/auth_middleware.dart delete mode 100644 bin/middleware/security_middleware.dart delete mode 100644 bin/models/playlist.dart delete mode 100644 bin/models/session.dart delete mode 100644 bin/models/user.dart delete mode 100644 bin/pubspec.yaml delete mode 100644 bin/server.dart delete mode 100644 bin/services/cleanup_service.dart delete mode 100644 bin/utils/password_hasher.dart create mode 100644 build_apk_log.txt create mode 100644 build_apk_log_utf8.txt create mode 100644 build_apk_output.txt create mode 100644 build_error_fatale.txt create mode 100644 build_error_log.txt create mode 100644 build_final_log.txt create mode 100644 build_final_verbose.txt create mode 100644 build_full_verbose.txt create mode 100644 build_last_500.txt create mode 100644 build_ndk_last_100.txt create mode 100644 build_tail_v7.txt create mode 100644 build_tail_v8.txt create mode 100644 build_v3_tail.txt create mode 100644 build_verbose_tail.txt create mode 100644 config.txt create mode 100644 dart_analyze_v10.txt create mode 100644 dart_analyze_v8.txt create mode 100644 dart_analyze_v8_utf8.txt create mode 100644 dart_analyze_v9.txt create mode 100644 doctor_cmd.txt create mode 100644 doctor_final_check.txt create mode 100644 doctor_log.txt create mode 100644 doctor_log_utf8.txt create mode 100644 exact_url.txt create mode 100644 final_analyze.txt create mode 100644 final_analyze_utf8.txt create mode 100644 final_check.txt create mode 100644 kernel_error_v2.txt create mode 100644 simple_analyze.txt diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..dd6c95f --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "Bash(flutter build:*)", + "Bash(tee build_apk_output.txt)" + ] + } +} diff --git a/analyze_after_fixes.txt b/analyze_after_fixes.txt new file mode 100644 index 0000000000000000000000000000000000000000..d5e33ed1d64b5fe9d6988dfc4487711212cf8a26 GIT binary patch literal 68378 zcmeI5S#KQ25y$5_K)wUtm;jCy-lAXxkR>~DVkJUEI(Zx$7nxMr_A|At{BS|YjXWq{#tjle{?hBUY=Hm4qMTdP+~Lso!BeNds)2v z&aKc`{?|QrEZ@b5|0DFgbic7)?7L(6+jG2eHrJ=m>CVjwn%&EHk7Z6{_dQVZTIR)5 z#zOBaH_v-{Cw|A*LNE3ce825De>2*fJS{%L(bV`n&qL2FE;y8N-N-0do3Z?}-3wPU z)^28|oV+!88k{^mCf#X_X|dMb77*&yZI|dD(wIe2WBmlBdDNU*vxz`knjRfBP%9ThsSy zILE9NE-#&rog`=1B3Y0I?}L$+m(TJ2$&Ri_XreyM^QG+0Wt%6v@WJhH zEE()*wX0Wce^#64%U-PKrn3{5OWsyl&rPR8_b1wGIpl4%dG>>Ew|c_2+v2nLL9c9! zE!2m3?ku6*S49r(IKEwddAn1??pqhn7vK9rFf;Yg`OD*CprYr_?*Va9G!1MC6qBE0 zx${=MG|)x!drq8(X5Qh~a@C>pw$=powWs|g-=JvaIQm`md%5O8zK8EMZ%chZo{HyY z7~hp#1?rRK0V?JRex?ZRomiB3jof!H_l17mZiJrN74Ja5Ep4VFheKS8C$2bw&MM3M z>o+y`9W@Qz9jHlkA&eNL@uq(-tfBKb6m6`v7UoN-3e5hW0Iliq1au1ENh%Gvm9xjBJd6vJ7; z7m>ywg!dCF{OGg<=s!rG#xKw?Xo`5;VNLD=t4HHJiDu(BVhEpP&K7s!8ov2va_v|0 z`-yzc_ixIJs3JIdc2q2!yN?QKOo?ctk3)@|ZXwomA0L%2#^;bwHC?KJ)}I5oE1^1+lh^!5esGo`V`J8OW(H_hii^9+YWWu z7Wyb<;=7?p6fT=zSlM;q5u&y1I%EO6OSu5qK@5=?sm4_g3^3^Tel+5uvCDR@kGnBjqFEzqDe9h;Yh{z1n2tK9vA$n|3ndxchqs?Be2DJu=rjb*sHUQEY3xJH*u^@c-Z@PN#Ww!TXXK2Q^zV{cm zdKb>}2y^j4hFMv&IP$f4SuVlq^f7S7IKyX-nW^!4-{vo*JJfxjEwU7bRI7VU_x z*NjnLt92jp6_V6oq{mghbuWfZM8gd=HftqxjUoFW=! z?i!h%KR#5PLVGR_-!&4nOcdI889QzB(4u<~#W@PElWc^3cnf9dvNhqPK6nOY=(0P| zMXV_#K-_28?GZvzj$itNMwFvVbI3!|o1VYM)>t;xt&ifp%(jHLCRR2_EEfM^{&I(OR!x$YrM$^(fXk0Ao!=wJIwcy-L$!IWS`7&mKW7q) zA`^lfI-fsG6a$M-Gwbj@H4_&*j{ItDy{ni%YWawUz7I7f$r_U;sf~q$m+SLC2YRh34agv zNf+{DOYCms3B3*mec8UgBqE9ZJP{mZR^zYF^F(|u-mS4+-z9;b2w^8Jtqi2g30Vx<^UCrb zw7UXV*v^RS>UJr#Dd>%l^q#tP(5?r1hJkiv*UCORAuz@-6JL(GgY2`f$r`zryXj+M zYnhcfv04<=ydXmy2MU(mrC^9eLoM52pkR3lDsIv(1ueg4UG_Zn&qx5OcdR3zubTFs zn}pDAOxk})bFGjgoU}m|5s^b`?(SVhoOPNB^EiP%-`tGL*6MPvptWj0)N;UnKNHu#bs{oXLI6nHt<%(Vipu%Vur1bGtP3 z{WX*H^PkL{a`-3a!7UEu^gJ8Os72=|DQM^9={Z}|*Uy`-)Y3IW*+b!9kcF_4-Ri>0 zBonY-+-Zw1?Fvzhb}B9vKn=C`Usc;Fx&QlzQG}L?kMZTpgB{^R&4Xwz z&N)!Os5IUYNr2T+Co4I*?^oAq)APXn8MxV&92I9?zg0(!7Ey*4rvjcpJ)d-ttNC)Z z_C0T>=VVXc(*}}Mg~s5NZCN5@!+{imA90G1 z=YZx=*(!4e1NS*epil6lk8ptS*vJjRN%B;h<>l{6&X+g{*!FzqZP5?&>Z{B<3-u4} zkbevJgTxaZ(^V&yMz-O5hmiTm8uXaeGr4#?AmpyM@+6ZkZAS&F@E=f%pPtvC&dhP-5M0id)3YyZ z+{ZF^Ixmib-svVG24AH9%5ahlNL!QERlcPDPJA4s5E0BKqq9|b(=ui^1Fc*|PN&T} zD{lWUk<<^u`xgizb|CcP}!TUXGtcTC=v$L}Ok^`mk4`=4$D=au98%|ey3)xerSSQJO*3?v+@9u=7EaSYH%;4pt!@g)C z?MiO>tK}(?w!_S7L)WOsz{w+Kb!n!{sn}h7b{@T!-H26o8yyIr5{3Wlyok_hW?Udt z{M3wk_HI>4U4?7*g=atx{Yh|-fgBg66qf-Cd;U(26^GSmPb?T*3SYV@jC}cIBM|~Pkn^gQ3gu;ES|8T_MP{pUAvziit4S^# zXs=Q6JbMt@6O-9~_R#7}U$R-T!O4eETU@i=(D1T23q7+MFblqy+X68=x zBA$~|P4`Z753)x2tbPU8bi^x;3XBr+XZm_Cb;@v9ymIU)CdX7hsrOG83eGSF(e+QF zRv4XR?__5kL_f)kT~)0Hr!KeQk>qKHkRDmO z6dW{3jd*-FPQ{{VOWpZt>}r;!;76G?H?y)rI=~m9&1dWRMxp}P4RrOq5-TDtCa_u@ zwCA+z#2&Uj$M&2S^c}m>D3BFXNIP-4 z3?)9u>_a`4#&6xxK~c6@R%Tmtu>E%+d~qmT;ic((DMGXGQ5W&R5sQA`4!7 z-C9(=KEgLp-Qw<9o;Oqn*C4`T_+r_pRua=FqhA)u^4Jy{G^=T|WN2vf&m(U$?q9qS zJD6TO-rDKX^CmBoTEq4;GwGJW`KRBBKlNva$1Yn|W?dNzt%)VXEhk_5Uo{J}js#dN zFKkCpGnE0ey!|qER2gZwXtc0%TunEmSwCfH(JY!cjb0~F#d+bg$akW8T6gmx@->ck z!(oeu&gRoI9=)8tz76a)kCvRR+Y~hwxef86ch4)C^lpwFLi;3G#FB#mGY*|GspXX?vCvWkME(m=3IvUz`*&$ z%bG(8^5ndov)rDf*9@Fc#(yhTPkawNtsrJlgz})W@$Rhy|98#*yG{zV$NyUQf~^D3 z>-zRl+G`!w#&d=}h)46>o`wne3=-^nFNwO7vUG;Rmk#@IPDh&kIJ3OJwAqE8ATq}) zJiEjH^CTU4t%{A#Bl94u(zU(3gCg`G-#0G#f9=?Ha1vfs!wp5ENa3tdMj=7Fdqh0UW+#~F}khGo_}A!Hg+ zN8{Vmk^W&GYlw<}C7&%Krk+PV?f2wQA!rv>Uv+A>9idn>q%mAiWKlaA{dqjBG4S@h zO`dPKdN||N^EmS;z3)7(zT)cP+Ru;Mu^#aJ+T(Xc7sJ`U7yjoIZ~S7gq_Y*o7V~%? zsuMM(w}wW%@ei6uTNX8{6!OD7xqsW$zO~2w{lFIUxm~N|=8r9geAgVhm_Pr$Nri%) zew&5{EGxR0KYQ&R!Z|x$*44p6Osa**YI0>)&9|aHP&J0}Q1jlEX0_>=*ftiglq@_01?ackCqF5cd@>{b#D8ks$y zHa<0#?XH8?3(&Kni=I)eZP*=xF3$0D#m7N6r)E9M_;aUue=$2p#Vza?LOuFk(H-y9 z_4#H8)0?-AdYS3fnxnYDMC~`zB|kGPE6{gb|Y|k z+L?|F=p>&vl%|tH8d>&rGRwB_J#UKGzvNqJW@`0bLsk+e5$9Z6><-xtlF;|_Q{q&OV+Tpfj>W$|79;^I;YuQ3A$@n8 zOvATP^l6~4o?6`;eZfuW5H!#?>;~HueeD!V^U4SQZI*wjqK;R%4HRyc!pL6jlVPW2 z4is*h!aL3q^EFfhg^N%)KLUZxt`-`e=%C?>Yq+Ac)jq4u(bkZY@Vr>fCySpKix+Bj zX4hglUWx7a#bqmmND8%Ax|cX%h~LPiApecixP5JI_%u5=EBQQVN4^|YuSc%F_e}C5 zh$2#NrtgQAt7bCA?J6AwXMxj`%vaRvxR@t#NHSRLT-@wBTCkm}=fcFF5uUwkl%(rm z(qFWQhRwD-6`HQQdnaqjIZ}72D<4Mf%CDYswxOe^ZngaBs-x!$?~$x!yvH0U7O(#U D?u*dp literal 0 HcmV?d00001 diff --git a/analyze_final.txt b/analyze_final.txt new file mode 100644 index 0000000..e69de29 diff --git a/analyze_final_clean.txt b/analyze_final_clean.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d36592d718d8ae9fa35debebc88721a009f6817 GIT binary patch literal 41762 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 Tq4n-@BlbwNUp$rq+RE$yfI1rB literal 0 HcmV?d00001 diff --git a/analyze_head.txt b/analyze_head.txt new file mode 100644 index 0000000..5eac9a2 --- /dev/null +++ b/analyze_head.txt @@ -0,0 +1,100 @@ +Analyzing xtremobile... + + error - bin\api\auth_handler.dart:3:8 - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\api\auth_handler.dart:11:3 - Undefined class 'Router'. Try changing the name to the name of an existing class, or creating a class with the name 'Router'. - undefined_class + error - bin\api\auth_handler.dart:12:20 - The method 'Router' isn't defined for the type 'AuthHandler'. Try correcting the name to the name of an existing method, or defining a method named 'Router'. - undefined_method + error - bin\api\playlists_handler.dart:3:8 - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\api\playlists_handler.dart:11:3 - Undefined class 'Router'. Try changing the name to the name of an existing class, or creating a class with the name 'Router'. - undefined_class + error - bin\api\playlists_handler.dart:12:20 - The method 'Router' isn't defined for the type 'PlaylistsHandler'. Try correcting the name to the name of an existing method, or defining a method named 'Router'. - undefined_method + error - bin\api\settings_handler.dart:3:8 - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\api\settings_handler.dart:11:3 - Undefined class 'Router'. Try changing the name to the name of an existing class, or creating a class with the name 'Router'. - undefined_class + error - bin\api\settings_handler.dart:12:20 - The method 'Router' isn't defined for the type 'SettingsHandler'. Try correcting the name to the name of an existing method, or defining a method named 'Router'. - undefined_method + error - bin\api\users_handler.dart:3:8 - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\api\users_handler.dart:11:3 - Undefined class 'Router'. Try changing the name to the name of an existing class, or creating a class with the name 'Router'. - undefined_class + error - bin\api\users_handler.dart:12:20 - The method 'Router' isn't defined for the type 'UsersHandler'. Try correcting the name to the name of an existing method, or defining a method named 'Router'. - undefined_method + error - bin\database\database.dart:2:8 - Target of URI doesn't exist: 'package:sqlite3/sqlite3.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\database\database.dart:10:14 - Undefined class 'Database'. Try changing the name to the name of an existing class, or creating a class with the name 'Database'. - undefined_class + error - bin\database\database.dart:23:11 - Undefined name 'sqlite3'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - bin\server.dart:6:8 - Target of URI doesn't exist: 'package:shelf_static/shelf_static.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\server.dart:7:8 - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - bin\server.dart:44:21 - The function 'Router' isn't defined. Try importing the library that defines 'Router', correcting the name to the name of an existing function, or defining a function named 'Router'. - undefined_function + error - bin\server.dart:85:22 - The function 'Router' isn't defined. Try importing the library that defines 'Router', correcting the name to the name of an existing function, or defining a function named 'Router'. - undefined_function + error - bin\server.dart:109:29 - The function 'createStaticHandler' isn't defined. Try importing the library that defines 'createStaticHandler', correcting the name to the name of an existing function, or defining a function named 'createStaticHandler'. - undefined_function + error - bin\server.dart:185:27 - Undefined class 'Router'. Try changing the name to the name of an existing class, or creating a class with the name 'Router'. - undefined_class + error - lib\core\api\dns_service.dart:28:21 - The name '_DnsCacheEntry' isn't a type, so it can't be used as a type argument. Try correcting the name to an existing type, or defining a type named '_DnsCacheEntry'. - non_type_as_type_argument + error - lib\core\api\dns_service.dart:65:28 - The method '_DnsCacheEntry' isn't defined for the type 'UnifiedDnsService'. Try correcting the name to the name of an existing method, or defining a method named '_DnsCacheEntry'. - undefined_method + error - lib\core\api\dns_service.dart:152:55 - The property 'isExpired' can't be unconditionally accessed because the receiver can be 'null'. Try making the access conditional (using '?.') or adding a null check to the target ('!'). - unchecked_use_of_nullable_value + error - lib\core\api\dns_service.dart:162:10 - Classes can't be declared inside other classes. Try moving the class to the top-level. - class_in_class + error - lib\core\patterns\video_player_wrapper.dart:12:3 - Enums can't be declared inside classes. Try moving the enum to the top-level. - enum_in_class + error - lib\core\patterns\video_player_wrapper.dart:15:10 - Undefined class 'PlayerType'. Try changing the name to the name of an existing class, or creating a class with the name 'PlayerType'. - undefined_class + error - lib\core\patterns\video_player_wrapper.dart:22:12 - Undefined name 'PlayerType'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\patterns\video_player_wrapper.dart:53:64 - There's no constant named 'no' in 'MPVLogLevel'. Try correcting the name to the name of an existing constant, or defining a constant named 'no'. - undefined_enum_constant + error - lib\core\patterns\video_player_wrapper.dart:78:53 - Undefined class 'PlayerType'. Try changing the name to the name of an existing class, or creating a class with the name 'PlayerType'. - undefined_class + error - lib\core\patterns\video_player_wrapper.dart:80:7 - Undefined name 'PlayerType'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\patterns\video_player_wrapper.dart:81:7 - Undefined name 'PlayerType'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\device_info.dart:7:8 - Target of URI doesn't exist: 'package:device_info_plus/device_info_plus.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\core\utils\device_info.dart:27:26 - The method 'DeviceInfoPlugin' isn't defined for the type 'DeviceInfo'. Try correcting the name to the name of an existing method, or defining a method named 'DeviceInfoPlugin'. - undefined_method + error - lib\core\utils\device_info.dart:52:30 - Undefined class 'AndroidDeviceInfo'. Try changing the name to the name of an existing class, or creating a class with the name 'AndroidDeviceInfo'. - undefined_class + error - lib\core\utils\hive_encryption_benchmark.dart:7:27 - List literals require one type argument or none, but 2 found. Try adjusting the number of type arguments. - expected_one_list_type_arguments + error - lib\core\utils\hive_encryption_benchmark.dart:203:12 - A value of type 'List' can't be returned from the method 'toJson' because it has a return type of 'List>'. - return_of_invalid_type + error - lib\core\utils\hive_encryption_benchmark.dart:231:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\hive_encryption_benchmark.dart:232:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\hive_encryption_benchmark.dart:233:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\hive_encryption_benchmark.dart:234:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\image_cache_config.dart:21:7 - The named parameter 'diskUsagePercentageHigh' isn't defined. Try correcting the name to an existing named parameter's name, or defining a named parameter with the name 'diskUsagePercentageHigh'. - undefined_named_parameter + error - lib\core\utils\image_cache_config.dart:22:7 - The named parameter 'diskUsagePercentageGoal' isn't defined. Try correcting the name to an existing named parameter's name, or defining a named parameter with the name 'diskUsagePercentageGoal'. - undefined_named_parameter + error - lib\core\utils\image_cache_config.dart:90:5 - Undefined class 'BoxFit'. Try changing the name to the name of an existing class, or creating a class with the name 'BoxFit'. - undefined_class + error - lib\core\utils\image_cache_config.dart:90:18 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:102:38 - The method 'Container' isn't defined for the type 'ImageCacheConfig'. Try correcting the name to the name of an existing method, or defining a method named 'Container'. - undefined_method + error - lib\core\utils\image_cache_config.dart:105:21 - The method 'BoxDecoration' isn't defined for the type 'ImageCacheConfig'. Try correcting the name to the name of an existing method, or defining a method named 'BoxDecoration'. - undefined_method + error - lib\core\utils\image_cache_config.dart:106:24 - The name 'Color' isn't a class. Try correcting the name to match an existing class. - creation_with_non_type + error - lib\core\utils\image_cache_config.dart:107:25 - Undefined name 'BorderRadius'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:110:45 - The method 'Container' isn't defined for the type 'ImageCacheConfig'. Try correcting the name to the name of an existing method, or defining a method named 'Container'. - undefined_method + error - lib\core\utils\image_cache_config.dart:113:21 - The method 'BoxDecoration' isn't defined for the type 'ImageCacheConfig'. Try correcting the name to the name of an existing method, or defining a method named 'BoxDecoration'. - undefined_method + error - lib\core\utils\image_cache_config.dart:114:24 - The name 'Color' isn't a class. Try correcting the name to match an existing class. - creation_with_non_type + error - lib\core\utils\image_cache_config.dart:115:25 - Undefined name 'BorderRadius'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:117:22 - The name 'Icon' isn't a class. Try correcting the name to match an existing class. - creation_with_non_type + error - lib\core\utils\image_cache_config.dart:117:27 - Undefined name 'Icons'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:117:61 - The method 'Color' isn't defined for the type 'ImageCacheConfig'. Try correcting the name to the name of an existing method, or defining a method named 'Color'. - undefined_method + error - lib\core\utils\image_cache_config.dart:131:12 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:144:12 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:157:12 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:170:12 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\image_cache_config.dart:183:12 - Undefined name 'BoxFit'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\core\utils\memory_profiler.dart:7:29 - List literals require one type argument or none, but 2 found. Try adjusting the number of type arguments. - expected_one_list_type_arguments + error - lib\core\utils\memory_profiler.dart:129:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\memory_profiler.dart:130:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\memory_profiler.dart:160:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\memory_profiler.dart:161:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\memory_profiler.dart:162:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\core\utils\memory_profiler.dart:163:11 - Too many positional arguments: 0 expected, but 1 found. Try removing the extra arguments. - extra_positional_arguments + error - lib\features\iptv\screens\lite_player_screen.dart:62:3 - Undefined class 'ShortEPG'. Try changing the name to the name of an existing class, or creating a class with the name 'ShortEPG'. - undefined_class + error - lib\features\iptv\screens\lite_player_screen.dart:185:29 - The method 'getLiveStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getLiveStreamUrl'. - undefined_method + error - lib\features\iptv\screens\lite_player_screen.dart:187:33 - The method 'getVodStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getVodStreamUrl'. - undefined_method + error - lib\features\iptv\screens\lite_player_screen.dart:191:33 - The method 'getSeriesStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getSeriesStreamUrl'. - undefined_method + error - lib\features\iptv\screens\lite_player_screen.dart:354:21 - The method 'dispose' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'dispose'. - undefined_method + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:5:8 - Target of URI doesn't exist: '../../../widgets/mobile_scaffold.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:6:8 - Target of URI doesn't exist: '../../../theme/mobile_theme.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:11:8 - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:29:36 - Undefined name 'mobileDashboardIndexProvider'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:36:13 - Undefined name 'MobileTheme'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:37:14 - The method 'MobileScaffold' isn't defined for the type '_MobileDashboardScreenState'. Try correcting the name to the name of an existing method, or defining a method named 'MobileScaffold'. - undefined_method + error - lib\features\iptv\screens\mobile_dashboard_screen.dart:40:20 - Undefined name 'mobileDashboardIndexProvider'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_playlist_screen.dart:6:8 - Target of URI doesn't exist: '../../../theme/mobile_theme.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_playlist_screen.dart:391:13 - Undefined name 'MobileTheme'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:9:8 - Target of URI doesn't exist: '../../../theme/mobile_theme.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:206:13 - Undefined name 'MobileTheme'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:6:8 - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:7:8 - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist. - uri_does_not_exist + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:13:9 - Undefined class 'Series'. Try changing the name to the name of an existing class, or creating a class with the name 'Series'. - undefined_class + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:29:3 - Undefined class 'SeriesInfo'. Try changing the name to the name of an existing class, or creating a class with the name 'SeriesInfo'. - undefined_class + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:57:26 - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesDetailScreenState'. Try correcting the name to the name of an existing method, or defining a method named 'mobileXtreamServiceProvider'. - undefined_method + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:59:25 - The method 'getSeriesInfo' can't be unconditionally invoked because the receiver can be 'null'. Try making the call conditional (using '?.') or adding a null check to the target ('!'). - unchecked_use_of_nullable_value + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:307:28 - Undefined class 'Episode'. Try changing the name to the name of an existing class, or creating a class with the name 'Episode'. - undefined_class + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:308:36 - Undefined name 'mobileWatchHistoryProvider'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\mobile_series_detail_screen.dart:309:24 - Undefined name 'MobileWatchHistory'. Try correcting the name to one that is defined, or defining the name. - undefined_identifier + error - lib\features\iptv\screens\native_player_screen.dart:469:21 - The method 'dispose' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'dispose'. - undefined_method + error - lib\features\iptv\screens\native_player_screen.dart:681:3 - Undefined class 'ShortEPG'. Try changing the name to the name of an existing class, or creating a class with the name 'ShortEPG'. - undefined_class + error - lib\features\iptv\screens\native_player_screen.dart:711:37 - The method 'getLiveStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getLiveStreamUrl'. - undefined_method + error - lib\features\iptv\screens\native_player_screen.dart:713:37 - The method 'getVodStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getVodStreamUrl'. - undefined_method + error - lib\features\iptv\screens\native_player_screen.dart:718:37 - The method 'getSeriesStreamUrl' isn't defined for the type 'XtreamServiceMobile'. Try correcting the name to the name of an existing method, or defining a method named 'getSeriesStreamUrl'. - undefined_method diff --git a/analyze_report.txt b/analyze_report.txt new file mode 100644 index 0000000000000000000000000000000000000000..60d7d3b8c62d5ca6dfae488f8eef31b6eac6b516 GIT binary patch literal 141400 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 literal 0 HcmV?d00001 diff --git a/analyze_utf8.txt b/analyze_utf8.txt new file mode 100644 index 0000000..46025cf --- /dev/null +++ b/analyze_utf8.txt @@ -0,0 +1,167 @@ +Analyzing xtremobile... + + info - Dangling library doc comment - lib\core\api\dns_service.dart:1:1 - dangling_library_doc_comments +warning - The value of the field '_cacheTtlSeconds' isn't used - lib\core\api\dns_service.dart:33:20 - unused_field +warning - The declaration '_getOrCreateEncryptionKey' isn't referenced - lib\core\database\hive_service.dart:43:28 - unused_element + info - Missing a required trailing comma - lib\core\patterns\stream_resolver_pattern.dart:41:27 - require_trailing_commas +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:43:23 - unnecessary_cast +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:44:27 - unnecessary_cast +warning - Unused import: 'package:media_kit_video/media_kit_video.dart' - lib\core\patterns\video_player_wrapper.dart:3:8 - unused_import +warning - The value of the field '_availablePlayers' isn't used - lib\core\patterns\video_player_wrapper.dart:15:16 - unused_field + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:40:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:74:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:86:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:18:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:21:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:25:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:28:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:31:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:42:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:47:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:50:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:52:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:56:7 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:68:64 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:69:60 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:151:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:154:35 - deprecated_member_use + info - Dangling library doc comment - lib\core\utils\device_info.dart:1:1 - dangling_library_doc_comments +warning - Unused import: 'dart:io' - lib\core\utils\device_info.dart:6:8 - unused_import + error - List literals require one type argument or none, but 2 found - lib\core\utils\hive_encryption_benchmark.dart:7:27 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:16:13 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:45:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:65:9 - await_only_futures + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:96:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:121:9 - await_only_futures + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:160:15 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:165:124 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:167:118 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:172:122 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:174:116 - require_trailing_commas + error - A value of type 'List' can't be returned from the method 'toJson' because it has a return type of 'List>' - lib\core\utils\hive_encryption_benchmark.dart:203:12 - return_of_invalid_type + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:231:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:232:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:233:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:234:11 - extra_positional_arguments + info - Dangling library doc comment - lib\core\utils\image_cache_config.dart:1:1 - dangling_library_doc_comments +warning - The value of the field '_cacheSizeInBytes' isn't used - lib\core\utils\image_cache_config.dart:15:20 - unused_field + error - The named parameter 'diskUsagePercentageHigh' isn't defined - lib\core\utils\image_cache_config.dart:22:7 - undefined_named_parameter + error - The named parameter 'diskUsagePercentageGoal' isn't defined - lib\core\utils\image_cache_config.dart:23:7 - undefined_named_parameter + error - List literals require one type argument or none, but 2 found - lib\core\utils\memory_profiler.dart:7:29 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:68:13 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:78:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:90:13 - prefer_interpolation_to_compose_strings + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:129:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:130:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:160:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:161:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:162:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:163:11 - extra_positional_arguments + info - Use interpolation to compose strings and values - lib\core\utils\startup_profiler.dart:38:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\startup_profiler.dart:42:9 - avoid_print +warning - Unused import: 'dart:async' - lib\core\utils\video_profiler.dart:1:8 - unused_import + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:84:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:96:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:100:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:144:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:145:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:146:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:147:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:148:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:149:5 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:96:47 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:132:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:133:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:164:57 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:230:61 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:78 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:112:40 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:223:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:225:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:283:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:373:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:380:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:424:53 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:34:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:36:52 - deprecated_member_use + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:205:8 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:226:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:238:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:307:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:312:9 - curly_braces_in_flow_control_structures + info - Use 'const' with the constructor to improve performance - lib\features\iptv\screens\lite_player_screen.dart:397:41 - prefer_const_constructors + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:412:60 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:465:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:467:7 - curly_braces_in_flow_control_structures + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\lite_player_screen.dart:498:35 - deprecated_member_use + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:230:41 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:232:48 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:374:31 - use_build_context_synchronously + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:530:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:546:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:342:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:345:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:364:46 - deprecated_member_use + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:7:8 - uri_does_not_exist + error - Undefined class 'Series' - lib\features\iptv\screens\mobile_series_detail_screen.dart:13:9 - undefined_class + error - Undefined class 'SeriesInfo' - lib\features\iptv\screens\mobile_series_detail_screen.dart:29:3 - undefined_class + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesDetailScreenState' - lib\features\iptv\screens\mobile_series_detail_screen.dart:57:26 - undefined_method + error - The method 'getSeriesInfo' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\screens\mobile_series_detail_screen.dart:59:25 - unchecked_use_of_nullable_value + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_series_detail_screen.dart:161:46 - deprecated_member_use + error - Undefined class 'Episode' - lib\features\iptv\screens\mobile_series_detail_screen.dart:307:28 - undefined_class + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\screens\mobile_series_detail_screen.dart:308:36 - undefined_identifier + error - Undefined name 'MobileWatchHistory' - lib\features\iptv\screens\mobile_series_detail_screen.dart:309:24 - undefined_identifier + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:168:29 - require_trailing_commas + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:193:117 - require_trailing_commas +warning - The declaration '_cycleAudioTrack' isn't referenced - lib\features\iptv\screens\native_player_screen.dart:991:16 - unused_element + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1217:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1395:29 - deprecated_member_use + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:1527:45 - require_trailing_commas + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1692:29 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1694:48 - deprecated_member_use + info - Dangling library doc comment - lib\features\iptv\services\xtream_service_mobile.dart:1:1 - dangling_library_doc_comments + error - The getter 'serverUrl' isn't defined for the type 'PlaylistConfig' - lib\features\iptv\services\xtream_service_mobile.dart:47:23 - undefined_getter + error - The getter 'instance' isn't defined for the type 'ApiClient' - lib\features\iptv\services\xtream_service_mobile.dart:52:22 - undefined_getter + info - Missing a required trailing comma - lib\features\iptv\services\xtream_service_mobile.dart:136:46 - require_trailing_commas + error - The method 'Timer' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:45:22 - undefined_method + error - Undefined class 'Timer' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:59:3 - undefined_class + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:421:54 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:424:39 - deprecated_member_use + error - Undefined class 'Movie' - lib\features\iptv\widgets\mobile_movies_tab.dart:202:41 - undefined_class + info - Use 'const' with the constructor to improve performance - lib\features\iptv\widgets\mobile_movies_tab.dart:404:53 - prefer_const_constructors + error - Undefined class 'Series' - lib\features\iptv\widgets\mobile_series_tab.dart:170:20 - undefined_class + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:190:10 - non_type_as_type_argument + error - The property 'streamId' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:206:19 - unchecked_use_of_nullable_value + error - The property 'name' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:207:22 - unchecked_use_of_nullable_value + error - The property 'cover' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:208:38 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:209:25 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:209:61 - unchecked_use_of_nullable_value + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:7:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../widgets/tv_focusable.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:8:8 - uri_does_not_exist + error - Undefined class 'MobileSettings' - lib\features\iptv\widgets\mobile_settings_tab.dart:44:25 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:63:32 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:124:23 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:143:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:162:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:180:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:193:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:206:25 - undefined_identifier + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:334:14 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_settings_tab.dart:376:44 - deprecated_member_use + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:410:14 - undefined_method +warning - Unused import: 'package:hive_flutter/hive_flutter.dart' - lib\main.dart:3:8 - unused_import + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\theme\mobile_theme.dart:60:50 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:56:24 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:58:58 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:61:43 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:131:32 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:248:36 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:253:41 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:160:34 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:166:34 - deprecated_member_use + error - The name 'MyApp' isn't a class - test\widget_test.dart:16:35 - creation_with_non_type + diff --git a/analyze_v10.txt b/analyze_v10.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d36592d718d8ae9fa35debebc88721a009f6817 GIT binary patch literal 41762 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 Tq4n-@BlbwNUp$rq+RE$yfI1rB literal 0 HcmV?d00001 diff --git a/analyze_v11.txt b/analyze_v11.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d36592d718d8ae9fa35debebc88721a009f6817 GIT binary patch literal 41762 zcmeI5ZBHY~5y$6sqd zmy7Nhdtf{s8?Z;n4|txstE;N3{#9N5zyH3=F0;dIklkg!X6O3;Dci{Ylig(3SwFkT zhS`yR9q9Y3@VB9(&Hnv1`%T8n?n(zrN1D8DDMZ9)x4`=0I0n>G}g*b(xK_o?d<3=Zk(j4m~^x_r1y9W}D$D+R z6}`}&*oxk`6}>_$MxkF{!#ywWdqBVTvok$!Lr;eCx8eIx{oYX9?Z~Ol@9Wr!e(R{E z$2#*k9NX79gY0J=rO%f-W27@SbpA;HbwclNL(jODr_Do$?QC0=*vkGmzSpgu;dk$; z#okIr@S&cbg!T>sEe_Sj^U!wd+b12n$^NC0__JPpopYo2zvxNFVU(}#&;O@>znkbS z*PQCbC)e}?)u#8HvAogiNH0eJKr}tqIP@RnhVGaOZ>Ca#aY9y%_sV$reHfvU-c801 zbuU`{Z_)ESd}F+jyF>jSIo>&&^QZUeD)b4OUF+T>^=TCD10^riFP<_Iy$7M6*ZL)Y z#VgSZd4lh|f%CVr*W;(w}Hn`bl#zO=(9d=^ojOF zx`)}fj~tJDhQ6xG%klp3EgIxbPlJoU>K%=K75`S2EK%6 zyrpHD`3If*Qu^7|O#Jphkm}1biTBHB84|W!m(tqqs^{fHTkU9&o^r^ zo?F3Ad|CRo&UkKxIdpG4d%X;OTd$w%!MEFM!na-d?CUVEbY%;zLqB(3pxswT5A6iL zU44DKGl$*Rk>`u=eJ0GzJaqnxxEQEtKlnW$E{3LoErDY4IntFwd1;`F?)Mx856!*9 zS32us@U}LD`ufv;(H#t}9A)2RztcH4x)1ktZ_9i@o{Hz@7~eo=f%=qrfQEU3pBX}X zC5sZTk?XE?UFzrUX3SH&@(%27(|XzqIK+iKal;9$S7qMcdQ)>RP}9-fmYPHt(ulz{ z-i*JcoC(@O)L>hmEpJXo_afz@q{rWi)C2)&lA1pR4cJ^X={ESl18FECO8tP*fpGVv z`7DZ+?-5v>b4Jqq$;UXQ8pQy1Sc<#ilu#z zQ6Y;d5p9fds9u;`h&7$*`LyJ7ZkEC(jWLwI;;FP5RFv3MZ`?wQBO1c#{Q^tL_sgOx z)9_iJp$&(Hx}f)9&=GyL8QNk<9K|NX0wB)Bb>KJAGKlfW^4YpMDuGNR6WeM5`U0fZ zBY7r6#uLR}5rrC#Z3K&0&@0fVv{z;G{o>+q%~7TsP=~JQW0c8DLzO68IlnNn9q|a! zTBHtLfOHubpgV{m5+k)(Do2S-cNBAu^zCHG*Vhm|MG7qbY|@9s5v?3a-i~yQORV4L zuR$tr!)RC2MDt1GZUMvbo|_z!`9L&;(X%#{OWaG~oxLDcE$mRZs^_WqRAV{!W@w)(xU zy2`%GSytFp#okzdru)>*S)FA0ks}2kM=tiBU@e`>Qo=s8Q6cXKTh#13x3`Ox26vjNb~SO8?aj)d^xzuD-0P;akgXIRF!{q|!Ry|Z9>q`CMY!;Gw39FNc9vvLVm zXN-Xx#+g2|r)OKAn6D@MSUz(b7sRWXyX#ZvZ<-yM>n&q6u2xtEh0v{@t<)Ta+>(2a z2sS*-`W=vK%Ywyzv$Z_eIW1#owIduwYio7T>gp7+DD$$B>8Hnss#EB7h{G=%33^Es z+6x&wi{_!{?m<-ND7;Rx5!S<7n1wFeV@_HJ&tMk1?6!1~HH8Mq`wY8lgiy@JFYALw z%tn{ykcXl-{q!@o#j;u5dMoecVM};>Y}G6`BVjq~&r)A|7MfTlxqAmO*V8D8U;FS{ z*;{$d=3S?2FTr;4tnnsqH0y(&gWw+r@9=RSIlmqf41cL9aPV?t{%1??MbjJaxurMRPt*OjX8D`7 zf9UB}pDcskz&usa79{o)fL(60`TrFCP`RD|3 zKIY4I&GCHtyBfX84Z=QYavkk@dOOwW4NlY2dtUurmELd0{N36o%g`s=vb)hI)H-PA z%f-)^L?p4lTY4`?pAhXd|8l$K?~49B`O%;BV$Jv<*nm{-p>A+$`B~0Bs~lRrQB7}D zrK`nHe9hMU{&~|YPN~gKO$uLKe;{6=mc|z$%Omj#tMWjV!IZrc2-yW`t>^T-l&i@9 zM_%1~Yi8Xgl@6?K7I`#=cUx>XR!N{HLRv}7Rt8e#ge(TDdF6QzR$YNJTr%==^thu`mE8@J;Ogb+vQYUVU6X8d8yD&|huRRod<7@L$-AAjJS0iSTbfEum6`9mV zhj#vC{!T3nka#Q%k2kftYgXL_1(CMpQgAg;%Ee0mUa)JL#46LwK+6Up&-Z)Ti>y36 z(GE|{BdivtYC=bP6pI=kz-z?DOyCW9mDI-=g<50O`XkE(|AxvON1>JkH6=E5zKWeFO$kpR>!j7cD{1C64H9vaSQh$>AwnJmwm8^W02Bl_>U>^e0Q0<6V zzEiXF!)zmB5%o55ut=+QmJuO75Z0a4c^DjB_wqt9#Rsm(P)gW&7fG`d8XH~(i4xa5>;k5_3`=nnpS#Phn=4{>d zf4%Y94OtC~;ONM|R{xRl1p|eLKIuEvBZp%|6mJ&a_M3#)*=HrKCpEpYHkGRUh@q=x z&xPksOP@;I#w){j!X7VmG1qX4&Mbx7`u{~yus2}I2{mavh_^();>?BfGH%?n2-)ev=SxL;%dm4dexv-^u zb=re6cki>p=GOqt>>c(nhJt-S{SM2=IvCd#CwJ~bGqhRIejHzMsK}Ak^GxGRHp`pL zQ(uQYp0J4dv>m4`>&xnbp6D*e!BVCQzR&;BTBc3J=I}4DSKLpxwc*66I6@rHTF?7O zy&kXfYS|w#gCzPZo$Q0IKa_>#2&zR5tv)igRdvhBS~V|CZI@Xhc=l{;CwMB>_3eqe zAOS`Zx1V@=73wiML=PD)M!#r3=AUI1@1eWKFzZDhVL*}!01JSo*?wiDXJe3a6oO!7WXNG#a^Xc^m?wn)XQ8fM=9 z?Z{3b9$KzfVk^CGMHyLryI@`_6VqW{B;IC}p5G#9sqVN{x$N3n8a%S5sQxin8fd+k zqlrFx>WtKfITWpj@^i|IR`0YZZES9YYFGvQ%)E1rQ}k>@9G+d6Sk zYH=P&=7_$bV-EBlJ!quSkE9f|8sj_n`SGpYU^s3{yMr+MruE{|qZSoE)Xaj%PY!TO z-<{wo#XU1y`Zi5ptJdhVN=x5n>1(z2yZ3fmOW$Vc3zmZCMpeT)v-Il5Fj5^mj|N8f zq9eepS_-GOesdJYuS-`OwpyZ!mM~latARCl_?4`m@8|3XB5mZalegP)Z*}giN?UO3 zd1zaPVH4ZO3J1w~FSLND#nl9UO-5V9KW%*R(}|VjbsqM+{hnHva0l)87`Uy>vYac{ Tq4n-@BlbwNUp$rq+RE$yfI1rB literal 0 HcmV?d00001 diff --git a/analyze_v2.txt b/analyze_v2.txt new file mode 100644 index 0000000000000000000000000000000000000000..7d866288684276e3a702e138789339e04be8407f GIT binary patch literal 44448 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 literal 0 HcmV?d00001 diff --git a/analyze_v3.txt b/analyze_v3.txt new file mode 100644 index 0000000000000000000000000000000000000000..aba1cc195e6af0bbabb6ff89998e46c1c26ab6c8 GIT binary patch literal 42098 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 literal 0 HcmV?d00001 diff --git a/analyze_v4.txt b/analyze_v4.txt new file mode 100644 index 0000000000000000000000000000000000000000..10dca785b55c87bbf458d5d6eb9f1fb3b7b20a65 GIT binary patch literal 51870 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 literal 0 HcmV?d00001 diff --git a/analyze_v6.txt b/analyze_v6.txt new file mode 100644 index 0000000000000000000000000000000000000000..eedf301ab2d559c48a1b1f126ae98569f0569681 GIT binary patch literal 42436 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 literal 0 HcmV?d00001 diff --git a/analyze_v7.txt b/analyze_v7.txt new file mode 100644 index 0000000000000000000000000000000000000000..66334591f32df6d0ad478a0f9a3bd4d40fa80de0 GIT binary patch literal 57626 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 literal 0 HcmV?d00001 diff --git a/analyze_v9.txt b/analyze_v9.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d36592d718d8ae9fa35debebc88721a009f6817 GIT binary patch literal 41762 zcmeI5ZBHY~5y$6sqd zmy7Nhdtf{s8?Z;n4|txstE;N3{#9N5zyH3=F0;dIklkg!X6O3;Dci{Ylig(3SwFkT zhS`yR9q9Y3@VB9(&Hnv1`%T8n?n(zrN1D8DDMZ9)x4`=0I0n>G}g*b(xK_o?d<3=Zk(j4m~^x_r1y9W}D$D+R z6}`}&*oxk`6}>_$MxkF{!#ywWdqBVTvok$!Lr;eCx8eIx{oYX9?Z~Ol@9Wr!e(R{E z$2#*k9NX79gY0J=rO%f-W27@SbpA;HbwclNL(jODr_Do$?QC0=*vkGmzSpgu;dk$; z#okIr@S&cbg!T>sEe_Sj^U!wd+b12n$^NC0__JPpopYo2zvxNFVU(}#&;O@>znkbS z*PQCbC)e}?)u#8HvAogiNH0eJKr}tqIP@RnhVGaOZ>Ca#aY9y%_sV$reHfvU-c801 zbuU`{Z_)ESd}F+jyF>jSIo>&&^QZUeD)b4OUF+T>^=TCD10^riFP<_Iy$7M6*ZL)Y z#VgSZd4lh|f%CVr*W;(w}Hn`bl#zO=(9d=^ojOF zx`)}fj~tJDhQ6xG%klp3EgIxbPlJoU>K%=K75`S2EK%6 zyrpHD`3If*Qu^7|O#Jphkm}1biTBHB84|W!m(tqqs^{fHTkU9&o^r^ zo?F3Ad|CRo&UkKxIdpG4d%X;OTd$w%!MEFM!na-d?CUVEbY%;zLqB(3pxswT5A6iL zU44DKGl$*Rk>`u=eJ0GzJaqnxxEQEtKlnW$E{3LoErDY4IntFwd1;`F?)Mx856!*9 zS32us@U}LD`ufv;(H#t}9A)2RztcH4x)1ktZ_9i@o{Hz@7~eo=f%=qrfQEU3pBX}X zC5sZTk?XE?UFzrUX3SH&@(%27(|XzqIK+iKal;9$S7qMcdQ)>RP}9-fmYPHt(ulz{ z-i*JcoC(@O)L>hmEpJXo_afz@q{rWi)C2)&lA1pR4cJ^X={ESl18FECO8tP*fpGVv z`7DZ+?-5v>b4Jqq$;UXQ8pQy1Sc<#ilu#z zQ6Y;d5p9fds9u;`h&7$*`LyJ7ZkEC(jWLwI;;FP5RFv3MZ`?wQBO1c#{Q^tL_sgOx z)9_iJp$&(Hx}f)9&=GyL8QNk<9K|NX0wB)Bb>KJAGKlfW^4YpMDuGNR6WeM5`U0fZ zBY7r6#uLR}5rrC#Z3K&0&@0fVv{z;G{o>+q%~7TsP=~JQW0c8DLzO68IlnNn9q|a! zTBHtLfOHubpgV{m5+k)(Do2S-cNBAu^zCHG*Vhm|MG7qbY|@9s5v?3a-i~yQORV4L zuR$tr!)RC2MDt1GZUMvbo|_z!`9L&;(X%#{OWaG~oxLDcE$mRZs^_WqRAV{!W@w)(xU zy2`%GSytFp#okzdru)>*S)FA0ks}2kM=tiBU@e`>Qo=s8Q6cXKTh#13x3`Ox26vjNb~SO8?aj)d^xzuD-0P;akgXIRF!{q|!Ry|Z9>q`CMY!;Gw39FNc9vvLVm zXN-Xx#+g2|r)OKAn6D@MSUz(b7sRWXyX#ZvZ<-yM>n&q6u2xtEh0v{@t<)Ta+>(2a z2sS*-`W=vK%Ywyzv$Z_eIW1#owIduwYio7T>gp7+DD$$B>8Hnss#EB7h{G=%33^Es z+6x&wi{_!{?m<-ND7;Rx5!S<7n1wFeV@_HJ&tMk1?6!1~HH8Mq`wY8lgiy@JFYALw z%tn{ykcXl-{q!@o#j;u5dMoecVM};>Y}G6`BVjq~&r)A|7MfTlxqAmO*V8D8U;FS{ z*;{$d=3S?2FTr;4tnnsqH0y(&gWw+r@9=RSIlmqf41cL9aPV?t{%1??MbjJaxurMRPt*OjX8D`7 zf9UB}pDcskz&usa79{o)fL(60`TrFCP`RD|3 zKIY4I&GCHtyBfX84Z=QYavkk@dOOwW4NlY2dtUurmELd0{N36o%g`s=vb)hI)H-PA z%f-)^L?p4lTY4`?pAhXd|8l$K?~49B`O%;BV$Jv<*nm{-p>A+$`B~0Bs~lRrQB7}D zrK`nHe9hMU{&~|YPN~gKO$uLKe;{6=mc|z$%Omj#tMWjV!IZrc2-yW`t>^T-l&i@9 zM_%1~Yi8Xgl@6?K7I`#=cUx>XR!N{HLRv}7Rt8e#ge(TDdF6QzR$YNJTr%==^thu`mE8@J;Ogb+vQYUVU6X8d8yD&|huRRod<7@L$-AAjJS0iSTbfEum6`9mV zhj#vC{!T3nka#Q%k2kftYgXL_1(CMpQgAg;%Ee0mUa)JL#46LwK+6Up&-Z)Ti>y36 z(GE|{BdivtYC=bP6pI=kz-z?DOyCW9mDI-=g<50O`XkE(|AxvON1>JkH6=E5zKWeFO$kpR>!j7cD{1C64H9vaSQh$>AwnJmwm8^W02Bl_>U>^e0Q0<6V zzEiXF!)zmB5%o55ut=+QmJuO75Z0a4c^DjB_wqt9#Rsm(P)gW&7fG`d8XH~(i4xa5>;k5_3`=nnpS#Phn=4{>d zf4%Y94OtC~;ONM|R{xRl1p|eLKIuEvBZp%|6mJ&a_M3#)*=HrKCpEpYHkGRUh@q=x z&xPksOP@;I#w){j!X7VmG1qX4&Mbx7`u{~yus2}I2{mavh_^();>?BfGH%?n2-)ev=SxL;%dm4dexv-^u zb=re6cki>p=GOqt>>c(nhJt-S{SM2=IvCd#CwJ~bGqhRIejHzMsK}Ak^GxGRHp`pL zQ(uQYp0J4dv>m4`>&xnbp6D*e!BVCQzR&;BTBc3J=I}4DSKLpxwc*66I6@rHTF?7O zy&kXfYS|w#gCzPZo$Q0IKa_>#2&zR5tv)igRdvhBS~V|CZI@Xhc=l{;CwMB>_3eqe zAOS`Zx1V@=73wiML=PD)M!#r3=AUI1@1eWKFzZDhVL*}!01JSo*?wiDXJe3a6oO!7WXNG#a^Xc^m?wn)XQ8fM=9 z?Z{3b9$KzfVk^CGMHyLryI@`_6VqW{B;IC}p5G#9sqVN{x$N3n8a%S5sQxin8fd+k zqlrFx>WtKfITWpj@^i|IR`0YZZES9YYFGvQ%)E1rQ}k>@9G+d6Sk zYH=P&=7_$bV-EBlJ!quSkE9f|8sj_n`SGpYU^s3{yMr+MruE{|qZSoE)Xaj%PY!TO z-<{wo#XU1y`Zi5ptJdhVN=x5n>1(z2yZ3fmOW$Vc3zmZCMpeT)v-Il5Fj5^mj|N8f zq9eepS_-GOesdJYuS-`OwpyZ!mM~latARCl_?4`m@8|3XB5mZalegP)Z*}giN?UO3 zd1zaPVH4ZO3J1w~FSLND#nl9UO-5V9KW%*R(}|VjbsqM+{hnHva0l)87`Uy>vYac{ Tq4n-@BlbwNUp$rq+RE$yfI1rB literal 0 HcmV?d00001 diff --git a/bin/api/auth_handler.dart b/bin/api/auth_handler.dart deleted file mode 100644 index cd2da5f..0000000 --- a/bin/api/auth_handler.dart +++ /dev/null @@ -1,144 +0,0 @@ -import 'dart:convert'; -import 'package:shelf/shelf.dart'; -import 'package:shelf_router/shelf_router.dart'; -import '../database/database.dart'; - -class AuthHandler { - final AppDatabase db; - - AuthHandler(this.db); - - Router get router { - final router = Router(); - - router.post('/login', _login); - router.post('/logout', _logout); - router.get('/me', _getCurrentUser); - - return router; - } - - /// POST /api/auth/login - Future _login(Request request) async { - try { - final payload = jsonDecode(await request.readAsString()) as Map; - final username = payload['username'] as String?; - final password = payload['password'] as String?; - - if (username == null || password == null) { - return Response(400, body: jsonEncode({ - 'success': false, - 'error': 'Username and password are required', - }), headers: {'Content-Type': 'application/json'},); - } - - // Verify credentials - final user = db.verifyCredentials(username, password); - if (user == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Invalid credentials', - }), headers: {'Content-Type': 'application/json'},); - } - - // Create session - final session = db.createSession(user.id); - - return Response.ok(jsonEncode({ - 'success': true, - 'user': user.toJson(), - 'token': session.token, - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// POST /api/auth/logout - Future _logout(Request request) async { - try { - final token = _extractToken(request); - if (token == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - db.deleteSession(token); - - return Response.ok(jsonEncode({ - 'success': true, - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// GET /api/auth/me - Future _getCurrentUser(Request request) async { - try { - final token = _extractToken(request); - if (token == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - final session = db.findSessionByToken(token); - if (session == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Invalid or expired session', - }), headers: {'Content-Type': 'application/json'},); - } - - final user = db.findUserById(session.userId); - if (user == null) { - return Response(404, body: jsonEncode({ - 'success': false, - 'error': 'User not found', - }), headers: {'Content-Type': 'application/json'},); - } - - return Response.ok(jsonEncode({ - 'user': user.toJson(), - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// Extract token from Authorization header or cookie - String? _extractToken(Request request) { - // Try Authorization header first - final authHeader = request.headers['authorization']; - if (authHeader != null && authHeader.startsWith('Bearer ')) { - return authHeader.substring(7); - } - - // Try cookie - final cookie = request.headers['cookie']; - if (cookie != null) { - final parts = cookie.split(';'); - for (final part in parts) { - final trimmed = part.trim(); - if (trimmed.startsWith('session=')) { - return trimmed.substring(8); - } - } - } - - return null; - } -} diff --git a/bin/api/playlists_handler.dart b/bin/api/playlists_handler.dart deleted file mode 100644 index 5575b47..0000000 --- a/bin/api/playlists_handler.dart +++ /dev/null @@ -1,186 +0,0 @@ -import 'dart:convert'; -import 'package:shelf/shelf.dart'; -import 'package:shelf_router/shelf_router.dart'; -import '../database/database.dart'; - -class PlaylistsHandler { - final AppDatabase db; - - PlaylistsHandler(this.db); - - Router get router { - final router = Router(); - - router.get('/', _getPlaylists); - router.post('/', _createPlaylist); - router.put('/', _updatePlaylist); - router.delete('/', _deletePlaylist); - - return router; - } - - /// GET /api/playlists - Future _getPlaylists(Request request) async { - try { - final userId = request.context['userId'] as String?; - if (userId == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - final playlists = db.getPlaylists(userId); - - return Response.ok(jsonEncode({ - 'playlists': playlists.map((p) => p.toJson()).toList(), - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// POST /api/playlists - Future _createPlaylist(Request request) async { - try { - final userId = request.context['userId'] as String?; - if (userId == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - final payload = jsonDecode(await request.readAsString()) as Map; - final name = payload['name'] as String?; - final serverUrl = payload['serverUrl'] as String?; - final username = payload['username'] as String?; - final password = payload['password'] as String?; - final dns = payload['dns'] as String?; - - if (name == null || serverUrl == null || username == null || password == null) { - return Response(400, body: jsonEncode({ - 'success': false, - 'error': 'Missing required fields', - }), headers: {'Content-Type': 'application/json'},); - } - - final playlist = db.createPlaylist( - userId: userId, - name: name, - serverUrl: serverUrl, - username: username, - password: password, - dns: dns ?? serverUrl, - ); - - return Response.ok(jsonEncode({ - 'success': true, - 'playlist': playlist.toJson(), - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// PUT /api/playlists/:id - Future _updatePlaylist(Request request, String id) async { - try { - final userId = request.context['userId'] as String?; - if (userId == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - // Verify playlist belongs to user - final existing = db.getPlaylistById(id); - if (existing == null) { - return Response(404, body: jsonEncode({ - 'success': false, - 'error': 'Playlist not found', - }), headers: {'Content-Type': 'application/json'},); - } - - if (existing.userId != userId) { - return Response(403, body: jsonEncode({ - 'success': false, - 'error': 'Forbidden', - }), headers: {'Content-Type': 'application/json'},); - } - - final payload = jsonDecode(await request.readAsString()) as Map; - final name = payload['name'] as String? ?? existing.name; - final serverUrl = payload['serverUrl'] as String? ?? existing.serverUrl; - final username = payload['username'] as String? ?? existing.username; - final password = payload['password'] as String? ?? existing.password; - final dns = payload['dns'] as String? ?? existing.dns; - - final playlist = db.updatePlaylist( - playlistId: id, - name: name, - serverUrl: serverUrl, - username: username, - password: password, - dns: dns, - ); - - return Response.ok(jsonEncode({ - 'success': true, - 'playlist': playlist.toJson(), - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// DELETE /api/playlists/:id - Future _deletePlaylist(Request request, String id) async { - try { - final userId = request.context['userId'] as String?; - if (userId == null) { - return Response(401, body: jsonEncode({ - 'success': false, - 'error': 'Unauthorized', - }), headers: {'Content-Type': 'application/json'},); - } - - // Verify playlist belongs to user - final existing = db.getPlaylistById(id); - if (existing == null) { - return Response(404,body: jsonEncode({ - 'success': false, - 'error': 'Playlist not found', - }), headers: {'Content-Type': 'application/json'},); - } - - if (existing.userId != userId) { - return Response(403, body: jsonEncode({ - 'success': false, - 'error': 'Forbidden', - }), headers: {'Content-Type': 'application/json'},); - } - - db.deletePlaylist(id); - - return Response.ok(jsonEncode({ - 'success': true, - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } -} diff --git a/bin/api/settings_handler.dart b/bin/api/settings_handler.dart deleted file mode 100644 index f3876ea..0000000 --- a/bin/api/settings_handler.dart +++ /dev/null @@ -1,63 +0,0 @@ -import 'dart:convert'; -import 'package:shelf/shelf.dart'; -import 'package:shelf_router/shelf_router.dart'; -import '../database/database.dart'; - -class SettingsHandler { - final AppDatabase db; - - SettingsHandler(this.db); - - Router get router { - final router = Router(); - - // GET /api/settings - router.get('/', (Request req) { - // Get userId from context (set by auth middleware) - final userId = req.context['userId'] as String?; - if (userId == null) { - return Response.forbidden(jsonEncode({'error': 'Authentication required'})); - } - - final settingsJson = db.getUserSettings(userId); - - // If no settings exist, return empty object or default - return Response.ok( - settingsJson ?? '{}', - headers: {'content-type': 'application/json'}, - ); - }); - - // POST /api/settings - router.post('/', (Request req) async { - // Get userId from context (set by auth middleware) - final userId = req.context['userId'] as String?; - if (userId == null) { - return Response.forbidden(jsonEncode({'error': 'Authentication required'})); - } - - try { - final body = await req.readAsString(); - // Validate JSON - try { - jsonDecode(body); - } catch (e) { - return Response.badRequest(body: jsonEncode({'error': 'Invalid JSON'})); - } - - db.updateUserSettings(userId, body); - - return Response.ok( - body, - headers: {'content-type': 'application/json'}, - ); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'error': 'Failed to save settings: $e'}), - ); - } - }); - - return router; - } -} diff --git a/bin/api/users_handler.dart b/bin/api/users_handler.dart deleted file mode 100644 index de3a7e9..0000000 --- a/bin/api/users_handler.dart +++ /dev/null @@ -1,166 +0,0 @@ -import 'dart:convert'; -import 'package:shelf/shelf.dart'; -import 'package:shelf_router/shelf_router.dart'; -import '../database/database.dart'; - -class UsersHandler { - final AppDatabase db; - - UsersHandler(this.db); - - Router get router { - final router = Router(); - router.get('/', _getAllUsers); - router.post('/', _createUser); - router.put('//password', _updatePassword); - router.put('/', _updateUser); - router.delete('/', _deleteUser); - return router; - } - - /// Check if requester is admin - bool _isAdmin(Request request) { - final userId = request.context['userId'] as String?; - if (userId == null) return false; - final user = db.findUserById(userId); - return user?.isAdmin ?? false; - } - - /// GET /api/users - Future _getAllUsers(Request request) async { - try { - if (!_isAdmin(request)) { - return Response.forbidden(jsonEncode({'success': false, 'error': 'Admin required'})); - } - - final users = db.getAllUsers(); - return Response.ok(jsonEncode({ - 'success': true, - 'users': users.map((u) => u.toJson()).toList(), - }), headers: {'Content-Type': 'application/json'},); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// POST /api/users - Future _createUser(Request request) async { - try { - if (!_isAdmin(request)) { - return Response.forbidden(jsonEncode({'success': false, 'error': 'Admin required'})); - } - - final payload = jsonDecode(await request.readAsString()) as Map; - final username = payload['username'] as String?; - final password = payload['password'] as String?; - final isAdmin = payload['isAdmin'] as bool? ?? false; - - if (username == null || password == null) { - return Response.badRequest(body: jsonEncode({ - 'success': false, - 'error': 'Missing required fields', - }), headers: {'Content-Type': 'application/json'},); - } - - if (db.findUserByUsername(username) != null) { - return Response.badRequest(body: jsonEncode({ - 'success': false, - 'error': 'Username already exists', - }), headers: {'Content-Type': 'application/json'},); - } - - final user = db.createUser(username, password, isAdmin: isAdmin); - return Response.ok(jsonEncode({ - 'success': true, - 'user': user.toJson(), - }), headers: {'Content-Type': 'application/json'},); - - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// PUT /api/users/:id/password - Future _updatePassword(Request request, String id) async { - try { - if (!_isAdmin(request)) { - return Response.forbidden(jsonEncode({'success': false, 'error': 'Admin required'})); - } - - final payload = jsonDecode(await request.readAsString()) as Map; - final password = payload['password'] as String?; - - if (password == null) { - return Response.badRequest(body: jsonEncode({ - 'success': false, - 'error': 'Missing password', - }), headers: {'Content-Type': 'application/json'},); - } - - db.updateUserPassword(id, password); - return Response.ok(jsonEncode({'success': true}), headers: {'Content-Type': 'application/json'}); - - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// PUT /api/users/:id (Toggle Admin) - Future _updateUser(Request request, String id) async { - try { - if (!_isAdmin(request)) { - return Response.forbidden(jsonEncode({'success': false, 'error': 'Admin required'})); - } - - final payload = jsonDecode(await request.readAsString()) as Map; - final isAdmin = payload['isAdmin'] as bool?; - - if (isAdmin != null) { - db.updateUserAdminStatus(id, isAdmin); - } - - return Response.ok(jsonEncode({'success': true}), headers: {'Content-Type': 'application/json'}); - - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } - - /// DELETE /api/users/:id - Future _deleteUser(Request request, String id) async { - try { - if (!_isAdmin(request)) { - return Response.forbidden(jsonEncode({'success': false, 'error': 'Admin required'})); - } - - // Prevent deleting self - final currentUserId = request.context['userId'] as String; - if (currentUserId == id) { - return Response.badRequest(body: jsonEncode({ - 'success': false, - 'error': 'Cannot delete yourself', - }), headers: {'Content-Type': 'application/json'},); - } - - db.deleteUser(id); - return Response.ok(jsonEncode({'success': true}), headers: {'Content-Type': 'application/json'}); - } catch (e) { - return Response.internalServerError( - body: jsonEncode({'success': false, 'error': e.toString()}), - headers: {'Content-Type': 'application/json'}, - ); - } - } -} diff --git a/bin/database/database.dart b/bin/database/database.dart deleted file mode 100644 index c65dd19..0000000 --- a/bin/database/database.dart +++ /dev/null @@ -1,380 +0,0 @@ -import 'dart:io'; -import 'package:sqlite3/sqlite3.dart'; -import 'package:uuid/uuid.dart'; -import '../models/user.dart'; -import '../models/playlist.dart'; -import '../models/session.dart' as models; -import '../utils/password_hasher.dart'; - -class AppDatabase { - late final Database _db; - final _uuid = const Uuid(); - - /// Initialize database and create tables - Future init() async { - const dbPath = '/app/data/xtremflow.db'; - - // Ensure data directory exists - final dir = Directory('/app/data'); - if (!await dir.exists()) { - await dir.create(recursive: true); - } - - _db = sqlite3.open(dbPath); - - await _createTables(); - print('Database initialized: $dbPath'); - } - - /// Create database tables - Future _createTables() async { - // Users table - _db.execute(''' - CREATE TABLE IF NOT EXISTS users ( - id TEXT PRIMARY KEY, - username TEXT UNIQUE NOT NULL, - password_hash TEXT NOT NULL, - is_admin INTEGER DEFAULT 0, - created_at TEXT DEFAULT CURRENT_TIMESTAMP, - updated_at TEXT DEFAULT CURRENT_TIMESTAMP - ) - '''); - - // Playlists table - _db.execute(''' - CREATE TABLE IF NOT EXISTS playlists ( - id TEXT PRIMARY KEY, - user_id TEXT NOT NULL, - name TEXT NOT NULL, - server_url TEXT NOT NULL, - username TEXT NOT NULL, - password TEXT NOT NULL, - dns TEXT, - created_at TEXT DEFAULT CURRENT_TIMESTAMP, - updated_at TEXT DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE - ) - '''); - - // Sessions table - _db.execute(''' - CREATE TABLE IF NOT EXISTS sessions ( - id TEXT PRIMARY KEY, - user_id TEXT NOT NULL, - token TEXT UNIQUE NOT NULL, - expires_at TEXT NOT NULL, - created_at TEXT DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE - ) - '''); - - // User Settings table - _db.execute(''' - CREATE TABLE IF NOT EXISTS user_settings ( - user_id TEXT PRIMARY KEY, - settings_json TEXT NOT NULL, - updated_at TEXT DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE - ) - '''); - - // Indexes - _db.execute( - 'CREATE INDEX IF NOT EXISTS idx_sessions_token ON sessions(token)', - ); - _db.execute( - 'CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expires_at)', - ); - _db.execute( - 'CREATE INDEX IF NOT EXISTS idx_playlists_user ON playlists(user_id)', - ); - } - - /// Seed default admin user if no users exist - Future seedAdmin() async { - final result = _db.select('SELECT COUNT(*) as count FROM users'); - final count = result.first['count'] as int; - - if (count == 0) { - final adminId = _uuid.v4(); - final passwordHash = PasswordHasher.hash('admin'); - - _db.execute( - ''' - INSERT INTO users (id, username, password_hash, is_admin) - VALUES (?, ?, ?, 1) - ''', - [adminId, 'admin', passwordHash], - ); - - print('Default admin user created (username: admin, password: admin)'); - } - } - - // ==================== Users ==================== - - /// Find user by username - User? findUserByUsername(String username) { - final result = _db.select( - 'SELECT * FROM users WHERE username = ?', - [username], - ); - - if (result.isEmpty) return null; - return User.fromMap(result.first); - } - - /// Find user by ID - User? findUserById(String userId) { - final result = _db.select( - 'SELECT * FROM users WHERE id = ?', - [userId], - ); - - if (result.isEmpty) return null; - return User.fromMap(result.first); - } - - /// Verify user credentials - User? verifyCredentials(String username, String password) { - final result = _db.select( - 'SELECT * FROM users WHERE username = ?', - [username], - ); - - if (result.isEmpty) return null; - - final passwordHash = result.first['password_hash'] as String; - if (!PasswordHasher.verify(password, passwordHash)) { - return null; - } - - return User.fromMap(result.first); - } - - /// Create new user - User createUser(String username, String password, {bool isAdmin = false}) { - final userId = _uuid.v4(); - final passwordHash = PasswordHasher.hash(password); - - _db.execute( - ''' - INSERT INTO users (id, username, password_hash, is_admin) - VALUES (?, ?, ?, ?) - ''', - [userId, username, passwordHash, isAdmin ? 1 : 0], - ); - - return User( - id: userId, - username: username, - isAdmin: isAdmin, - createdAt: DateTime.now(), - ); - } - - /// Get all users - List getAllUsers() { - final result = _db.select('SELECT * FROM users ORDER BY username ASC'); - return result.map((row) => User.fromMap(row)).toList(); - } - - /// Update user password - void updateUserPassword(String userId, String newPassword) { - final passwordHash = PasswordHasher.hash(newPassword); - _db.execute( - 'UPDATE users SET password_hash = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?', - [passwordHash, userId], - ); - } - - /// Update user administration status - void updateUserAdminStatus(String userId, bool isAdmin) { - _db.execute( - 'UPDATE users SET is_admin = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?', - [isAdmin ? 1 : 0, userId], - ); - } - - /// Delete user - void deleteUser(String userId) { - _db.execute('DELETE FROM users WHERE id = ?', [userId]); - } - - // ==================== Sessions ==================== - - /// Create new session - models.Session createSession(String userId, {Duration? duration}) { - final sessionId = _uuid.v4(); - final token = _uuid.v4(); - final expiresAt = DateTime.now().add(duration ?? const Duration(days: 7)); - - _db.execute( - ''' - INSERT INTO sessions (id, user_id, token, expires_at) - VALUES (?, ?, ?, ?) - ''', - [sessionId, userId, token, expiresAt.toIso8601String()], - ); - - return models.Session( - id: sessionId, - userId: userId, - token: token, - expiresAt: expiresAt, - createdAt: DateTime.now(), - ); - } - - /// Find session by token - models.Session? findSessionByToken(String token) { - final result = _db.select( - 'SELECT * FROM sessions WHERE token = ?', - [token], - ); - - if (result.isEmpty) return null; - - final session = models.Session.fromMap(result.first); - - // Check if expired - if (session.isExpired) { - deleteSession(token); - return null; - } - - return session; - } - - /// Delete session (logout) - void deleteSession(String token) { - _db.execute('DELETE FROM sessions WHERE token = ?', [token]); - } - - /// Clean expired sessions - void cleanExpiredSessions() { - _db.execute( - 'DELETE FROM sessions WHERE expires_at < ?', - [DateTime.now().toIso8601String()], - ); - } - - // ==================== Playlists ==================== - - /// Get all playlists for a user - List getPlaylists(String userId) { - final result = _db.select( - 'SELECT * FROM playlists WHERE user_id = ? ORDER BY created_at DESC', - [userId], - ); - - return result.map((row) => Playlist.fromMap(row)).toList(); - } - - /// Get playlist by ID - Playlist? getPlaylistById(String playlistId) { - final result = _db.select( - 'SELECT * FROM playlists WHERE id = ?', - [playlistId], - ); - - if (result.isEmpty) return null; - return Playlist.fromMap(result.first); - } - - /// Create new playlist - Playlist createPlaylist({ - required String userId, - required String name, - required String serverUrl, - required String username, - required String password, - String? dns, - }) { - final playlistId = _uuid.v4(); - final now = DateTime.now().toIso8601String(); - - _db.execute( - ''' - INSERT INTO playlists (id, user_id, name, server_url, username, password, dns, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) - ''', - [playlistId, userId, name, serverUrl, username, password, dns, now, now], - ); - - return Playlist( - id: playlistId, - userId: userId, - name: name, - serverUrl: serverUrl, - username: username, - password: password, - dns: dns, - createdAt: DateTime.parse(now), - updatedAt: DateTime.parse(now), - ); - } - - /// Update playlist - Playlist updatePlaylist({ - required String playlistId, - required String name, - required String serverUrl, - required String username, - required String password, - String? dns, - }) { - final now = DateTime.now().toIso8601String(); - - _db.execute( - ''' - UPDATE playlists - SET name = ?, server_url = ?, username = ?, password = ?, dns = ?, updated_at = ? - WHERE id = ? - ''', - [name, serverUrl, username, password, dns, now, playlistId], - ); - - return getPlaylistById(playlistId)!; - } - - /// Delete playlist - void deletePlaylist(String playlistId) { - _db.execute('DELETE FROM playlists WHERE id = ?', [playlistId]); - } - - // ==================== User Settings ==================== - - /// Get user settings as JSON string - String? getUserSettings(String userId) { - final result = _db.select( - 'SELECT settings_json FROM user_settings WHERE user_id = ?', - [userId], - ); - - if (result.isEmpty) return null; - return result.first['settings_json'] as String; - } - - /// Update user settings - void updateUserSettings(String userId, String settingsJson) { - final now = DateTime.now().toIso8601String(); - - // UPSERT (Insert or Replace) - _db.execute( - ''' - INSERT INTO user_settings (user_id, settings_json, updated_at) - VALUES (?, ?, ?) - ON CONFLICT(user_id) DO UPDATE SET - settings_json = excluded.settings_json, - updated_at = excluded.updated_at - ''', - [userId, settingsJson, now], - ); - } - - /// Close database connection - void close() { - _db.dispose(); - } -} diff --git a/bin/middleware/auth_middleware.dart b/bin/middleware/auth_middleware.dart deleted file mode 100644 index 96327d3..0000000 --- a/bin/middleware/auth_middleware.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:shelf/shelf.dart'; -import '../database/database.dart'; - -/// Middleware to authenticate requests -Middleware authMiddleware(AppDatabase db) { - return (Handler handler) { - return (Request request) async { - // Skip auth for login endpoint - if (request.url.path.startsWith('api/auth/login')) { - return handler(request); - } - - // Extract token - final token = _extractToken(request); - if (token == null) { - return Response(401, body: 'Unauthorized'); - } - - // Verify session - final session = db.findSessionByToken(token); - if (session == null) { - return Response(401, body: 'Invalid or expired session'); - } - - // Add userId to context - final updatedRequest = request.change(context: { - ...request.context, - 'userId': session.userId, - },); - - return handler(updatedRequest); - }; - }; -} - -/// Extract token from Authorization header or cookie -String? _extractToken(Request request) { - // Try Authorization header first - final authHeader = request.headers['authorization']; - if (authHeader != null && authHeader.startsWith('Bearer ')) { - return authHeader.substring(7); - } - - // Try cookie - final cookie = request.headers['cookie']; - if (cookie != null) { - final parts = cookie.split(';'); - for (final part in parts) { - final trimmed = part.trim(); - if (trimmed.startsWith('session=')) { - return trimmed.substring(8); - } - } - } - - return null; -} diff --git a/bin/middleware/security_middleware.dart b/bin/middleware/security_middleware.dart deleted file mode 100644 index 90262ce..0000000 --- a/bin/middleware/security_middleware.dart +++ /dev/null @@ -1,110 +0,0 @@ -import 'package:shelf/shelf.dart'; -import 'dart:async'; - -/// Security Middleware Collection -/// -/// Includes: -/// - Honeypot Routes (Trap for bots) -/// - Security Headers (HSTS, XSS Protection) -/// - Rate Limiting (Basic DoS protection) - -/// 1. Security Headers Middleware -/// Adds standard security headers to every response. -Middleware securityHeadersMiddleware() { - return (Handler handler) { - return (Request request) async { - final response = await handler(request); - - return response.change(headers: { - 'X-Content-Type-Options': 'nosniff', - 'X-Frame-Options': 'SAMEORIGIN', // Changed from DENY to allow embedding player.html - 'X-XSS-Protection': '1; mode=block', - 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload', - 'Referrer-Policy': 'strict-origin-when-cross-origin', - // Note: CSP is tricky with Flutter Web (requires 'unsafe-eval' for Dart), - // so we omit it here to avoid breaking the app, or use a permissive one. - },); - }; - }; -} - -/// 2. Honeypot Middleware -/// Intercepts requests to common vulnerability scanning paths. -/// Returns a 403 Forbidden immediately and logs the incident. -Middleware honeypotMiddleware() { - // list of common bot targets - const honeypotPaths = [ - '/admin/phpmyadmin', - '/phpmyadmin', - '/wp-admin', - '/wp-login.php', - '/.env', - '/config.php', - '/api/.env', - '/console', - '/actuator/health', - ]; - - return (Handler handler) { - return (Request request) { - final path = request.url.path; - - // Check if path contains any honeypot target - for (final trap in honeypotPaths) { - if (path.contains(trap.replaceAll('/', ''))) { // Simple check - print('SECURITY ALERT: Honeypot triggered by ${request.context['clientIp'] ?? 'unknown IP'} on path: $path'); - return Response.forbidden('Access Denied'); - } - } - - return handler(request); - }; - }; -} - -/// 3. Rate Limit Middleware (In-Memory) -/// Limits requests per IP address. -/// Default: 100 requests per minute per IP. -Middleware rateLimitMiddleware({int requestsPerMinute = 200}) { - final clientRequests = >{}; - - // Cleanup timer to remove old entries and prevent memory leaks - Timer.periodic(const Duration(minutes: 5), (_) { - final now = DateTime.now(); - clientRequests.removeWhere((_, times) { - // Remove timestamps older than 1 minute - times.removeWhere((t) => now.difference(t).inMinutes > 1); - return times.isEmpty; - }); - }); - - return (Handler handler) { - return (Request request) { - // Identify client by IP (passed from main server or headers) - // Note: In real prod behind Nginx, use X-Forwarded-For - // Here we assume direct or standard setup. - final clientIp = (request.context['clientIp'] as String?) ?? 'unknown'; - - if (clientIp != 'unknown' && clientIp != '127.0.0.1') { - final now = DateTime.now(); - - // Get or create history for this IP - final history = clientRequests.putIfAbsent(clientIp, () => []); - - // Clean old requests (older than 1 minute) - history.removeWhere((t) => now.difference(t).inMinutes >= 1); - - // Check limit - if (history.length >= requestsPerMinute) { - print('SECURITY WARN: Rate limit exceeded for $clientIp'); - return Response(429, body: 'Too Many Requests'); - } - - // Add current request - history.add(now); - } - - return handler(request); - }; - }; -} diff --git a/bin/models/playlist.dart b/bin/models/playlist.dart deleted file mode 100644 index 2022e15..0000000 --- a/bin/models/playlist.dart +++ /dev/null @@ -1,65 +0,0 @@ -class Playlist { - final String id; - final String userId; - final String name; - final String serverUrl; - final String username; - final String password; - final String? dns; - final DateTime createdAt; - final DateTime updatedAt; - - Playlist({ - required this.id, - required this.userId, - required this.name, - required this.serverUrl, - required this.username, - required this.password, - this.dns, - required this.createdAt, - required this.updatedAt, - }); - - factory Playlist.fromMap(Map map) { - return Playlist( - id: map['id'] as String, - userId: map['user_id'] as String, - name: map['name'] as String, - serverUrl: map['server_url'] as String, - username: map['username'] as String, - password: map['password'] as String, - dns: map['dns'] as String?, - createdAt: DateTime.parse(map['created_at'] as String), - updatedAt: DateTime.parse(map['updated_at'] as String), - ); - } - - Map toJson() { - return { - 'id': id, - 'userId': userId, - 'name': name, - 'serverUrl': serverUrl, - 'username': username, - 'password': password, - 'dns': dns, - 'createdAt': createdAt.toIso8601String(), - 'updatedAt': updatedAt.toIso8601String(), - }; - } - - Map toMap() { - return { - 'id': id, - 'user_id': userId, - 'name': name, - 'server_url': serverUrl, - 'username': username, - 'password': password, - 'dns': dns, - 'created_at': createdAt.toIso8601String(), - 'updated_at': updatedAt.toIso8601String(), - }; - } -} diff --git a/bin/models/session.dart b/bin/models/session.dart deleted file mode 100644 index bb057b9..0000000 --- a/bin/models/session.dart +++ /dev/null @@ -1,37 +0,0 @@ -class Session { - final String id; - final String userId; - final String token; - final DateTime expiresAt; - final DateTime createdAt; - - Session({ - required this.id, - required this.userId, - required this.token, - required this.expiresAt, - required this.createdAt, - }); - - factory Session.fromMap(Map map) { - return Session( - id: map['id'] as String, - userId: map['user_id'] as String, - token: map['token'] as String, - expiresAt: DateTime.parse(map['expires_at'] as String), - createdAt: DateTime.parse(map['created_at'] as String), - ); - } - - Map toMap() { - return { - 'id': id, - 'user_id': userId, - 'token': token, - 'expires_at': expiresAt.toIso8601String(), - 'created_at': createdAt.toIso8601String(), - }; - } - - bool get isExpired => DateTime.now().isAfter(expiresAt); -} diff --git a/bin/models/user.dart b/bin/models/user.dart deleted file mode 100644 index 84bbe49..0000000 --- a/bin/models/user.dart +++ /dev/null @@ -1,31 +0,0 @@ -class User { - final String id; - final String username; - final bool isAdmin; - final DateTime createdAt; - - User({ - required this.id, - required this.username, - required this.isAdmin, - required this.createdAt, - }); - - factory User.fromMap(Map map) { - return User( - id: map['id'] as String, - username: map['username'] as String, - isAdmin: (map['is_admin'] as int) == 1, - createdAt: DateTime.parse(map['created_at'] as String), - ); - } - - Map toJson() { - return { - 'id': id, - 'username': username, - 'isAdmin': isAdmin, - 'createdAt': createdAt.toIso8601String(), - }; - } -} diff --git a/bin/pubspec.yaml b/bin/pubspec.yaml deleted file mode 100644 index ad951e4..0000000 --- a/bin/pubspec.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: xtremflow_server -description: Backend server with API proxy -publish_to: 'none' -version: 1.0.0+1 - -environment: - sdk: '>=3.0.0 <4.0.0' - -dependencies: - shelf: ^1.4.1 - shelf_static: ^1.1.2 - shelf_router: ^1.1.4 - http: ^1.2.0 - args: ^2.4.2 - sqlite3: ^2.4.0 - crypto: ^3.0.3 - uuid: ^4.3.3 diff --git a/bin/server.dart b/bin/server.dart deleted file mode 100644 index 3ceb561..0000000 --- a/bin/server.dart +++ /dev/null @@ -1,761 +0,0 @@ -import 'dart:io'; -import 'dart:async'; -import 'dart:convert'; -import 'package:shelf/shelf.dart'; -import 'package:shelf/shelf_io.dart' as shelf_io; -import 'package:shelf_static/shelf_static.dart'; -import 'package:shelf_router/shelf_router.dart'; -import 'package:http/http.dart' as http; -import 'package:args/args.dart'; -import 'database/database.dart'; -import 'models/user.dart'; -import 'api/auth_handler.dart'; -import 'api/users_handler.dart'; -import 'api/auth_handler.dart'; -import 'api/users_handler.dart'; -import 'api/playlists_handler.dart'; -import 'api/settings_handler.dart'; -import 'middleware/auth_middleware.dart'; -import 'middleware/security_middleware.dart'; -import 'services/cleanup_service.dart'; - -void main(List args) async { - // Parse command line arguments - final parser = ArgParser() - ..addOption('port', abbr: 'p', defaultsTo: '8089') - ..addOption('path', defaultsTo: '/app/web'); - - final result = parser.parse(args); - final port = int.parse(result['port']); - final webPath = result['path']; - - // Initialize database - final db = AppDatabase(); - await db.init(); - await db.seedAdmin(); - - // Create API handlers - final authHandler = AuthHandler(db); - final playlistsHandler = PlaylistsHandler(db); - final usersHandler = UsersHandler(db); - final settingsHandler = SettingsHandler(db); - - // Setup router - final apiRouter = Router() - // Auth endpoints (no auth middleware) - full path including /api/ - ..mount('/api/auth', authHandler.router) - // Playlists endpoints (with auth middleware) - ..mount( - '/api/playlists', - const Pipeline() - .addMiddleware(authMiddleware(db)) - .addHandler(playlistsHandler.router.call), - ) - // Users endpoints (with auth middleware) - ..mount( - '/api/users', - const Pipeline() - .addMiddleware(authMiddleware(db)) - .addHandler(usersHandler.router.call), - ) - // Settings endpoints (with auth middleware) - ..mount( - '/api/settings', - const Pipeline() - .addMiddleware(authMiddleware(db)) - .addHandler(settingsHandler.router.call), - ); - - // Initialize Cleanup Service - final cleanupService = CleanupService(); - // Target system temp directory (often used by FFmpeg/Dart) - cleanupService.addTarget(Directory.systemTemp); - // Target local logs/cache if they exist - cleanupService.addTarget(Directory('/app/data/logs')); - cleanupService.addTarget(Directory('/app/data/tmp')); - - cleanupService.start(); - - // Admin Routes (protected) - apiRouter.mount( - '/api/admin', - const Pipeline() - .addMiddleware(authMiddleware(db)) - .addHandler((Request request) { - final router = Router(); - - // POST /api/admin/purge - router.post('/purge', (Request req) async { - final user = req.context['user'] as User?; - if (user == null || !user.isAdmin) { - return Response.forbidden( - jsonEncode({'error': 'Admin access required'}), - ); - } - - final result = await cleanupService.runCleanup(); - return Response.ok( - jsonEncode(result), - headers: {'content-type': 'application/json'}, - ); - }); - - return router(request); - }), - ); - - // Create handlers - // Create static handler - final baseStaticHandler = createStaticHandler( - webPath, - defaultDocument: 'index.html', - listDirectories: false, - ); - - // Wrap static handler to enforce cache policies - FutureOr staticHandler(Request request) async { - final response = await baseStaticHandler(request); - - // Disable cache for entry points to ensure updates are seen immediately - final path = request.url.path; - if (path.isEmpty || - path == 'index.html' || - path.endsWith( - '.js', - ) || // Disable cache for ALL JS files (main.dart.js, bootstrap, etc) - path.endsWith('.json')) { - // version.json etc - return response.change( - headers: { - 'Cache-Control': 'no-store, no-cache, must-revalidate, max-age=0', - 'Pragma': 'no-cache', - 'Expires': '0', - }, - ); - } - - // Allow aggressive caching for hashed assets (images, compiled JS) - // Flutter web builds usually hash main.dart.js, but let's be safe with 1 day - return response.change( - headers: { - 'Cache-Control': 'public, max-age=86400', - }, - ); - } - - // Main handler with API proxy and FFmpeg streaming - final handler = Cascade() - .add(_createApiHandler(apiRouter)) - .add(_createStreamHandler()) // FFmpeg streaming endpoint - .add(_createXtreamProxyHandler()) - // .add(_createHlsHandler()) // REMOVED: HLS obsolete with direct stream - .add(staticHandler) - .handler; - - // Add middleware - final pipeline = const Pipeline() - .addMiddleware(logRequests()) - .addMiddleware(securityHeadersMiddleware()) // Basic Headers - .addMiddleware(honeypotMiddleware()) // Trap Bots - .addMiddleware(rateLimitMiddleware()) // Anti-DoS - .addMiddleware(_corsMiddleware()) - .addHandler(handler); - - // Start server - final server = await shelf_io.serve( - pipeline, - InternetAddress.anyIPv4, - port, - ); - - print('Server started on port ${server.port}'); - print('Serving static files from: $webPath'); - print('REST API available at: /api/auth/* and /api/playlists/*'); - print('Xtream proxy available at: /api/xtream/*'); - print('FFmpeg streaming available at: /api/stream/*'); - - // Clean expired sessions periodically (every hour) - Timer.periodic(const Duration(hours: 1), (_) { - db.cleanExpiredSessions(); - print('Cleaned expired sessions'); - }); -} - -/// Create API handler -Handler _createApiHandler(Router apiRouter) { - return (Request request) async { - final path = request.url.path; - - // Only handle /api/* requests (excluding /api/xtream) - if (path.startsWith('api/') && !path.startsWith('api/xtream/')) { - return apiRouter(request); - } - - return Response.notFound('Not found'); - }; -} - -/// CORS middleware to allow cross-origin requests -Middleware _corsMiddleware() { - return (Handler handler) { - return (Request request) async { - // Handle preflight requests - if (request.method == 'OPTIONS') { - return Response.ok('', headers: _corsHeaders); - } - - // Process request and add CORS headers to response - final response = await handler(request); - return response.change(headers: _corsHeaders); - }; - }; -} - -final _corsHeaders = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', - 'Access-Control-Allow-Headers': 'Origin, Content-Type, Accept, Authorization', -}; - -/// Create Xtream proxy handler with M3U8 URL rewriting support -Handler _createXtreamProxyHandler() { - return (Request request) async { - final path = request.url.path; - - // Only handle /api/xtream/* requests - if (!path.startsWith('api/xtream/')) { - return Response.notFound('Not found'); - } - - try { - // Extract target URL from request - // Format: /api/xtream/http://server:port/path - // Note: URL might be URL-encoded (e.g., http%3A%2F%2F...) - String apiPath = path.substring('api/xtream/'.length); - - // Decode URL if it's encoded (http%3A%2F%2F -> http://) - if (apiPath.startsWith('http%3A') || apiPath.startsWith('https%3A')) { - apiPath = Uri.decodeComponent(apiPath); - } - - // The client will send the full URL after /api/xtream/ - if (!apiPath.startsWith('http://') && !apiPath.startsWith('https://')) { - return Response.badRequest( - body: 'Invalid API URL. Expected format: /api/xtream/http://...', - ); - } - - // Reconstruct the full target URL with query parameters - String fullUrl = apiPath; - if (request.url.query.isNotEmpty) { - // If the target URL already has query params, append with & - if (fullUrl.contains('?')) { - fullUrl = '$fullUrl&${request.url.query}'; - } else { - fullUrl = '$fullUrl?${request.url.query}'; - } - } - - final targetUrl = Uri.parse(fullUrl); - final baseUrl = - '${targetUrl.scheme}://${targetUrl.host}${targetUrl.hasPort ? ':${targetUrl.port}' : ''}'; - - // Check if this is a video file that needs streaming - final lowerPath = targetUrl.path.toLowerCase(); - final isVideoFile = lowerPath.endsWith('.mp4') || - lowerPath.endsWith('.mkv') || - lowerPath.endsWith('.avi') || - lowerPath.endsWith('.ts') || - lowerPath.endsWith('.m4v') || - lowerPath.contains('/movie/') || - lowerPath.contains('/series/'); - - print('Proxying request to: $targetUrl (video streaming: $isVideoFile)'); - - // For video files, use streaming with Range support for seeking - if (isVideoFile) { - final rangeHeader = request.headers['range']; - return _streamVideoFile(targetUrl, rangeHeader); - } - - // Headers to simulate a legitimate IPTV client (VLC/Kodi style) - final proxyHeaders = { - 'User-Agent': 'VLC/3.0.18 LibVLC/3.0.18', - 'Accept': '*/*', - 'Accept-Encoding': 'identity', - 'Connection': 'keep-alive', - 'Icy-MetaData': '1', - }; - - // Use simple http.get/post for non-video content - http.Response response; - if (request.method == 'GET') { - response = await http.get(targetUrl, headers: proxyHeaders).timeout( - const Duration(seconds: 30), - onTimeout: () => http.Response('Request timeout', 504), - ); - } else if (request.method == 'POST') { - final body = await request.readAsString(); - response = await http - .post(targetUrl, headers: proxyHeaders, body: body) - .timeout( - const Duration(seconds: 30), - onTimeout: () => http.Response('Request timeout', 504), - ); - } else { - return Response(405, body: 'Method not allowed'); - } - - // Check if this is an M3U8/HLS playlist that needs URL rewriting - final contentType = response.headers['content-type'] ?? ''; - final isM3u8 = fullUrl.endsWith('.m3u8') || - contentType.contains('application/vnd.apple.mpegurl') || - contentType.contains('application/x-mpegurl') || - contentType.contains('audio/mpegurl'); - - if (isM3u8 && response.statusCode == 200) { - // Rewrite URLs in M3U8 playlist to go through proxy - final rewrittenBody = _rewriteM3u8Urls( - response.body, - baseUrl, - targetUrl.path, - request.requestedUri.origin, - ); - - print('Rewrote M3U8 playlist URLs for: $targetUrl'); - - return Response( - response.statusCode, - body: rewrittenBody, - headers: { - 'content-type': 'application/vnd.apple.mpegurl', - 'access-control-allow-origin': '*', - }, - ); - } - - return Response( - response.statusCode, - body: response.bodyBytes, - headers: { - 'content-type': - response.headers['content-type'] ?? 'application/json', - 'access-control-allow-origin': '*', - // Forward cache headers from upstream - if (response.headers.containsKey('cache-control')) - 'cache-control': response.headers['cache-control']!, - if (response.headers.containsKey('expires')) - 'expires': response.headers['expires']!, - if (response.headers.containsKey('etag')) - 'etag': response.headers['etag']!, - if (response.headers.containsKey('last-modified')) - 'last-modified': response.headers['last-modified']!, - }, - ); - } catch (e, stackTrace) { - print('Proxy error: $e'); - print(stackTrace); - return Response.internalServerError( - body: jsonEncode({'error': 'Proxy error', 'message': e.toString()}), - headers: {'content-type': 'application/json'}, - ); - } - }; -} - -/// Stream video file using HttpClient with Range support for seeking -Future _streamVideoFile(Uri targetUrl, String? rangeHeader) async { - const maxRedirects = 5; - var currentUrl = targetUrl; - final cookies = {}; // Cookie Jar for redirects - - print('Stream Request: $targetUrl'); - if (rangeHeader != null) print('Client Requested Range: $rangeHeader'); - - for (var i = 0; i < maxRedirects; i++) { - try { - final client = HttpClient(); - // Increase timeouts for large video files - client.connectionTimeout = const Duration(seconds: 60); - client.idleTimeout = const Duration(minutes: 5); - - final req = await client.getUrl(currentUrl); - req.followRedirects = false; // We handle redirects manually - - req.headers.set('User-Agent', 'VLC/3.0.18 LibVLC/3.0.18'); - req.headers.set('Accept', '*/*'); - req.headers.set('Connection', 'keep-alive'); - req.headers.set('Accept-Encoding', 'identity'); - - // Apply collected cookies - if (cookies.isNotEmpty) { - final cookieHeader = - cookies.entries.map((e) => '${e.key}=${e.value}').join('; '); - req.headers.set(HttpHeaders.cookieHeader, cookieHeader); - } - - // Forward request headers - if (rangeHeader != null && rangeHeader.isNotEmpty) { - if (!rangeHeader.startsWith('bytes=')) { - rangeHeader = 'bytes=$rangeHeader'; - } - req.headers.set(HttpHeaders.rangeHeader, rangeHeader); - } - - client.autoUncompress = false; - - final response = await req.close(); - print('Upstream Response: ${response.statusCode} (Redirect $i)'); - - // Collect Cookies from response - for (var cookie in response.cookies) { - cookies[cookie.name] = cookie.value; - } - - // Handle Redirects (301, 302, 303, 307, 308) - if (response.statusCode >= 300 && response.statusCode < 400) { - final location = response.headers.value(HttpHeaders.locationHeader); - if (location != null) { - print('Redirecting stream to: $location'); - currentUrl = Uri.parse(location); - await response.drain(); // Drain body to release connection - continue; // Loop to next request - } - } - - // Get content type - final contentType = response.headers.contentType?.mimeType ?? 'video/mp4'; - - // Build response headers - final responseHeaders = { - 'content-type': contentType, - 'access-control-allow-origin': '*', - 'accept-ranges': 'bytes', - 'cache-control': 'no-cache', - 'connection': 'keep-alive', - }; - - // Checks for 206 vs 200 - if (response.statusCode == 200 && rangeHeader != null) { - print( - 'WARNING: Upstream ignored Range header and returned 200. Seeking might fail.', - ); - } else if (response.statusCode == 206) { - print('SUCCESS: Upstream returned 206 Partial Content.'); - } - - // Add Content-Length if available - if (response.contentLength > 0) { - responseHeaders['content-length'] = response.contentLength.toString(); - } - - // Add Content-Range if this is a partial response (206) - final contentRange = - response.headers.value(HttpHeaders.contentRangeHeader); - if (contentRange != null) { - responseHeaders[HttpHeaders.contentRangeHeader] = contentRange; - } - - // Propagate Accept-Ranges - responseHeaders[HttpHeaders.acceptRangesHeader] = 'bytes'; - - // Return appropriate status code - return Response( - response.statusCode, - body: response, - headers: responseHeaders, - ); - } catch (e) { - print('Video streaming exception: $e'); - if (i == maxRedirects - 1) { - return Response.internalServerError( - body: jsonEncode( - {'error': 'Video streaming error', 'message': e.toString()}, - ), - headers: {'content-type': 'application/json'}, - ); - } - } - } - - return Response.internalServerError(body: 'Too many redirects'); -} - -/// Rewrite URLs in M3U8 playlist to go through the proxy -/// -/// Handles both relative and absolute URLs in HLS playlists -String _rewriteM3u8Urls( - String m3u8Content, - String baseUrl, - String originalPath, - String proxyOrigin, -) { - final lines = m3u8Content.split('\n'); - final rewrittenLines = []; - - // Get directory path for relative URL resolution - final pathSegments = originalPath.split('/'); - pathSegments.removeLast(); // Remove filename - final basePath = pathSegments.join('/'); - - for (final line in lines) { - final trimmedLine = line.trim(); - - // Skip empty lines and comments (except URI in comments) - if (trimmedLine.isEmpty) { - rewrittenLines.add(line); - continue; - } - - // Handle lines that contain URLs (not starting with #, or EXT-X-KEY/EXT-X-MAP with URI) - if (!trimmedLine.startsWith('#')) { - // This is a segment URL - final rewrittenUrl = - _rewriteUrl(trimmedLine, baseUrl, basePath, proxyOrigin); - rewrittenLines.add(rewrittenUrl); - } else if (trimmedLine.contains('URI="')) { - // Handle EXT-X-KEY, EXT-X-MAP, etc. with URI attribute - final rewrittenLine = trimmedLine.replaceAllMapped( - RegExp(r'URI="([^"]+)"'), - (match) { - final uri = match.group(1)!; - final rewrittenUri = _rewriteUrl(uri, baseUrl, basePath, proxyOrigin); - return 'URI="$rewrittenUri"'; - }, - ); - rewrittenLines.add(rewrittenLine); - } else { - rewrittenLines.add(line); - } - } - - return rewrittenLines.join('\n'); -} - -/// Rewrite a single URL to go through the proxy -String _rewriteUrl( - String url, - String baseUrl, - String basePath, - String proxyOrigin, -) { - String fullUrl; - - if (url.startsWith('http://') || url.startsWith('https://')) { - // Already absolute URL - fullUrl = url; - } else if (url.startsWith('/')) { - // Absolute path, relative to server root - fullUrl = '$baseUrl$url'; - } else { - // Relative path, relative to current directory - fullUrl = '$baseUrl$basePath/$url'; - } - - // Wrap with proxy - return '$proxyOrigin/api/xtream/$fullUrl'; -} - -// ============================================ -// FFmpeg Stream Transcoding Handler -// ============================================ - -/// Active FFmpeg processes by stream ID -final Map _activeStreams = {}; - -/// Create handler for FFmpeg streaming -/// -/// This endpoint starts an FFmpeg process that connects to the IPTV server -/// with proper headers and transcodes the stream to local HLS files. -Handler _createStreamHandler() { - return (Request request) async { - final path = request.url.path; - - // Only handle /api/stream/* requests - if (!path.startsWith('api/stream/')) { - return Response.notFound('Not found'); - } - - try { - // Extract stream ID - final pathParts = path.split('/'); - if (pathParts.length < 3) { - return Response.badRequest(body: 'Invalid stream path'); - } - - final streamId = pathParts[2]; - - // Get parameters - final iptvUrl = request.url.queryParameters['url']; - final quality = request.url.queryParameters['quality'] ?? 'high'; - final start = - request.url.queryParameters['start']; // Start time in seconds - - if (iptvUrl == null || iptvUrl.isEmpty) { - return Response.badRequest(body: 'Missing url parameter'); - } - - print('Starting Direct Stream for ID: $streamId'); - print('Source: $iptvUrl'); - - // Setup FFmpeg arguments for fMP4 piping - // Determine if it's VOD or Live - final isVod = streamId.startsWith('vod_'); // Or use extension check - - final ffmpegArgs = [ - '-hide_banner', - '-loglevel', 'warning', // Show warnings too for debugging long streams - '-user_agent', 'VLC/3.0.18 LibVLC/3.0.18', - '-headers', - 'Accept: */*\r\nConnection: keep-alive\r\nIcy-MetaData: 0\r\n', - - // ENHANCED Input resilience flags for LONG streaming - '-reconnect', '1', - '-reconnect_streamed', '1', - '-reconnect_delay_max', - '30', // Increased to 30s max delay between reconnects - '-reconnect_on_network_error', '1', - '-reconnect_on_http_error', '4xx,5xx', - '-reconnect_at_eof', - '1', // Reconnect at stream end (some streams reset) - '-rw_timeout', '30000000', // 30s timeout (doubled) - '-timeout', '60000000', // 60s global timeout - - // Keep TCP connection alive - '-tcp_nodelay', '1', - - // Probing settings to ensure stream detection - '-analyzeduration', '30000000', // 30s (increased) - '-probesize', '20000000', // 20MB (doubled) - '-fflags', - '+discardcorrupt', // Skip corrupted frames instead of failing - - '-i', iptvUrl, - - // Output format: MPEG-TS for streaming (compatible with mpegts.js) - '-f', 'mpegts', - ]; - - // Add seeking support if start time is provided - if (start != null && start.isNotEmpty) { - // Insert -ss before -i for faster seeking (input seeking) - final inputIndex = ffmpegArgs.indexOf('-i'); - if (inputIndex != -1) { - ffmpegArgs.insertAll(inputIndex, ['-ss', start]); - } - } - - // Video: Transcode based on quality - // High = Copy (efficient), Low/Medium = Transcode to H.264 (compatible) - if (quality == 'high') { - ffmpegArgs.addAll(['-c:v', 'copy']); - } else { - // Transcode to H.264 (Baseline profile for max mobile compatibility) - ffmpegArgs.addAll([ - '-c:v', 'libx264', - '-preset', 'ultrafast', // Critical for live streaming - '-tune', 'zerolatency', - '-profile:v', 'baseline', - '-level', '3.0', - '-pix_fmt', 'yuv420p', // Ensure standard pixel format for web - '-g', '60', // Keyframe interval (2s at 30fps) for seeking - ]); - - if (quality == 'low') { - // Low: ~480p, 800k - ffmpegArgs.addAll([ - '-vf', - 'scale=-2:480', - '-b:v', - '800k', - '-maxrate', - '800k', - '-bufsize', - '1600k', - ]); - } else { - // Medium: Original res (or cap at 720p?), 2500k - ffmpegArgs.addAll([ - '-b:v', - '2500k', - '-maxrate', - '2500k', - '-bufsize', - '5000k', - ]); - } - } - - // Audio: Transcode to AAC is SAFEST for browsers - // (Many IPTV streams typically use MP2/AC3 which browsers hate) - ffmpegArgs.addAll([ - '-c:a', 'aac', - '-b:a', '128k', - '-ar', '44100', - '-ac', '2', - - // Fix for MPEG-TS timestamps - '-fflags', '+genpts', - - // Output to stdout pipe - 'pipe:1', - ]); - - // Start the process - final process = await Process.start('ffmpeg', ffmpegArgs); - - // Manage process lifecycle - // We use a StreamController to pipe stdout to the response - // AND detect when the client disconnects to kill the process. - final controller = StreamController>(); - - // Pipe stdout to controller - process.stdout.listen( - (data) { - if (!controller.isClosed) controller.add(data); - }, - onError: (e) { - print('FFmpeg stdout error: $e'); - if (!controller.isClosed) controller.addError(e); - }, - onDone: () { - print('FFmpeg process finished for $streamId'); - if (!controller.isClosed) controller.close(); - }, - ); - - // Log stderr for debug - process.stderr.transform(utf8.decoder).listen((data) { - if (data.contains('Error') || data.contains('error')) { - print('FFmpeg Error [$streamId]: $data'); - } - }); - - // CLEANUP: When the HTTP client disconnects, the stream subscription - // will be cancelled. We MUST kill the FFmpeg process then. - controller.onCancel = () { - print('Client disconnected for $streamId. Killing FFmpeg...'); - process.kill(); - }; - - return Response.ok( - controller.stream, - headers: { - 'Content-Type': 'video/MP2T', - 'Access-Control-Allow-Origin': '*', - 'Cache-Control': 'no-cache, no-store', - 'Connection': 'keep-alive', - }, - ); - } catch (e, stackTrace) { - print('Stream setup error: $e'); - print(stackTrace); - return Response.internalServerError( - body: jsonEncode( - {'error': 'Stream setup error', 'message': e.toString()}, - ), - headers: {'content-type': 'application/json'}, - ); - } - }; -} diff --git a/bin/services/cleanup_service.dart b/bin/services/cleanup_service.dart deleted file mode 100644 index 7a46f72..0000000 --- a/bin/services/cleanup_service.dart +++ /dev/null @@ -1,109 +0,0 @@ -import 'dart:io'; -import 'dart:async'; - -class CleanupService { - final List _targetDirectories = []; - Timer? _timer; - final Duration _defaultMaxAge; - - CleanupService({Duration defaultMaxAge = const Duration(hours: 24)}) - : _defaultMaxAge = defaultMaxAge; - - /// Add a directory to be monitored - void addTarget(Directory dir) { - if (!dir.existsSync()) { - try { - dir.createSync(recursive: true); - print('CleanupService: Created missing directory: ${dir.path}'); - } catch (e) { - print('CleanupService: Should monitor ${dir.path} but it does not exist and could not be created: $e'); - return; - } - } - _targetDirectories.add(dir); - print('CleanupService: Monitoring ${dir.path}'); - } - - /// Start the periodic cleanup task - void start({Duration interval = const Duration(hours: 6)}) { - _timer?.cancel(); - print('CleanupService: Starting scheduler (Interval: ${interval.inHours}h)'); - - // Run immediately on start - runCleanup(); - - _timer = Timer.periodic(interval, (_) => runCleanup()); - } - - /// Stop the scheduler - void stop() { - _timer?.cancel(); - print('CleanupService: Scheduler stopped'); - } - - /// Trigger a manual cleanup - Future> runCleanup() async { - print('CleanupService: Running cleanup task...'); - int deletedCount = 0; - int freedBytes = 0; - List errors = []; - - for (final dir in _targetDirectories) { - if (!dir.existsSync()) continue; - - try { - final result = await _cleanDirectory(dir, _defaultMaxAge); - deletedCount += result.count; - freedBytes += result.bytes; - } catch (e) { - print('CleanupService: Error processing ${dir.path}: $e'); - errors.add('Error in ${dir.path}: $e'); - } - } - - final summary = { - 'status': 'complete', - 'deleted_files': deletedCount, - 'freed_bytes': freedBytes, - 'timestamp': DateTime.now().toIso8601String(), - 'errors': errors, - }; - - print('CleanupService: Cleanup complete. Deleted $deletedCount files, freed ${(freedBytes / 1024 / 1024).toStringAsFixed(2)} MB'); - return summary; - } - - Future<({int count, int bytes})> _cleanDirectory(Directory dir, Duration maxAge) async { - int count = 0; - int bytes = 0; - final now = DateTime.now(); - final threshold = now.subtract(maxAge); - - try { - await for (final entity in dir.list(recursive: true, followLinks: false)) { - if (entity is File) { - try { - final stat = await entity.stat(); - // Check Modified AND Accessed time (if available) to be safe - // Ideally we use modified time for temp files - if (stat.modified.isBefore(threshold)) { - final fileSize = stat.size; - await entity.delete(); - count++; - bytes += fileSize; - // print('CleanupService: Deleted ${entity.path} (Age: ${now.difference(stat.modified).inHours}h)'); - } - } catch (e) { - // Ignore individual file errors (locked files etc) - // print('CleanupService: Failed to delete ${entity.path}: $e'); - } - } - } - } catch (e) { - print('CleanupService: Failed to list ${dir.path}: $e'); - rethrow; - } - - return (count: count, bytes: bytes); - } -} diff --git a/bin/utils/password_hasher.dart b/bin/utils/password_hasher.dart deleted file mode 100644 index ba4d109..0000000 --- a/bin/utils/password_hasher.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'dart:convert'; -import 'package:crypto/crypto.dart'; - -class PasswordHasher { - /// Hash a password using SHA256 (simple implementation) - /// Note: In production, use a proper bcrypt implementation - static String hash(String password) { - final bytes = utf8.encode(password); - final digest = sha256.convert(bytes); - return digest.toString(); - } - - /// Verify a password against a hash - static bool verify(String password, String hash) { - return PasswordHasher.hash(password) == hash; - } -} diff --git a/build_apk_log.txt b/build_apk_log.txt new file mode 100644 index 0000000000000000000000000000000000000000..a7999ad0994fac167012dfaee2bbdb8f343808ba GIT binary patch literal 1002 zcmbu8OG^VW6ot=P@IQ>M6m7ws=t{Jr_`=6dMaG)eL2Zjp#cuq){tERw$%Kla2ofeY zxzBS??tHxWbg!{$R?wpgt?`{}PM63-4cTWkqYVvogMFw9S?E+-+C%oxjH9j1?F^4e z6Y)eoXRWaI(bc*|ld~NXf1)GpBCoW==|G*v8i;r%&eaBbAZkE#fv!YXv0sBZsNEnN zW9vp+iLCX8mn-e#+b1^A(+YQY=3Z90SuSyJ$5nh`;DYSNJg@b}|2sq1cvm1W52Z%B zYy4Vj#mdH3%KfK$*4GhVA6?CDM0Cl?>^;(9@++x2<+v3iY)cq3;sVWY>s5Iz z{~zHD8J+pvjC}^)!JSTc??LQ3`=rjNw|w$jdHQN5Z3Jsw81M1fo@)fyvfskDdHp)8 zDPM~4dnGP^o~m5m5uUI$>enDoQ@luqbN-BF Process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 48s +Running Gradle task 'assembleRelease'... 49,2s +Gradle task assembleRelease failed with exit code 1 +Running Gradle task 'assembleRelease'... +Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 6416 bytes (99.6% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app. +Checking the license for package CMake 3.22.1 in C:\Android\licenses +License for package CMake 3.22.1 accepted. +Preparing "Install CMake 3.22.1 v.3.22.1". +"Install CMake 3.22.1 v.3.22.1" ready. +Installing CMake 3.22.1 in C:\Android\cmake\3.22.1 +"Install CMake 3.22.1 v.3.22.1" complete. +"Install CMake 3.22.1 v.3.22.1" finished. +Running Gradle task 'assembleRelease'... 177,3s +√ Built build\app\outputs\flutter-apk\app-release.apk (93.5MB) diff --git a/build_error_fatale.txt b/build_error_fatale.txt new file mode 100644 index 0000000000000000000000000000000000000000..68549e7a958b1a0b960ce4c6e3c0b4c7c24c848d GIT binary patch literal 132314 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 literal 0 HcmV?d00001 diff --git a/build_error_log.txt b/build_error_log.txt new file mode 100644 index 0000000000000000000000000000000000000000..78cfbfba3ef6f4e65ae567045e11356b11a79a94 GIT binary patch literal 153254 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 literal 0 HcmV?d00001 diff --git a/build_final_log.txt b/build_final_log.txt new file mode 100644 index 0000000000000000000000000000000000000000..f4f2fcf66962e66136bbbc3afd3c1b75c3a3be1a GIT binary patch literal 148324 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 Configure project :gradle +[ ] Evaluating project ':gradle' using build file 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\build.gradle.kts'. +[ ] Resolved plugin [id: 'org.gradle.java-gradle-plugin'] +[ ] Resolved plugin [id: 'org.gradle.groovy'] +[ ] Resolved plugin [id: 'org.gradle.kotlin.kotlin-dsl', version: '5.2.0'] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.jvm', version: '1.9.20'] +[ ] Using Kotlin Gradle Plugin gradle85 variant +[ ] kotlin scripting plugin: created the scripting discovery configuration: kotlinScriptDef +[ ] kotlin scripting plugin: created the scripting discovery configuration: testKotlinScriptDef +[ ] file or directory 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\src\main\java', not found +[ ] Resolved plugin [id: 'dev.flutter.flutter-plugin-loader', version: '1.0.0'] +[ ] Resolved plugin [id: 'com.android.application', version: '8.11.1', apply: false] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.android', version: '2.2.20', apply: false] +[ ] Resolve mutations for :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker,5,main]) started. +[ ] :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :gradle:checkKotlinGradlePluginConfigurationErrors SKIPPED +[ ] Skipping task ':gradle:checkKotlinGradlePluginConfigurationErrors' as task onlyIf 'errorDiagnostics are present' is false. +[ ] Resolve mutations for :gradle:compileKotlin (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:compileKotlin (Thread[Execution worker Thread 9,5,main]) started. +[ +294 ms] > Task :gradle:compileKotlin UP-TO-DATE +[ ] Caching disabled for task ':gradle:compileKotlin' because: +[ ] Build cache is disabled +[ ] Skipping task ':gradle:compileKotlin' as it is up-to-date. +[ ] Resolve mutations for :gradle:compileJava (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:compileJava (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :gradle:compileJava NO-SOURCE +[ ] Skipping task ':gradle:compileJava' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:compileGroovy (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:compileGroovy (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :gradle:compileGroovy NO-SOURCE +[ ] Skipping task ':gradle:compileGroovy' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:pluginDescriptors (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:pluginDescriptors (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :gradle:pluginDescriptors UP-TO-DATE +[ ] Caching disabled for task ':gradle:pluginDescriptors' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:pluginDescriptors' as it is up-to-date. +[ ] Resolve mutations for :gradle:processResources (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:processResources (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :gradle:processResources UP-TO-DATE +[ ] Caching disabled for task ':gradle:processResources' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:processResources' as it is up-to-date. +[ ] Resolve mutations for :gradle:classes (Thread[Execution worker Thread 9,5,main]) started. +[ ] :gradle:classes (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:classes UP-TO-DATE +[ ] Skipping task ':gradle:classes' as it has no actions. +[ ] Resolve mutations for :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:jar UP-TO-DATE +[ ] Caching disabled for task ':gradle:jar' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:jar' as it is up-to-date. +[ +801 ms] Settings evaluated using settings file 'C:\GIT\xtremobile\android\settings.gradle.kts'. +[ ] Projects loaded. Root project using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ ] Included projects: [root project 'android', project ':app', project ':media_kit_libs_android_video', project ':media_kit_video', project ':package_info_plus', project ':path_provider_android', project ':screen_brightness_android', project ':shared_preferences_android', project ':sqflite_android', project ':video_player_android', project ':volume_controller', project ':wakelock_plus'] +[ +201 ms] > Configure project :app +[ ] Evaluating project ':app' using build file 'C:\GIT\xtremobile\android\app\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.application'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Resolved plugin [id: 'dev.flutter.flutter-gradle-plugin'] +[ ] Using default execution profile +[ ] Build d559a287-302a-4091-a5f6-dbfa6cdce5ae is started +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] > Configure project : +[ ] Evaluating root project 'android' using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ +485 ms] > Configure project :media_kit_libs_android_video +[ ] Evaluating project ':media_kit_libs_android_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\android\build.gradle'. +[ ] Using default execution profile +[ ] > Configure project :media_kit_video +[ ] Evaluating project ':media_kit_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\android\build.gradle'. +[ ] Using default execution profile +[ +405 ms] > Configure project :package_info_plus +[ ] Evaluating project ':package_info_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +291 ms] > Configure project :path_provider_android +[ ] Evaluating project ':path_provider_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Using default execution profile +[ +604 ms] > Configure project :screen_brightness_android +[ ] Evaluating project ':screen_brightness_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +203 ms] > Configure project :shared_preferences_android +[ ] Evaluating project ':shared_preferences_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] > Configure project :sqflite_android +[ ] Evaluating project ':sqflite_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\android\build.gradle'. +[ ] Using default execution profile +[ +91 ms] > Configure project :video_player_android +[ ] Evaluating project ':video_player_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +699 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +93 ms] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +406 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 11,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 11,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 11,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 11,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 11,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 11,5,main]) started. +[ ] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 11,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 11,5,main]) started. +[+1995 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +134 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +7 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +34 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +2 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +20 ms] Initializing file store +[ ] [ +1 ms] Done initializing file store +[ ] [ +14 ms] Skipping target: gen_dart_plugin_registrant +[ ] [ +2 ms] Skipping target: dart_build +[ ] [ ] Skipping target: gen_localizations +[ ] [ +1 ms] Skipping target: install_code_assets +[ ] [ +15 ms] kernel_snapshot_program: Starting due to {InvalidatedReasonKind.outputSetAddition: The following outputs were added to the output set: C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill, InvalidatedReasonKind.inputChanged: The following inputs have updated contents: C:\Users\Bureau\dart\flutter\packages\flutter_tools\lib\src\build_system\targets\common.dart,C:\Users\Bureau\dart\flutter\bin\cache\engine.stamp,C:\Users\Bureau\dart\flutter\bin\cache\engine.stamp,C:\Users\Bureau\dart\flutter\bin\cache\engine.stamp,C:\Users\Bureau\dart\flutter\bin\cache\engine.stamp} +[ ] [ +11 ms] C:\Users\Bureau\dart\flutter\bin\cache\dart-sdk\bin\dartaotruntime.exe C:\Users\Bureau\dart\flutter\bin\cache\dart-sdk\bin\snapshots\frontend_server_aot.dart.snapshot --sdk-root C:\Users\Bureau\dart\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk_product/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_VERSION=3.41.5 -DFLUTTER_CHANNEL=stable -DFLUTTER_GIT_URL=https://github.com/flutter/flutter.git -DFLUTTER_FRAMEWORK_REVISION=2c9eb20739 -DFLUTTER_ENGINE_REVISION=052f31d115 -DFLUTTER_DART_VERSION=3.11.3 -DFLUTTER_APP_FLAVOR= -Ddart.vm.profile=false -Ddart.vm.product=true --delete-tostring-package-uri=dart:ui --delete-tostring-package-uri=package:flutter --aot --tfa --target-os android --packages C:\GIT\xtremobile\.dart_tool\package_config.json --output-dill C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill --depfile C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\kernel_snapshot_program.d --source file:///C:/GIT/xtremobile/.dart_tool/flutter_build/dart_plugin_registrant.dart --source package:flutter/src/dart_plugin_registrant.dart -Dflutter.dart_plugin_registrant=file:///C:/GIT/xtremobile/.dart_tool/flutter_build/dart_plugin_registrant.dart --verbosity=error package:xtremflow/main.dart diff --git a/build_ndk_last_100.txt b/build_ndk_last_100.txt new file mode 100644 index 0000000..b374fb4 --- /dev/null +++ b/build_ndk_last_100.txt @@ -0,0 +1,100 @@ +[ +97 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +216 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 8,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 8,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 8,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 8,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 8,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 8,5,main]) started. +[ ] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 8,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 8,5,main]) started. +[+1983 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +163 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +8 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +41 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ +2 ms] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +19 ms] Initializing file store +[ ] [ +2 ms] Done initializing file store +[ ] [ +13 ms] Skipping target: gen_dart_plugin_registrant +[ ] [ +2 ms] Skipping target: dart_build +[ ] [ ] Skipping target: gen_localizations +[ ] [ ] Skipping target: install_code_assets +[ ] [ +2 ms] kernel_snapshot_program: Starting due to {InvalidatedReasonKind.outputSetAddition: The following outputs were added to the output set: C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill} diff --git a/build_tail_v7.txt b/build_tail_v7.txt new file mode 100644 index 0000000..77d103e --- /dev/null +++ b/build_tail_v7.txt @@ -0,0 +1,378 @@ +[ +166 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ +6 ms] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] executing: [C:\Users\Bureau\dart\flutter/] git -c log.showSignature=false log HEAD -n 1 --pretty=format:%ad --date=iso +[ +50 ms] Exit code 0 from: git -c log.showSignature=false log HEAD -n 1 --pretty=format:%ad --date=iso +[ ] 2026-03-17 16:14:01 -0700 +[ +45 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ +150 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ +3 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ +120 ms] Top-level Gradle build file not found, skipping migration of task "clean". +[ ] Android Studio version could not be detected, skipping Gradle-Java version compatibility check. +[ +10 ms] CMake project not found, skipping support Android 15 16k page size migration. +[ +11 ms] Using gradle from C:\GIT\xtremobile\android\gradlew.bat. +[ +17 ms] LocalFile: 'C:\GIT\xtremobile\android\build.gradle.kts' doesn't provide an AGP version. Checking settings. +[ +6 ms] LocalFile: 'C:\GIT\xtremobile\android\settings.gradle.kts' provides AGP version: 8.11.1 +[ +2 ms] Running Gradle task 'assembleRelease'... +[ +1 ms] executing: [C:\GIT\xtremobile\android/] C:\GIT\xtremobile\android\gradlew.bat --full-stacktrace --info -Pverbose=true -Ptarget-platform=android-arm64 -Ptarget=lib\main.dart -Pbase-application-name=android.app.Application -Pdart-defines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -Pdart-obfuscation=false -Ptrack-widget-creation=true -Ptree-shake-icons=true -Psplit-per-abi=true assembleRelease +[+6261 ms] Initialized native services in: C:\Users\Bureau\.gradle\native +[ ] Initialized jansi services in: C:\Users\Bureau\.gradle\native +[ +422 ms] The client will now receive all logging from the daemon (pid: 37756). The daemon log file: C:\Users\Bureau\.gradle\daemon\8.14\daemon-37756.out.log +[ ] Starting 15th build in daemon [uptime: 3 hrs 41 mins 1.131 secs, performance: 100%, GC rate: 0.00/s, heap usage: 1% of 8 GiB, non-heap usage: 5% of 4 GiB] +[ +93 ms] Using 12 worker leases. +[ +109 ms] Now considering [C:\GIT\xtremobile\android, C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle] as hierarchies to watch +[ +93 ms] Watching the file system is configured to be enabled if available +[ +202 ms] File system watching is active +[ ] Starting Build +[ +202 ms] Now considering [C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle, C:\GIT\xtremobile\android] as hierarchies to watch +[ +698 ms] > Configure project :gradle +[ ] Evaluating project ':gradle' using build file 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\build.gradle.kts'. +[ ] Resolved plugin [id: 'org.gradle.java-gradle-plugin'] +[ ] Resolved plugin [id: 'org.gradle.groovy'] +[ ] Resolved plugin [id: 'org.gradle.kotlin.kotlin-dsl', version: '5.2.0'] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.jvm', version: '1.9.20'] +[ ] Using Kotlin Gradle Plugin gradle85 variant +[ ] kotlin scripting plugin: created the scripting discovery configuration: kotlinScriptDef +[ ] kotlin scripting plugin: created the scripting discovery configuration: testKotlinScriptDef +[ ] file or directory 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\src\main\java', not found +[ ] Resolved plugin [id: 'dev.flutter.flutter-plugin-loader', version: '1.0.0'] +[ ] Resolved plugin [id: 'com.android.application', version: '8.11.1', apply: false] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.android', version: '2.2.20', apply: false] +[ ] Resolve mutations for :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker,5,main]) started. +[ +91 ms] :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:checkKotlinGradlePluginConfigurationErrors SKIPPED +[ ] Skipping task ':gradle:checkKotlinGradlePluginConfigurationErrors' as task onlyIf 'errorDiagnostics are present' is false. +[ ] Resolve mutations for :gradle:compileKotlin (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileKotlin (Thread[Execution worker,5,main]) started. +[ +201 ms] > Task :gradle:compileKotlin UP-TO-DATE +[ ] Caching disabled for task ':gradle:compileKotlin' because: +[ ] Build cache is disabled +[ ] Skipping task ':gradle:compileKotlin' as it is up-to-date. +[ ] Resolve mutations for :gradle:compileJava (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileJava (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:compileJava NO-SOURCE +[ ] Skipping task ':gradle:compileJava' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:compileGroovy (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileGroovy (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:compileGroovy NO-SOURCE +[ ] Skipping task ':gradle:compileGroovy' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:pluginDescriptors (Thread[Execution worker,5,main]) started. +[ ] :gradle:pluginDescriptors (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:pluginDescriptors UP-TO-DATE +[ ] Caching disabled for task ':gradle:pluginDescriptors' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:pluginDescriptors' as it is up-to-date. +[ ] Resolve mutations for :gradle:processResources (Thread[Execution worker,5,main]) started. +[ ] :gradle:processResources (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:processResources UP-TO-DATE +[ ] Caching disabled for task ':gradle:processResources' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:processResources' as it is up-to-date. +[ ] Resolve mutations for :gradle:classes (Thread[Execution worker,5,main]) started. +[ ] :gradle:classes (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:classes UP-TO-DATE +[ ] Skipping task ':gradle:classes' as it has no actions. +[ ] Resolve mutations for :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:jar UP-TO-DATE +[ ] Caching disabled for task ':gradle:jar' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:jar' as it is up-to-date. +[+1007 ms] Settings evaluated using settings file 'C:\GIT\xtremobile\android\settings.gradle.kts'. +[ ] Projects loaded. Root project using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ ] Included projects: [root project 'android', project ':app', project ':media_kit_libs_android_video', project ':media_kit_video', project ':package_info_plus', project ':path_provider_android', project ':screen_brightness_android', project ':shared_preferences_android', project ':sqflite_android', project ':video_player_android', project ':volume_controller', project ':wakelock_plus'] +[ +387 ms] > Configure project :app +[ ] Evaluating project ':app' using build file 'C:\GIT\xtremobile\android\app\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.application'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Resolved plugin [id: 'dev.flutter.flutter-gradle-plugin'] +[ ] Using default execution profile +[ ] Build 952887de-e4ef-441c-aad6-e810177fe241 is started +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] > Configure project : +[ ] Evaluating root project 'android' using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ +503 ms] > Configure project :media_kit_libs_android_video +[ ] Evaluating project ':media_kit_libs_android_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\android\build.gradle'. +[ ] Using default execution profile +[ ] > Configure project :media_kit_video +[ ] Evaluating project ':media_kit_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\android\build.gradle'. +[ ] Using default execution profile +[ +295 ms] > Configure project :package_info_plus +[ ] Evaluating project ':package_info_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +292 ms] > Configure project :path_provider_android +[ ] Evaluating project ':path_provider_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Using default execution profile +[ +605 ms] > Configure project :screen_brightness_android +[ ] Evaluating project ':screen_brightness_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +203 ms] > Configure project :shared_preferences_android +[ ] Evaluating project ':shared_preferences_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] > Configure project :sqflite_android +[ ] Evaluating project ':sqflite_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\android\build.gradle'. +[ ] Using default execution profile +[ +93 ms] > Configure project :video_player_android +[ ] Evaluating project ':video_player_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +604 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +94 ms] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +512 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[included builds,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[included builds,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[included builds,5,main]) started. +[ ] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[included builds,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[included builds,5,main]) started. +[+1986 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +154 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +7 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +35 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +19 ms] Initializing file store +[ ] [ +9 ms] Done initializing file store +[ ] [ +37 ms] Skipping target: gen_dart_plugin_registrant +[ ] [ +28 ms] Skipping target: dart_build +[ ] [ ] Skipping target: gen_localizations +[ ] [ +5 ms] Skipping target: install_code_assets +[ ] [ +12 ms] kernel_snapshot_program: Starting due to {InvalidatedReasonKind.outputSetAddition: The following outputs were added to the output set: C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill} +[ ] [ +10 ms] C:\Users\Bureau\dart\flutter\bin\cache\dart-sdk\bin\dartaotruntime.exe C:\Users\Bureau\dart\flutter\bin\cache\dart-sdk\bin\snapshots\frontend_server_aot.dart.snapshot --sdk-root C:\Users\Bureau\dart\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk_product/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_VERSION=3.41.5 -DFLUTTER_CHANNEL=stable -DFLUTTER_GIT_URL=https://github.com/flutter/flutter.git -DFLUTTER_FRAMEWORK_REVISION=2c9eb20739 -DFLUTTER_ENGINE_REVISION=052f31d115 -DFLUTTER_DART_VERSION=3.11.3 -DFLUTTER_APP_FLAVOR= -Ddart.vm.profile=false -Ddart.vm.product=true --delete-tostring-package-uri=dart:ui --delete-tostring-package-uri=package:flutter --aot --tfa --target-os android --packages C:\GIT\xtremobile\.dart_tool\package_config.json --output-dill C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill --depfile C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\kernel_snapshot_program.d --source file:///C:/GIT/xtremobile/.dart_tool/flutter_build/dart_plugin_registrant.dart --source package:flutter/src/dart_plugin_registrant.dart -Dflutter.dart_plugin_registrant=file:///C:/GIT/xtremobile/.dart_tool/flutter_build/dart_plugin_registrant.dart --verbosity=error package:xtremflow/main.dart diff --git a/build_tail_v8.txt b/build_tail_v8.txt new file mode 100644 index 0000000..2216773 --- /dev/null +++ b/build_tail_v8.txt @@ -0,0 +1,436 @@ +[ +150 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] executing: [C:\Users\Bureau\dart\flutter/] git -c log.showSignature=false log HEAD -n 1 --pretty=format:%ad --date=iso +[ +54 ms] Exit code 0 from: git -c log.showSignature=false log HEAD -n 1 --pretty=format:%ad --date=iso +[ ] 2026-03-17 16:14:01 -0700 +[ +12 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ +22 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ +3 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ +60 ms] Skipping pub get: version match. +[ +79 ms] Found plugin wakelock_plus at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\ +[ +7 ms] Found plugin package_info_plus at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\ +[ +3 ms] Found plugin video_player at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player-2.11.1\ +[ ] Found plugin video_player_web at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_web-2.4.0\ +[ +1 ms] Found plugin video_player_avfoundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_avfoundation-2.9.4\ +[ ] Found plugin video_player_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\ +[ +2 ms] Found plugin shared_preferences at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences-2.5.5\ +[ ] Found plugin shared_preferences_windows at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_windows-2.4.1\ +[ +1 ms] Found plugin path_provider_windows at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_windows-2.3.0\ +[ +2 ms] Found plugin shared_preferences_web at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_web-2.4.3\ +[ +1 ms] Found plugin shared_preferences_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_linux-2.4.1\ +[ ] Found plugin path_provider_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_linux-2.2.1\ +[ +1 ms] Found plugin shared_preferences_foundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_foundation-2.5.6\ +[ ] Found plugin shared_preferences_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\ +[ ] Found plugin path_provider at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider-2.1.5\ +[ ] Found plugin path_provider_foundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_foundation-2.6.0\ +[ +3 ms] Found plugin path_provider_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\ +[ ] Found plugin media_kit_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\ +[ +1 ms] Found plugin volume_controller at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\ +[ +2 ms] Found plugin screen_brightness_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\ +[ +3 ms] Found plugin media_kit_libs_windows_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_windows_video-1.0.11\ +[ ] Found plugin media_kit_libs_macos_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_macos_video-1.1.4\ +[ ] Found plugin media_kit_libs_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_linux-1.2.1\ +[ ] Found plugin media_kit_libs_ios_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_ios_video-1.1.4\ +[ ] Found plugin media_kit_libs_android_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\ +[ +9 ms] Found plugin sqflite at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite-2.4.2\ +[ +2 ms] Found plugin sqflite_darwin at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_darwin-2.4.2\ +[ ] Found plugin sqflite_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\ +[ +66 ms] Found plugin wakelock_plus at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\ +[ +2 ms] Found plugin package_info_plus at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\ +[ +2 ms] Found plugin video_player at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player-2.11.1\ +[ ] Found plugin video_player_web at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_web-2.4.0\ +[ +1 ms] Found plugin video_player_avfoundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_avfoundation-2.9.4\ +[ ] Found plugin video_player_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\ +[ +2 ms] Found plugin shared_preferences at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences-2.5.5\ +[ ] Found plugin shared_preferences_windows at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_windows-2.4.1\ +[ +1 ms] Found plugin path_provider_windows at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_windows-2.3.0\ +[ +1 ms] Found plugin shared_preferences_web at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_web-2.4.3\ +[ ] Found plugin shared_preferences_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_linux-2.4.1\ +[ ] Found plugin path_provider_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_linux-2.2.1\ +[ +1 ms] Found plugin shared_preferences_foundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_foundation-2.5.6\ +[ ] Found plugin shared_preferences_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\ +[ ] Found plugin path_provider at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider-2.1.5\ +[ ] Found plugin path_provider_foundation at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_foundation-2.6.0\ +[ +2 ms] Found plugin path_provider_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\ +[ ] Found plugin media_kit_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\ +[ ] Found plugin volume_controller at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\ +[ +1 ms] Found plugin screen_brightness_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\ +[ +3 ms] Found plugin media_kit_libs_windows_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_windows_video-1.0.11\ +[ ] Found plugin media_kit_libs_macos_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_macos_video-1.1.4\ +[ ] Found plugin media_kit_libs_linux at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_linux-1.2.1\ +[ ] Found plugin media_kit_libs_ios_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_ios_video-1.1.4\ +[ ] Found plugin media_kit_libs_android_video at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\ +[ +6 ms] Found plugin sqflite at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite-2.4.2\ +[ +1 ms] Found plugin sqflite_darwin at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_darwin-2.4.2\ +[ ] Found plugin sqflite_android at C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\ +[ +5 ms] Generating C:\GIT\xtremobile\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java +[ +6 ms] Skipping generating GeneratedPluginRegistrant.java because it is up-to-date. +[ +46 ms] Top-level Gradle build file not found, skipping migration of task "clean". +[ ] Android Studio version could not be detected, skipping Gradle-Java version compatibility check. +[ +12 ms] CMake project not found, skipping support Android 15 16k page size migration. +[ +3 ms] Using gradle from C:\GIT\xtremobile\android\gradlew.bat. +[ +15 ms] LocalFile: 'C:\GIT\xtremobile\android\build.gradle.kts' doesn't provide an AGP version. Checking settings. +[ +8 ms] LocalFile: 'C:\GIT\xtremobile\android\settings.gradle.kts' provides AGP version: 8.11.1 +[ +2 ms] Running Gradle task 'assembleRelease'... +[ +1 ms] executing: [C:\GIT\xtremobile\android/] C:\GIT\xtremobile\android\gradlew.bat --full-stacktrace --info -Pverbose=true -Ptarget-platform=android-arm64 -Ptarget=lib\main.dart -Pbase-application-name=android.app.Application -Pdart-defines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -Pdart-obfuscation=false -Ptrack-widget-creation=true -Ptree-shake-icons=true -Psplit-per-abi=true assembleRelease +[+6936 ms] Initialized native services in: C:\Users\Bureau\.gradle\native +[ ] Initialized jansi services in: C:\Users\Bureau\.gradle\native +[ +428 ms] The client will now receive all logging from the daemon (pid: 37756). The daemon log file: C:\Users\Bureau\.gradle\daemon\8.14\daemon-37756.out.log +[ ] Starting 16th build in daemon [uptime: 5 hrs 3 mins 40.974 secs, performance: 100%, GC rate: 0.00/s, heap usage: 1% of 8 GiB, non-heap usage: 5% of 4 GiB] +[ +295 ms] Using 12 worker leases. +[ +498 ms] Now considering [C:\GIT\xtremobile\android, C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle] as hierarchies to watch +[ ] Watching the file system is configured to be enabled if available +[ +403 ms] File system watching is active +[ ] Starting Build +[ +296 ms] Now considering [C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle, C:\GIT\xtremobile\android] as hierarchies to watch +[ +903 ms] > Configure project :gradle +[ ] Evaluating project ':gradle' using build file 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\build.gradle.kts'. +[ ] Resolved plugin [id: 'org.gradle.java-gradle-plugin'] +[ ] Resolved plugin [id: 'org.gradle.groovy'] +[ ] Resolved plugin [id: 'org.gradle.kotlin.kotlin-dsl', version: '5.2.0'] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.jvm', version: '1.9.20'] +[ ] Using Kotlin Gradle Plugin gradle85 variant +[ ] kotlin scripting plugin: created the scripting discovery configuration: kotlinScriptDef +[ ] kotlin scripting plugin: created the scripting discovery configuration: testKotlinScriptDef +[ ] file or directory 'C:\Users\Bureau\dart\flutter\packages\flutter_tools\gradle\src\main\java', not found +[ ] Resolved plugin [id: 'dev.flutter.flutter-plugin-loader', version: '1.0.0'] +[ ] Resolved plugin [id: 'com.android.application', version: '8.11.1', apply: false] +[ ] Resolved plugin [id: 'org.jetbrains.kotlin.android', version: '2.2.20', apply: false] +[ +92 ms] Resolve mutations for :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker,5,main]) started. +[ ] :gradle:checkKotlinGradlePluginConfigurationErrors (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:checkKotlinGradlePluginConfigurationErrors SKIPPED +[ ] Skipping task ':gradle:checkKotlinGradlePluginConfigurationErrors' as task onlyIf 'errorDiagnostics are present' is false. +[ ] Resolve mutations for :gradle:compileKotlin (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileKotlin (Thread[Execution worker,5,main]) started. +[ +407 ms] > Task :gradle:compileKotlin UP-TO-DATE +[ ] Caching disabled for task ':gradle:compileKotlin' because: +[ ] Build cache is disabled +[ ] Skipping task ':gradle:compileKotlin' as it is up-to-date. +[ ] Resolve mutations for :gradle:compileJava (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileJava (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:compileJava NO-SOURCE +[ ] Skipping task ':gradle:compileJava' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:compileGroovy (Thread[Execution worker,5,main]) started. +[ ] :gradle:compileGroovy (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:compileGroovy NO-SOURCE +[ ] Skipping task ':gradle:compileGroovy' as it has no source files and no previous output files. +[ ] Resolve mutations for :gradle:pluginDescriptors (Thread[Execution worker,5,main]) started. +[ ] :gradle:pluginDescriptors (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:pluginDescriptors UP-TO-DATE +[ ] Caching disabled for task ':gradle:pluginDescriptors' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:pluginDescriptors' as it is up-to-date. +[ ] Resolve mutations for :gradle:processResources (Thread[Execution worker,5,main]) started. +[ ] :gradle:processResources (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:processResources UP-TO-DATE +[ ] Caching disabled for task ':gradle:processResources' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:processResources' as it is up-to-date. +[ ] Resolve mutations for :gradle:classes (Thread[Execution worker,5,main]) started. +[ ] :gradle:classes (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:classes UP-TO-DATE +[ ] Skipping task ':gradle:classes' as it has no actions. +[ ] Resolve mutations for :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] :gradle:jar (Thread[Execution worker,5,main]) started. +[ ] > Task :gradle:jar UP-TO-DATE +[ ] Caching disabled for task ':gradle:jar' because: +[ ] Build cache is disabled +[ ] Not worth caching +[ ] Skipping task ':gradle:jar' as it is up-to-date. +[+1084 ms] Settings evaluated using settings file 'C:\GIT\xtremobile\android\settings.gradle.kts'. +[ ] Projects loaded. Root project using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ ] Included projects: [root project 'android', project ':app', project ':media_kit_libs_android_video', project ':media_kit_video', project ':package_info_plus', project ':path_provider_android', project ':screen_brightness_android', project ':shared_preferences_android', project ':sqflite_android', project ':video_player_android', project ':volume_controller', project ':wakelock_plus'] +[ +808 ms] > Configure project :app +[ ] Evaluating project ':app' using build file 'C:\GIT\xtremobile\android\app\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.application'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Resolved plugin [id: 'dev.flutter.flutter-gradle-plugin'] +[ ] Using default execution profile +[ ] Build 24d5ee4c-182b-4006-976e-5b4419f64465 is started +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] > Configure project : +[ ] Evaluating root project 'android' using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ +692 ms] > Configure project :media_kit_libs_android_video +[ ] Evaluating project ':media_kit_libs_android_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\android\build.gradle'. +[ ] Using default execution profile +[ ] > Configure project :media_kit_video +[ ] Evaluating project ':media_kit_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\android\build.gradle'. +[ ] Using default execution profile +[ +402 ms] > Configure project :package_info_plus +[ ] Evaluating project ':package_info_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +296 ms] > Configure project :path_provider_android +[ ] Evaluating project ':path_provider_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Using default execution profile +[ +793 ms] > Configure project :screen_brightness_android +[ ] Evaluating project ':screen_brightness_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +201 ms] > Configure project :shared_preferences_android +[ ] Evaluating project ':shared_preferences_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +93 ms] > Configure project :sqflite_android +[ ] Evaluating project ':sqflite_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\android\build.gradle'. +[ ] Using default execution profile +[ +108 ms] > Configure project :video_player_android +[ ] Evaluating project ':video_player_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +794 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +108 ms] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +800 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 5,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 5,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 5,5,main]) started. +[ +88 ms] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 5,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 5,5,main]) started. +[+1907 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +124 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +6 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +34 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ +2 ms] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +16 ms] Initializing file store +[ ] [ +10 ms] Done initializing file store +[ ] [ +43 ms] Skipping target: gen_dart_plugin_registrant +[ ] [ +36 ms] Skipping target: dart_build +[ ] [ ] Skipping target: gen_localizations +[ ] [ +8 ms] Skipping target: install_code_assets +[ ] [ +14 ms] kernel_snapshot_program: Starting due to {InvalidatedReasonKind.outputSetAddition: The following outputs were added to the output set: C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill} diff --git a/build_v3_tail.txt b/build_v3_tail.txt new file mode 100644 index 0000000..9af536e --- /dev/null +++ b/build_v3_tail.txt @@ -0,0 +1,100 @@ +[ +92 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +203 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 9,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 9,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 9,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 9,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 9,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 9,5,main]) started. +[ ] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 9,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 9,5,main]) started. +[+1998 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +130 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +8 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +37 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ +2 ms] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +21 ms] Initializing file store +[ ] [ +1 ms] Done initializing file store +[ ] [ +14 ms] Skipping target: gen_dart_plugin_registrant +[ ] [ +2 ms] Skipping target: dart_build +[ ] [ ] Skipping target: gen_localizations +[ ] [ ] Skipping target: install_code_assets +[ ] [ +2 ms] kernel_snapshot_program: Starting due to {InvalidatedReasonKind.outputSetAddition: The following outputs were added to the output set: C:\GIT\xtremobile\.dart_tool\flutter_build\eece2bdc462580013a9f8e1cf6058754\app.dill} diff --git a/build_verbose_tail.txt b/build_verbose_tail.txt new file mode 100644 index 0000000..a08f6f5 --- /dev/null +++ b/build_verbose_tail.txt @@ -0,0 +1,200 @@ +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] C/C++: android.ndkVersion from module build.gradle is [28.2.13676358] +[ ] C/C++: android.ndkPath from module build.gradle is not set +[ ] C/C++: ndk.dir in local.properties is not set +[ ] C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period. +[ ] C/C++: sdkFolder is C:\Android +[ ] > Configure project : +[ ] Evaluating root project 'android' using build file 'C:\GIT\xtremobile\android\build.gradle.kts'. +[ +194 ms] > Configure project :media_kit_libs_android_video +[ ] Evaluating project ':media_kit_libs_android_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_libs_android_video-1.3.8\android\build.gradle'. +[ ] Using default execution profile +[ ] > Configure project :media_kit_video +[ ] Evaluating project ':media_kit_video' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\media_kit_video-1.3.1\android\build.gradle'. +[ ] Using default execution profile +[ +92 ms] > Configure project :package_info_plus +[ ] Evaluating project ':package_info_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\package_info_plus-9.0.0\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +108 ms] > Configure project :path_provider_android +[ ] Evaluating project ':path_provider_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\path_provider_android-2.2.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Using default execution profile +[ +200 ms] > Configure project :screen_brightness_android +[ ] Evaluating project ':screen_brightness_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\screen_brightness_android-2.1.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +91 ms] > Configure project :shared_preferences_android +[ ] Evaluating project ':shared_preferences_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\shared_preferences_android-2.4.23\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +107 ms] > Configure project :sqflite_android +[ ] Evaluating project ':sqflite_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\sqflite_android-2.4.2+3\android\build.gradle'. +[ ] Using default execution profile +[ ] > Configure project :video_player_android +[ ] Evaluating project ':video_player_android' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\video_player_android-2.9.5\android\build.gradle.kts'. +[ ] Resolved plugin [id: 'com.android.library'] +[ ] Resolved plugin [id: 'kotlin-android'] +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +198 ms] > Configure project :volume_controller +[ ] Evaluating project ':volume_controller' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\volume_controller-3.4.3\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ +91 ms] > Configure project :wakelock_plus +[ ] Evaluating project ':wakelock_plus' using build file 'C:\Users\Bureau\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock_plus-1.5.1\android\build.gradle'. +[ ] Using default execution profile +[ ] Using Kotlin Gradle Plugin gradle813 variant +[ ] All projects evaluated. +[ ] Task name matched 'assembleRelease' +[ ] Selected primary task 'assembleRelease' from project : +[ +204 ms] Tasks to be executed: [task ':app:ReleaseMinSdkCheck', task ':app:compileFlutterBuildRelease', task ':app:packJniLibsflutterBuildRelease', task ':app:preBuild', task ':app:preReleaseBuild', task ':app:configureCMakeRelease[arm64-v8a]', task ':app:buildCMakeRelease[arm64-v8a]', task ':app:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:preBuild', task ':media_kit_libs_android_video:preReleaseBuild', task ':media_kit_libs_android_video:mergeReleaseJniLibFolders', task ':media_kit_libs_android_video:mergeReleaseNativeLibs', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectOnly', task ':media_kit_video:preBuild', task ':media_kit_video:preReleaseBuild', task ':media_kit_video:mergeReleaseJniLibFolders', task ':media_kit_video:mergeReleaseNativeLibs', task ':media_kit_video:copyReleaseJniLibsProjectOnly', task ':package_info_plus:preBuild', task ':package_info_plus:preReleaseBuild', task ':package_info_plus:mergeReleaseJniLibFolders', task ':package_info_plus:mergeReleaseNativeLibs', task ':package_info_plus:copyReleaseJniLibsProjectOnly', task ':path_provider_android:preBuild', task ':path_provider_android:preReleaseBuild', task ':path_provider_android:mergeReleaseJniLibFolders', task ':path_provider_android:mergeReleaseNativeLibs', task ':path_provider_android:copyReleaseJniLibsProjectOnly', task ':screen_brightness_android:preBuild', task ':screen_brightness_android:preReleaseBuild', task ':screen_brightness_android:mergeReleaseJniLibFolders', task ':screen_brightness_android:mergeReleaseNativeLibs', task ':screen_brightness_android:copyReleaseJniLibsProjectOnly', task ':shared_preferences_android:preBuild', task ':shared_preferences_android:preReleaseBuild', task ':shared_preferences_android:mergeReleaseJniLibFolders', task ':shared_preferences_android:mergeReleaseNativeLibs', task ':shared_preferences_android:copyReleaseJniLibsProjectOnly', task ':sqflite_android:preBuild', task ':sqflite_android:preReleaseBuild', task ':sqflite_android:mergeReleaseJniLibFolders', task ':sqflite_android:mergeReleaseNativeLibs', task ':sqflite_android:copyReleaseJniLibsProjectOnly', task ':video_player_android:preBuild', task ':video_player_android:preReleaseBuild', task ':video_player_android:mergeReleaseJniLibFolders', task ':video_player_android:mergeReleaseNativeLibs', task ':video_player_android:copyReleaseJniLibsProjectOnly', task ':volume_controller:preBuild', task ':volume_controller:preReleaseBuild', task ':volume_controller:mergeReleaseJniLibFolders', task ':volume_controller:mergeReleaseNativeLibs', task ':volume_controller:copyReleaseJniLibsProjectOnly', task ':wakelock_plus:preBuild', task ':wakelock_plus:preReleaseBuild', task ':wakelock_plus:mergeReleaseJniLibFolders', task ':wakelock_plus:mergeReleaseNativeLibs', task ':wakelock_plus:copyReleaseJniLibsProjectOnly', task ':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task ':media_kit_libs_android_video:generateReleaseResValues', task ':media_kit_libs_android_video:generateReleaseResources', task ':media_kit_libs_android_video:packageReleaseResources', task ':media_kit_libs_android_video:parseReleaseLocalResources', task ':media_kit_libs_android_video:generateReleaseRFile', task ':media_kit_libs_android_video:javaPreCompileRelease', task ':media_kit_libs_android_video:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_libs_android_video:exportReleaseConsumerProguardFiles', task ':media_kit_video:generateReleaseResValues', task ':media_kit_video:generateReleaseResources', task ':media_kit_video:packageReleaseResources', task ':media_kit_video:parseReleaseLocalResources', task ':media_kit_video:generateReleaseRFile', task ':media_kit_video:javaPreCompileRelease', task ':screen_brightness_android:checkKotlinGradlePluginConfigurationErrors', task ':screen_brightness_android:generateReleaseResValues', task ':screen_brightness_android:generateReleaseResources', task ':screen_brightness_android:packageReleaseResources', task ':screen_brightness_android:parseReleaseLocalResources', task ':screen_brightness_android:generateReleaseRFile', task ':screen_brightness_android:compileReleaseKotlin', task ':screen_brightness_android:javaPreCompileRelease', task ':screen_brightness_android:compileReleaseJavaWithJavac', task ':screen_brightness_android:bundleLibCompileToJarRelease', task ':volume_controller:checkKotlinGradlePluginConfigurationErrors', task ':volume_controller:generateReleaseResValues', task ':volume_controller:generateReleaseResources', task ':volume_controller:packageReleaseResources', task ':volume_controller:parseReleaseLocalResources', task ':volume_controller:generateReleaseRFile', task ':volume_controller:compileReleaseKotlin', task ':volume_controller:javaPreCompileRelease', task ':volume_controller:compileReleaseJavaWithJavac', task ':volume_controller:bundleLibCompileToJarRelease', task ':package_info_plus:checkKotlinGradlePluginConfigurationErrors', task ':package_info_plus:generateReleaseResValues', task ':package_info_plus:generateReleaseResources', task ':package_info_plus:packageReleaseResources', task ':package_info_plus:parseReleaseLocalResources', task ':package_info_plus:generateReleaseRFile', task ':package_info_plus:compileReleaseKotlin', task ':package_info_plus:javaPreCompileRelease', task ':package_info_plus:compileReleaseJavaWithJavac', task ':package_info_plus:bundleLibCompileToJarRelease', task ':wakelock_plus:checkKotlinGradlePluginConfigurationErrors', task ':wakelock_plus:generateReleaseResValues', task ':wakelock_plus:generateReleaseResources', task ':wakelock_plus:packageReleaseResources', task ':wakelock_plus:parseReleaseLocalResources', task ':wakelock_plus:generateReleaseRFile', task ':wakelock_plus:compileReleaseKotlin', task ':wakelock_plus:javaPreCompileRelease', task ':wakelock_plus:compileReleaseJavaWithJavac', task ':wakelock_plus:bundleLibCompileToJarRelease', task ':media_kit_video:compileReleaseJavaWithJavac', task ':media_kit_video:mergeReleaseGeneratedProguardFiles', task ':media_kit_video:exportReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseGeneratedProguardFiles', task ':wakelock_plus:exportReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseGeneratedProguardFiles', task ':package_info_plus:exportReleaseConsumerProguardFiles', task ':path_provider_android:generateReleaseResValues', task ':path_provider_android:generateReleaseResources', task ':path_provider_android:packageReleaseResources', task ':path_provider_android:parseReleaseLocalResources', task ':path_provider_android:generateReleaseRFile', task ':path_provider_android:javaPreCompileRelease', task ':path_provider_android:compileReleaseJavaWithJavac', task ':path_provider_android:mergeReleaseGeneratedProguardFiles', task ':path_provider_android:exportReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseGeneratedProguardFiles', task ':screen_brightness_android:exportReleaseConsumerProguardFiles', task ':shared_preferences_android:checkKotlinGradlePluginConfigurationErrors', task ':shared_preferences_android:generateReleaseResValues', task ':shared_preferences_android:generateReleaseResources', task ':shared_preferences_android:packageReleaseResources', task ':shared_preferences_android:parseReleaseLocalResources', task ':shared_preferences_android:generateReleaseRFile', task ':shared_preferences_android:compileReleaseKotlin', task ':shared_preferences_android:javaPreCompileRelease', task ':shared_preferences_android:compileReleaseJavaWithJavac', task ':shared_preferences_android:mergeReleaseGeneratedProguardFiles', task ':shared_preferences_android:exportReleaseConsumerProguardFiles', task ':sqflite_android:generateReleaseResValues', task ':sqflite_android:generateReleaseResources', task ':sqflite_android:packageReleaseResources', task ':sqflite_android:parseReleaseLocalResources', task ':sqflite_android:generateReleaseRFile', task ':sqflite_android:javaPreCompileRelease', task ':sqflite_android:compileReleaseJavaWithJavac', task ':sqflite_android:mergeReleaseGeneratedProguardFiles', task ':sqflite_android:exportReleaseConsumerProguardFiles', task ':video_player_android:checkKotlinGradlePluginConfigurationErrors', task ':video_player_android:generateReleaseResValues', task ':video_player_android:generateReleaseResources', task ':video_player_android:packageReleaseResources', task ':video_player_android:parseReleaseLocalResources', task ':video_player_android:generateReleaseRFile', task ':video_player_android:compileReleaseKotlin', task ':video_player_android:javaPreCompileRelease', task ':video_player_android:compileReleaseJavaWithJavac', task ':video_player_android:mergeReleaseGeneratedProguardFiles', task ':video_player_android:exportReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseGeneratedProguardFiles', task ':volume_controller:exportReleaseConsumerProguardFiles', task ':app:buildKotlinToolingMetadata', task ':app:checkReleaseDuplicateClasses', task ':app:checkKotlinGradlePluginConfigurationErrors', task ':media_kit_libs_android_video:writeReleaseAarMetadata', task ':media_kit_video:writeReleaseAarMetadata', task ':package_info_plus:writeReleaseAarMetadata', task ':path_provider_android:writeReleaseAarMetadata', task ':screen_brightness_android:writeReleaseAarMetadata', task ':shared_preferences_android:writeReleaseAarMetadata', task ':sqflite_android:writeReleaseAarMetadata', task ':video_player_android:writeReleaseAarMetadata', task ':volume_controller:writeReleaseAarMetadata', task ':wakelock_plus:writeReleaseAarMetadata', task ':app:checkReleaseAarMetadata', task ':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseShaders', task ':media_kit_libs_android_video:compileReleaseShaders', task ':media_kit_libs_android_video:generateReleaseAssets', task ':media_kit_libs_android_video:mergeReleaseAssets', task ':media_kit_video:mergeReleaseShaders', task ':media_kit_video:compileReleaseShaders', task ':media_kit_video:generateReleaseAssets', task ':media_kit_video:mergeReleaseAssets', task ':package_info_plus:mergeReleaseShaders', task ':package_info_plus:compileReleaseShaders', task ':package_info_plus:generateReleaseAssets', task ':package_info_plus:mergeReleaseAssets', task ':path_provider_android:mergeReleaseShaders', task ':path_provider_android:compileReleaseShaders', task ':path_provider_android:generateReleaseAssets', task ':path_provider_android:mergeReleaseAssets', task ':screen_brightness_android:mergeReleaseShaders', task ':screen_brightness_android:compileReleaseShaders', task ':screen_brightness_android:generateReleaseAssets', task ':screen_brightness_android:mergeReleaseAssets', task ':shared_preferences_android:mergeReleaseShaders', task ':shared_preferences_android:compileReleaseShaders', task ':shared_preferences_android:generateReleaseAssets', task ':shared_preferences_android:mergeReleaseAssets', task ':sqflite_android:mergeReleaseShaders', task ':sqflite_android:compileReleaseShaders', task ':sqflite_android:generateReleaseAssets', task ':sqflite_android:mergeReleaseAssets', task ':video_player_android:mergeReleaseShaders', task ':video_player_android:compileReleaseShaders', task ':video_player_android:generateReleaseAssets', task ':video_player_android:mergeReleaseAssets', task ':volume_controller:mergeReleaseShaders', task ':volume_controller:compileReleaseShaders', task ':volume_controller:generateReleaseAssets', task ':volume_controller:mergeReleaseAssets', task ':wakelock_plus:mergeReleaseShaders', task ':wakelock_plus:compileReleaseShaders', task ':wakelock_plus:generateReleaseAssets', task ':wakelock_plus:mergeReleaseAssets', task ':app:mergeReleaseAssets', task ':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task ':app:packageReleaseResources', task ':app:parseReleaseLocalResources', task ':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':media_kit_libs_android_video:extractDeepLinksRelease', task ':media_kit_libs_android_video:processReleaseManifest', task ':media_kit_video:extractDeepLinksRelease', task ':media_kit_video:processReleaseManifest', task ':package_info_plus:extractDeepLinksRelease', task ':package_info_plus:processReleaseManifest', task ':path_provider_android:extractDeepLinksRelease', task ':path_provider_android:processReleaseManifest', task ':screen_brightness_android:extractDeepLinksRelease', task ':screen_brightness_android:processReleaseManifest', task ':shared_preferences_android:extractDeepLinksRelease', task ':shared_preferences_android:processReleaseManifest', task ':sqflite_android:extractDeepLinksRelease', task ':sqflite_android:processReleaseManifest', task ':video_player_android:extractDeepLinksRelease', task ':video_player_android:processReleaseManifest', task ':volume_controller:extractDeepLinksRelease', task ':volume_controller:processReleaseManifest', task ':wakelock_plus:extractDeepLinksRelease', task ':wakelock_plus:processReleaseManifest', task ':app:processReleaseMainManifest', task ':app:outputReleaseAppLinkSettings', task ':app:processReleaseManifest', task ':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':media_kit_libs_android_video:bundleLibCompileToJarRelease', task ':media_kit_video:bundleLibCompileToJarRelease', task ':path_provider_android:bundleLibCompileToJarRelease', task ':shared_preferences_android:bundleLibCompileToJarRelease', task ':sqflite_android:bundleLibCompileToJarRelease', task ':video_player_android:bundleLibCompileToJarRelease', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac', task ':media_kit_libs_android_video:prepareReleaseArtProfile', task ':media_kit_video:prepareReleaseArtProfile', task ':package_info_plus:prepareReleaseArtProfile', task ':path_provider_android:prepareReleaseArtProfile', task ':screen_brightness_android:prepareReleaseArtProfile', task ':shared_preferences_android:prepareReleaseArtProfile', task ':sqflite_android:prepareReleaseArtProfile', task ':video_player_android:prepareReleaseArtProfile', task ':volume_controller:prepareReleaseArtProfile', task ':wakelock_plus:prepareReleaseArtProfile', task ':app:mergeReleaseArtProfile', task ':media_kit_libs_android_video:bundleLibRuntimeToJarRelease', task ':media_kit_video:bundleLibRuntimeToJarRelease', task ':package_info_plus:bundleLibRuntimeToJarRelease', task ':path_provider_android:bundleLibRuntimeToJarRelease', task ':screen_brightness_android:bundleLibRuntimeToJarRelease', task ':shared_preferences_android:bundleLibRuntimeToJarRelease', task ':sqflite_android:bundleLibRuntimeToJarRelease', task ':video_player_android:bundleLibRuntimeToJarRelease', task ':volume_controller:bundleLibRuntimeToJarRelease', task ':wakelock_plus:bundleLibRuntimeToJarRelease', task ':app:expandReleaseArtProfileWildcards', task ':app:extractProguardFiles', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task ':media_kit_libs_android_video:processReleaseJavaRes', task ':media_kit_video:processReleaseJavaRes', task ':package_info_plus:processReleaseJavaRes', task ':path_provider_android:processReleaseJavaRes', task ':screen_brightness_android:processReleaseJavaRes', task ':shared_preferences_android:processReleaseJavaRes', task ':sqflite_android:processReleaseJavaRes', task ':video_player_android:processReleaseJavaRes', task ':volume_controller:processReleaseJavaRes', task ':wakelock_plus:processReleaseJavaRes', task ':app:mergeReleaseJavaResource', task ':app:mergeReleaseStartupProfile', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task ':app:extractReleaseVersionControlInfo', task ':media_kit_libs_android_video:createFullJarRelease', task ':media_kit_libs_android_video:extractProguardFiles', task ':media_kit_libs_android_video:generateReleaseLintModel', task ':media_kit_libs_android_video:prepareLintJarForPublish', task ':media_kit_video:createFullJarRelease', task ':media_kit_video:extractProguardFiles', task ':package_info_plus:createFullJarRelease', task ':package_info_plus:extractProguardFiles', task ':package_info_plus:generateReleaseLintModel', task ':package_info_plus:prepareLintJarForPublish', task ':screen_brightness_android:createFullJarRelease', task ':screen_brightness_android:extractProguardFiles', task ':screen_brightness_android:generateReleaseLintModel', task ':screen_brightness_android:prepareLintJarForPublish', task ':volume_controller:createFullJarRelease', task ':volume_controller:extractProguardFiles', task ':volume_controller:generateReleaseLintModel', task ':volume_controller:prepareLintJarForPublish', task ':wakelock_plus:createFullJarRelease', task ':wakelock_plus:extractProguardFiles', task ':wakelock_plus:generateReleaseLintModel', task ':wakelock_plus:prepareLintJarForPublish', task ':media_kit_video:generateReleaseLintModel', task ':media_kit_video:prepareLintJarForPublish', task ':path_provider_android:createFullJarRelease', task ':path_provider_android:extractProguardFiles', task ':path_provider_android:generateReleaseLintModel', task ':path_provider_android:prepareLintJarForPublish', task ':shared_preferences_android:createFullJarRelease', task ':shared_preferences_android:extractProguardFiles', task ':shared_preferences_android:generateReleaseLintModel', task ':shared_preferences_android:prepareLintJarForPublish', task ':sqflite_android:createFullJarRelease', task ':sqflite_android:extractProguardFiles', task ':sqflite_android:generateReleaseLintModel', task ':sqflite_android:prepareLintJarForPublish', task ':video_player_android:createFullJarRelease', task ':video_player_android:extractProguardFiles', task ':video_player_android:generateReleaseLintModel', task ':video_player_android:prepareLintJarForPublish', task ':app:generateReleaseLintVitalReportModel', task ':media_kit_libs_android_video:stripReleaseDebugSymbols', task ':media_kit_libs_android_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_libs_android_video:extractDeepLinksForAarRelease', task ':media_kit_libs_android_video:extractReleaseAnnotations', task ':media_kit_libs_android_video:mergeReleaseConsumerProguardFiles', task ':media_kit_libs_android_video:mergeReleaseJavaResource', task ':media_kit_libs_android_video:syncReleaseLibJars', task ':media_kit_libs_android_video:bundleReleaseLocalLintAar', task ':media_kit_video:stripReleaseDebugSymbols', task ':media_kit_video:copyReleaseJniLibsProjectAndLocalJars', task ':media_kit_video:extractDeepLinksForAarRelease', task ':media_kit_video:extractReleaseAnnotations', task ':media_kit_video:mergeReleaseConsumerProguardFiles', task ':media_kit_video:mergeReleaseJavaResource', task ':media_kit_video:syncReleaseLibJars', task ':media_kit_video:bundleReleaseLocalLintAar', task ':wakelock_plus:stripReleaseDebugSymbols', task ':wakelock_plus:copyReleaseJniLibsProjectAndLocalJars', task ':wakelock_plus:extractDeepLinksForAarRelease', task ':wakelock_plus:extractReleaseAnnotations', task ':wakelock_plus:mergeReleaseConsumerProguardFiles', task ':wakelock_plus:mergeReleaseJavaResource', task ':wakelock_plus:syncReleaseLibJars', task ':wakelock_plus:bundleReleaseLocalLintAar', task ':package_info_plus:stripReleaseDebugSymbols', task ':package_info_plus:copyReleaseJniLibsProjectAndLocalJars', task ':package_info_plus:extractDeepLinksForAarRelease', task ':package_info_plus:extractReleaseAnnotations', task ':package_info_plus:mergeReleaseConsumerProguardFiles', task ':package_info_plus:mergeReleaseJavaResource', task ':package_info_plus:syncReleaseLibJars', task ':package_info_plus:bundleReleaseLocalLintAar', task ':path_provider_android:stripReleaseDebugSymbols', task ':path_provider_android:copyReleaseJniLibsProjectAndLocalJars', task ':path_provider_android:extractDeepLinksForAarRelease', task ':path_provider_android:extractReleaseAnnotations', task ':path_provider_android:mergeReleaseConsumerProguardFiles', task ':path_provider_android:mergeReleaseJavaResource', task ':path_provider_android:syncReleaseLibJars', task ':path_provider_android:bundleReleaseLocalLintAar', task ':screen_brightness_android:stripReleaseDebugSymbols', task ':screen_brightness_android:copyReleaseJniLibsProjectAndLocalJars', task ':screen_brightness_android:extractDeepLinksForAarRelease', task ':screen_brightness_android:extractReleaseAnnotations', task ':screen_brightness_android:mergeReleaseConsumerProguardFiles', task ':screen_brightness_android:mergeReleaseJavaResource', task ':screen_brightness_android:syncReleaseLibJars', task ':screen_brightness_android:bundleReleaseLocalLintAar', task ':shared_preferences_android:stripReleaseDebugSymbols', task ':shared_preferences_android:copyReleaseJniLibsProjectAndLocalJars', task ':shared_preferences_android:extractDeepLinksForAarRelease', task ':shared_preferences_android:extractReleaseAnnotations', task ':shared_preferences_android:mergeReleaseConsumerProguardFiles', task ':shared_preferences_android:mergeReleaseJavaResource', task ':shared_preferences_android:syncReleaseLibJars', task ':shared_preferences_android:bundleReleaseLocalLintAar', task ':sqflite_android:stripReleaseDebugSymbols', task ':sqflite_android:copyReleaseJniLibsProjectAndLocalJars', task ':sqflite_android:extractDeepLinksForAarRelease', task ':sqflite_android:extractReleaseAnnotations', task ':sqflite_android:mergeReleaseConsumerProguardFiles', task ':sqflite_android:mergeReleaseJavaResource', task ':sqflite_android:syncReleaseLibJars', task ':sqflite_android:bundleReleaseLocalLintAar', task ':video_player_android:stripReleaseDebugSymbols', task ':video_player_android:copyReleaseJniLibsProjectAndLocalJars', task ':video_player_android:extractDeepLinksForAarRelease', task ':video_player_android:extractReleaseAnnotations', task ':video_player_android:mergeReleaseConsumerProguardFiles', task ':video_player_android:mergeReleaseJavaResource', task ':video_player_android:syncReleaseLibJars', task ':video_player_android:bundleReleaseLocalLintAar', task ':volume_controller:stripReleaseDebugSymbols', task ':volume_controller:copyReleaseJniLibsProjectAndLocalJars', task ':volume_controller:extractDeepLinksForAarRelease', task ':volume_controller:extractReleaseAnnotations', task ':volume_controller:mergeReleaseConsumerProguardFiles', task ':volume_controller:mergeReleaseJavaResource', task ':volume_controller:syncReleaseLibJars', task ':volume_controller:bundleReleaseLocalLintAar', task ':media_kit_libs_android_video:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:writeReleaseLintModelMetadata', task ':package_info_plus:writeReleaseLintModelMetadata', task ':screen_brightness_android:writeReleaseLintModelMetadata', task ':volume_controller:writeReleaseLintModelMetadata', task ':wakelock_plus:writeReleaseLintModelMetadata', task ':media_kit_video:lintVitalAnalyzeRelease', task ':media_kit_video:writeReleaseLintModelMetadata', task ':package_info_plus:lintVitalAnalyzeRelease', task ':path_provider_android:lintVitalAnalyzeRelease', task ':path_provider_android:writeReleaseLintModelMetadata', task ':screen_brightness_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:lintVitalAnalyzeRelease', task ':shared_preferences_android:writeReleaseLintModelMetadata', task ':sqflite_android:lintVitalAnalyzeRelease', task ':sqflite_android:writeReleaseLintModelMetadata', task ':video_player_android:lintVitalAnalyzeRelease', task ':video_player_android:writeReleaseLintModelMetadata', task ':volume_controller:lintVitalAnalyzeRelease', task ':wakelock_plus:lintVitalAnalyzeRelease', task ':app:lintVitalAnalyzeRelease', task ':media_kit_libs_android_video:generateReleaseLintVitalModel', task ':media_kit_video:generateReleaseLintVitalModel', task ':package_info_plus:generateReleaseLintVitalModel', task ':path_provider_android:generateReleaseLintVitalModel', task ':screen_brightness_android:generateReleaseLintVitalModel', task ':shared_preferences_android:generateReleaseLintVitalModel', task ':sqflite_android:generateReleaseLintVitalModel', task ':video_player_android:generateReleaseLintVitalModel', task ':volume_controller:generateReleaseLintVitalModel', task ':wakelock_plus:generateReleaseLintVitalModel', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:convertShrunkResourcesToBinaryRelease', task ':app:optimizeReleaseResources', task ':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task ':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease', task ':media_kit_libs_android_video:bundleReleaseAar', task ':media_kit_libs_android_video:mapReleaseSourceSetPaths', task ':media_kit_libs_android_video:mergeReleaseResources', task ':media_kit_libs_android_video:verifyReleaseResources', task ':media_kit_libs_android_video:assembleRelease', task ':media_kit_video:bundleReleaseAar', task ':media_kit_video:mapReleaseSourceSetPaths', task ':media_kit_video:mergeReleaseResources', task ':package_info_plus:compileReleaseLibraryResources', task ':screen_brightness_android:compileReleaseLibraryResources', task ':volume_controller:compileReleaseLibraryResources', task ':wakelock_plus:compileReleaseLibraryResources', task ':media_kit_video:verifyReleaseResources', task ':media_kit_video:assembleRelease', task ':package_info_plus:bundleReleaseAar', task ':package_info_plus:mapReleaseSourceSetPaths', task ':package_info_plus:mergeReleaseResources', task ':package_info_plus:verifyReleaseResources', task ':package_info_plus:assembleRelease', task ':path_provider_android:bundleReleaseAar', task ':path_provider_android:mapReleaseSourceSetPaths', task ':path_provider_android:mergeReleaseResources', task ':path_provider_android:verifyReleaseResources', task ':path_provider_android:assembleRelease', task ':screen_brightness_android:bundleReleaseAar', task ':screen_brightness_android:mapReleaseSourceSetPaths', task ':screen_brightness_android:mergeReleaseResources', task ':screen_brightness_android:verifyReleaseResources', task ':screen_brightness_android:assembleRelease', task ':shared_preferences_android:bundleReleaseAar', task ':shared_preferences_android:mapReleaseSourceSetPaths', task ':shared_preferences_android:mergeReleaseResources', task ':shared_preferences_android:verifyReleaseResources', task ':shared_preferences_android:assembleRelease', task ':sqflite_android:bundleReleaseAar', task ':sqflite_android:mapReleaseSourceSetPaths', task ':sqflite_android:mergeReleaseResources', task ':sqflite_android:verifyReleaseResources', task ':sqflite_android:assembleRelease', task ':video_player_android:bundleReleaseAar', task ':video_player_android:mapReleaseSourceSetPaths', task ':video_player_android:mergeReleaseResources', task ':video_player_android:verifyReleaseResources', task ':video_player_android:assembleRelease', task ':volume_controller:bundleReleaseAar', task ':volume_controller:mapReleaseSourceSetPaths', task ':volume_controller:mergeReleaseResources', task ':volume_controller:verifyReleaseResources', task ':volume_controller:assembleRelease', task ':wakelock_plus:bundleReleaseAar', task ':wakelock_plus:mapReleaseSourceSetPaths', task ':wakelock_plus:mergeReleaseResources', task ':wakelock_plus:verifyReleaseResources', task ':wakelock_plus:assembleRelease'] +[ +1 ms] Tasks that were excluded: [] +[ ] work action Parameters of FilterShrinkerRulesTransform (Thread[Execution worker Thread 3,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 3,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 3,5,main]) started. +[ ] work action Parameters of ExtractAarTransform (Thread[Execution worker Thread 3,5,main]) started. +[ ] Resolve mutations for :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 3,5,main]) started. +[ ] :app:ReleaseMinSdkCheck (Thread[Execution worker Thread 7,5,main]) started. +[ ] > Task :app:ReleaseMinSdkCheck +[ ] Caching disabled for task ':app:ReleaseMinSdkCheck' because: +[ ] Build cache is disabled +[ ] Task ':app:ReleaseMinSdkCheck' is not up-to-date because: +[ ] Task has not declared any outputs despite executing actions. +[ ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 7,5,main]) started. +[ ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 7,5,main]) started. +[+1994 ms] > Task :app:compileFlutterBuildRelease +[ ] Caching disabled for task ':app:compileFlutterBuildRelease' because: +[ ] Build cache is disabled +[ ] Caching has not been enabled for the task +[ ] Task ':app:compileFlutterBuildRelease' is not up-to-date because: +[ ] Task has failed previously. +[ ] Starting process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat''. Working directory: C:\GIT\xtremobile Command: C:\Users\Bureau\dart\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile C:\GIT\xtremobile\build\app\intermediates\flutter\release/flutter_build.d --output C:\GIT\xtremobile\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true -dTreeShakeIcons=true --DartDefines=RkxVVFRFUl9WRVJTSU9OPTMuNDEuNQ==,RkxVVFRFUl9DSEFOTkVMPXN0YWJsZQ==,RkxVVFRFUl9HSVRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9mbHV0dGVyL2ZsdXR0ZXIuZ2l0,RkxVVFRFUl9GUkFNRVdPUktfUkVWSVNJT049MmM5ZWIyMDczOQ==,RkxVVFRFUl9FTkdJTkVfUkVWSVNJT049MDUyZjMxZDExNQ==,RkxVVFRFUl9EQVJUX1ZFUlNJT049My4xMS4z -dFlavor= -dAndroidArchs=android-arm64 -dMinSdkVersion=24 android_aot_bundle_release_android-arm64 +[ ] Successfully started process 'command 'C:\Users\Bureau\dart\flutter\bin\flutter.bat'' +[ ] [ +142 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +7 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ +35 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. +[ ] [ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterEngineStamp' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. +[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ +3 ms] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. +[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. +[ ] [ +18 ms] Initializing file store +[ ] [ +1 ms] Done initializing file store diff --git a/config.txt b/config.txt new file mode 100644 index 0000000..417e029 --- /dev/null +++ b/config.txt @@ -0,0 +1,63 @@ +Configure Flutter settings. + +To remove a setting, configure it to an empty string. + +The Flutter tool anonymously reports feature usage statistics and basic crash reports to help improve Flutter tools over time. See Google's privacy policy: https://www.google.com/intl/en/policies/privacy/ + +Global options: +-h, --help Print this usage information. +-v, --verbose Noisy logging, including all shell commands executed. + If used with "--help", shows hidden options. If used with "flutter doctor", shows additional diagnostic information. (Use "-vv" to force verbose logging in those cases.) +-d, --device-id Target device id or name (prefixes allowed). + --version Reports the version of this tool. + --enable-analytics Enable telemetry reporting each time a flutter or dart command runs. + --disable-analytics Disable telemetry reporting each time a flutter or dart command runs, until it is re-enabled. + --suppress-analytics Suppress analytics reporting for the current CLI invocation. + +Usage: flutter config [arguments] +-h, --help Print this usage information. + --list List all settings and their current values. + --clear-ios-signing-settings Clear the saved development certificate or provisioning profile choice used to sign apps for iOS device deployment. + --select-ios-signing-settings Complete prompt to select and save code signing settings used to sign apps for iOS device deployment. + --android-sdk The Android SDK directory. + --android-studio-dir The Android Studio installation directory. If unset, flutter will search for valid installations at well-known locations. + --jdk-dir The Java Development Kit (JDK) installation directory. If unset, flutter will search for one in the following order: + 1) the JDK bundled with the latest installation of Android Studio, + 2) the JDK found at the directory found in the JAVA_HOME environment variable, and + 3) the directory containing the java binary found in the user's path. + --build-dir= The relative path to override a projects build directory. + --[no-]enable-web Enable or disable Flutter for web. + (defaults to on) + --[no-]enable-linux-desktop Enable or disable support for desktop on Linux. + (defaults to on) + --[no-]enable-macos-desktop Enable or disable support for desktop on macOS. + (defaults to on) + --[no-]enable-windows-desktop Enable or disable support for desktop on Windows. + (defaults to on) + --[no-]enable-android Enable or disable Flutter for Android. + (defaults to on) + --[no-]enable-ios Enable or disable Flutter for iOS. + (defaults to on) + --[no-]enable-fuchsia Enable or disable Flutter for Fuchsia. + This setting applies only to the master channel. + --[no-]enable-custom-devices Enable or disable early support for custom device types. + --[no-]cli-animations Enable or disable animations in the command line interface. + (defaults to on) + --[no-]enable-native-assets Enable or disable native assets compilation and bundling. + (defaults to on) + --[no-]enable-dart-data-assets Enable or disable Dart data assets building and bundling. + This setting applies only to the master channel. + --[no-]enable-swift-package-manager Enable or disable support for Swift Package Manager for iOS and macOS. + --[no-]omit-legacy-version-file Enable or disable stops writing the legacy version file. If set, the file {FLUTTER_ROOT}/version is no longer written as part of the flutter tool execution; a newer file format has existed for some time in {FLUTTER_ROOT}/bin/cache/flutter.version.json. + (defaults to on) + --[no-]enable-windowing Enable or disable support for windowing on macOS, Linux, and Windows. + This setting applies only to the master channel. + --[no-]enable-lldb-debugging Enable or disable support for debugging with LLDB for physical iOS devices. If LLDB debugging is off, Xcode debugging is used instead. Only available for iOS 17 or newer devices. Requires Xcode 26 or greater. + (defaults to on) + --[no-]enable-uiscene-migration Enable or disable support for migrating to UIScene lifecycle. If enabled, Flutter will migrate your app to iOS UIScene lifecycle if possible or otherwise instruct you to migrate manually. + (defaults to on) + --clear-features Remove all configured features and restore them to the default values. + +Run "flutter help" to see global options. + +Analytics reporting is currently enabled. diff --git a/dart_analyze_v10.txt b/dart_analyze_v10.txt new file mode 100644 index 0000000000000000000000000000000000000000..49838ecb16e9be2d0659bab07654d8cfec35539b GIT binary patch literal 84928 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 VWjOHYu|LvCFpTs$tJv@S{2P?Y>K6b2 literal 0 HcmV?d00001 diff --git a/dart_analyze_v8_utf8.txt b/dart_analyze_v8_utf8.txt new file mode 100644 index 0000000..3679b1c --- /dev/null +++ b/dart_analyze_v8_utf8.txt @@ -0,0 +1,319 @@ +Analyzing xtremobile... + + error - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart' - bin_backup\api\auth_handler.dart:3:8 - uri_does_not_exist + error - Undefined class 'Router' - bin_backup\api\auth_handler.dart:11:3 - undefined_class + error - The method 'Router' isn't defined for the type 'AuthHandler' - bin_backup\api\auth_handler.dart:12:20 - undefined_method + error - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart' - bin_backup\api\playlists_handler.dart:3:8 - uri_does_not_exist + error - Undefined class 'Router' - bin_backup\api\playlists_handler.dart:11:3 - undefined_class + error - The method 'Router' isn't defined for the type 'PlaylistsHandler' - bin_backup\api\playlists_handler.dart:12:20 - undefined_method + error - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart' - bin_backup\api\settings_handler.dart:3:8 - uri_does_not_exist + error - Undefined class 'Router' - bin_backup\api\settings_handler.dart:11:3 - undefined_class + error - The method 'Router' isn't defined for the type 'SettingsHandler' - bin_backup\api\settings_handler.dart:12:20 - undefined_method + error - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart' - bin_backup\api\users_handler.dart:3:8 - uri_does_not_exist + error - Undefined class 'Router' - bin_backup\api\users_handler.dart:11:3 - undefined_class + error - The method 'Router' isn't defined for the type 'UsersHandler' - bin_backup\api\users_handler.dart:12:20 - undefined_method + error - Target of URI doesn't exist: 'package:sqlite3/sqlite3.dart' - bin_backup\database\database.dart:2:8 - uri_does_not_exist + error - Undefined class 'Database' - bin_backup\database\database.dart:10:14 - undefined_class + error - Undefined name 'sqlite3' - bin_backup\database\database.dart:23:11 - undefined_identifier + info - Don't invoke 'print' in production code - bin_backup\database\database.dart:26:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\database\database.dart:110:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\middleware\security_middleware.dart:55:11 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\middleware\security_middleware.dart:99:12 - avoid_print + error - Target of URI doesn't exist: 'package:shelf_static/shelf_static.dart' - bin_backup\server.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: 'package:shelf_router/shelf_router.dart' - bin_backup\server.dart:7:8 - uri_does_not_exist + error - The function 'Router' isn't defined - bin_backup\server.dart:44:21 - undefined_function + error - The function 'Router' isn't defined - bin_backup\server.dart:85:22 - undefined_function + error - The function 'createStaticHandler' isn't defined - bin_backup\server.dart:109:29 - undefined_function + info - Don't invoke 'print' in production code - bin_backup\server.dart:171:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:172:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:173:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:174:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:175:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:180:5 - avoid_print + error - Undefined class 'Router' - bin_backup\server.dart:185:27 - undefined_class + info - Don't invoke 'print' in production code - bin_backup\server.dart:273:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:325:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:356:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:357:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:372:3 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:373:28 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:408:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:419:11 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:440:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:444:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:469:7 - avoid_print +warning - The declaration '_activeStreams' isn't referenced - bin_backup\server.dart:564:28 - unused_element + info - Don't invoke 'print' in production code - bin_backup\server.dart:598:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:599:7 - avoid_print +warning - The value of the local variable 'isVod' isn't used - bin_backup\server.dart:603:13 - unused_local_variable + info - Don't invoke 'print' in production code - bin_backup\server.dart:718:11 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:722:11 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:730:11 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:737:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:751:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\server.dart:752:7 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:17:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:19:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:24:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:30:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:41:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:46:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:59:9 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:72:5 - avoid_print + info - Don't invoke 'print' in production code - bin_backup\services\cleanup_service.dart:103:7 - avoid_print + info - Dangling library doc comment - lib\core\api\dns_service.dart:1:1 - dangling_library_doc_comments + error - The name '_DnsCacheEntry' isn't a type, so it can't be used as a type argument - lib\core\api\dns_service.dart:28:21 - non_type_as_type_argument +warning - The value of the field '_cacheTtlSeconds' isn't used - lib\core\api\dns_service.dart:33:20 - unused_field + error - The method '_DnsCacheEntry' isn't defined for the type 'UnifiedDnsService' - lib\core\api\dns_service.dart:65:28 - undefined_method + error - The property 'isExpired' can't be unconditionally accessed because the receiver can be 'null' - lib\core\api\dns_service.dart:152:55 - unchecked_use_of_nullable_value + error - Classes can't be declared inside other classes - lib\core\api\dns_service.dart:162:10 - class_in_class +warning - The declaration '_getOrCreateEncryptionKey' isn't referenced - lib\core\database\hive_service.dart:43:28 - unused_element + info - Missing a required trailing comma - lib\core\patterns\stream_resolver_pattern.dart:41:27 - require_trailing_commas +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:43:23 - unnecessary_cast +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:44:27 - unnecessary_cast +warning - The value of the field '_availablePlayers' isn't used - lib\core\patterns\video_player_wrapper.dart:9:16 - unused_field + error - Enums can't be declared inside classes - lib\core\patterns\video_player_wrapper.dart:12:3 - enum_in_class + error - Undefined class 'PlayerType' - lib\core\patterns\video_player_wrapper.dart:15:10 - undefined_class + error - Undefined name 'PlayerType' - lib\core\patterns\video_player_wrapper.dart:22:12 - undefined_identifier + error - There's no constant named 'no' in 'MPVLogLevel' - lib\core\patterns\video_player_wrapper.dart:53:64 - undefined_enum_constant + error - Undefined class 'PlayerType' - lib\core\patterns\video_player_wrapper.dart:78:53 - undefined_class + error - Undefined name 'PlayerType' - lib\core\patterns\video_player_wrapper.dart:80:7 - undefined_identifier + error - Undefined name 'PlayerType' - lib\core\patterns\video_player_wrapper.dart:81:7 - undefined_identifier + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:40:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:74:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:86:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:18:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:21:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:25:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:28:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:31:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:42:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:47:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:50:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:52:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:56:7 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:68:64 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:69:60 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:151:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:154:35 - deprecated_member_use + info - Dangling library doc comment - lib\core\utils\device_info.dart:1:1 - dangling_library_doc_comments + info - The imported package 'device_info_plus' isn't a dependency of the importing package - lib\core\utils\device_info.dart:7:8 - depend_on_referenced_packages + error - Target of URI doesn't exist: 'package:device_info_plus/device_info_plus.dart' - lib\core\utils\device_info.dart:7:8 - uri_does_not_exist + error - The method 'DeviceInfoPlugin' isn't defined for the type 'DeviceInfo' - lib\core\utils\device_info.dart:27:26 - undefined_method + error - Undefined class 'AndroidDeviceInfo' - lib\core\utils\device_info.dart:52:30 - undefined_class + error - List literals require one type argument or none, but 2 found - lib\core\utils\hive_encryption_benchmark.dart:7:27 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:16:13 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:45:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:65:9 - await_only_futures + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:96:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:121:9 - await_only_futures + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:160:15 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:165:124 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:167:118 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:172:122 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:174:116 - require_trailing_commas + error - A value of type 'List' can't be returned from the method 'toJson' because it has a return type of 'List>' - lib\core\utils\hive_encryption_benchmark.dart:203:12 - return_of_invalid_type + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:231:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:232:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:233:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:234:11 - extra_positional_arguments + info - Dangling library doc comment - lib\core\utils\image_cache_config.dart:1:1 - dangling_library_doc_comments + info - The imported package 'flutter_cache_manager' isn't a dependency of the importing package - lib\core\utils\image_cache_config.dart:11:8 - depend_on_referenced_packages +warning - The value of the field '_cacheSizeInBytes' isn't used - lib\core\utils\image_cache_config.dart:15:20 - unused_field + error - The named parameter 'diskUsagePercentageHigh' isn't defined - lib\core\utils\image_cache_config.dart:22:7 - undefined_named_parameter + error - The named parameter 'diskUsagePercentageGoal' isn't defined - lib\core\utils\image_cache_config.dart:23:7 - undefined_named_parameter + error - List literals require one type argument or none, but 2 found - lib\core\utils\memory_profiler.dart:7:29 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:68:13 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:78:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:90:13 - prefer_interpolation_to_compose_strings + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:129:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:130:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:160:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:161:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:162:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:163:11 - extra_positional_arguments + info - Use interpolation to compose strings and values - lib\core\utils\startup_profiler.dart:38:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\startup_profiler.dart:42:9 - avoid_print +warning - Unused import: 'dart:async' - lib\core\utils\video_profiler.dart:1:8 - unused_import + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:84:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:96:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:100:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:144:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:145:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:146:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:147:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:148:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:149:5 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:96:47 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:132:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:133:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:164:57 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:230:61 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:78 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:112:40 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:223:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:225:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:283:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:373:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:380:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:424:53 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:34:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:36:52 - deprecated_member_use + error - Undefined class 'ShortEPG' - lib\features\iptv\screens\lite_player_screen.dart:62:3 - undefined_class + error - The method 'getLiveStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\lite_player_screen.dart:185:29 - undefined_method + error - The method 'getVodStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\lite_player_screen.dart:187:33 - undefined_method + error - The method 'getSeriesStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\lite_player_screen.dart:191:33 - undefined_method + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:205:8 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:226:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:238:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:307:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:312:9 - curly_braces_in_flow_control_structures + error - The method 'dispose' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\lite_player_screen.dart:354:21 - undefined_method + info - Use 'const' with the constructor to improve performance - lib\features\iptv\screens\lite_player_screen.dart:397:41 - prefer_const_constructors + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:412:60 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:465:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:467:7 - curly_braces_in_flow_control_structures + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\lite_player_screen.dart:498:35 - deprecated_member_use + error - Target of URI doesn't exist: '../../../widgets/mobile_scaffold.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:5:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:11:8 - uri_does_not_exist + error - Undefined name 'mobileDashboardIndexProvider' - lib\features\iptv\screens\mobile_dashboard_screen.dart:29:36 - undefined_identifier + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_dashboard_screen.dart:36:13 - undefined_identifier + error - The method 'MobileScaffold' isn't defined for the type '_MobileDashboardScreenState' - lib\features\iptv\screens\mobile_dashboard_screen.dart:37:14 - undefined_method + error - Undefined name 'mobileDashboardIndexProvider' - lib\features\iptv\screens\mobile_dashboard_screen.dart:40:20 - undefined_identifier + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_playlist_screen.dart:6:8 - uri_does_not_exist + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:230:41 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:232:48 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:374:31 - use_build_context_synchronously + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_playlist_screen.dart:391:13 - undefined_identifier + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:530:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:546:46 - deprecated_member_use + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:9:8 - uri_does_not_exist + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:206:13 - undefined_identifier + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:342:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:345:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:364:46 - deprecated_member_use + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:7:8 - uri_does_not_exist + error - Undefined class 'Series' - lib\features\iptv\screens\mobile_series_detail_screen.dart:13:9 - undefined_class + error - Undefined class 'SeriesInfo' - lib\features\iptv\screens\mobile_series_detail_screen.dart:29:3 - undefined_class + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesDetailScreenState' - lib\features\iptv\screens\mobile_series_detail_screen.dart:57:26 - undefined_method + error - The method 'getSeriesInfo' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\screens\mobile_series_detail_screen.dart:59:25 - unchecked_use_of_nullable_value + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_series_detail_screen.dart:161:46 - deprecated_member_use + error - Undefined class 'Episode' - lib\features\iptv\screens\mobile_series_detail_screen.dart:307:28 - undefined_class + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\screens\mobile_series_detail_screen.dart:308:36 - undefined_identifier + error - Undefined name 'MobileWatchHistory' - lib\features\iptv\screens\mobile_series_detail_screen.dart:309:24 - undefined_identifier + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:169:29 - require_trailing_commas + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:194:117 - require_trailing_commas + error - The method 'dispose' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\native_player_screen.dart:469:21 - undefined_method + error - Undefined class 'ShortEPG' - lib\features\iptv\screens\native_player_screen.dart:681:3 - undefined_class + error - The method 'getLiveStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\native_player_screen.dart:711:37 - undefined_method + error - The method 'getVodStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\native_player_screen.dart:713:37 - undefined_method + error - The method 'getSeriesStreamUrl' isn't defined for the type 'XtreamServiceMobile' - lib\features\iptv\screens\native_player_screen.dart:718:37 - undefined_method +warning - The declaration '_cycleAudioTrack' isn't referenced - lib\features\iptv\screens\native_player_screen.dart:992:16 - unused_element + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1218:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1396:29 - deprecated_member_use + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:1528:45 - require_trailing_commas + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1693:29 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1695:48 - deprecated_member_use + info - Dangling library doc comment - lib\features\iptv\services\xtream_service_mobile.dart:1:1 - dangling_library_doc_comments + error - The getter 'serverUrl' isn't defined for the type 'PlaylistConfig' - lib\features\iptv\services\xtream_service_mobile.dart:47:23 - undefined_getter + error - The getter 'instance' isn't defined for the type 'ApiClient' - lib\features\iptv\services\xtream_service_mobile.dart:52:22 - undefined_getter + info - Missing a required trailing comma - lib\features\iptv\services\xtream_service_mobile.dart:130:46 - require_trailing_commas + error - The method 'fromJson' isn't defined for the type 'Category' - lib\features\iptv\services\xtream_service_mobile.dart:192:34 - undefined_method + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\services\xtream_service_mobile.dart:203:15 - non_type_as_type_argument + error - Undefined name 'Movie' - lib\features\iptv\services\xtream_service_mobile.dart:218:25 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:7:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:8:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:14:8 - uri_does_not_exist + error - The method 'Timer' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:45:22 - undefined_method + error - Undefined class 'Timer' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:59:3 - undefined_class + error - The method 'mobileLiveChannelsProvider' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:76:19 - undefined_method + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:77:33 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:78:32 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:79:31 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:80:33 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:405:22 - undefined_identifier + error - The method 'LiveTvUiState' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:406:17 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:423:54 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:426:39 - deprecated_member_use + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:499:31 - undefined_identifier + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileChannelCardState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:570:26 - undefined_method + error - The method 'getShortEPG' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:571:33 - unchecked_use_of_nullable_value + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:589:33 - undefined_identifier + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:596:19 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_movies_tab.dart:9:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_movies_tab.dart:10:8 - uri_does_not_exist + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_movies_tab.dart:30:8 - non_type_as_type_argument + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_movies_tab.dart:35:8 - non_type_as_type_argument + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:87:26 - undefined_method + error - The method 'searchMovies' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:88:37 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:107:26 - undefined_method + error - The method 'getVodCategories' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:108:43 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:132:26 - undefined_method + error - The method 'getMoviesByCategory' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:133:36 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:168:26 - undefined_method + error - The method 'clearCache' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:169:15 - unchecked_use_of_nullable_value + error - Undefined class 'Movie' - lib\features\iptv\widgets\mobile_movies_tab.dart:200:41 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:221:32 - undefined_identifier + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:222:36 - undefined_identifier + info - Use 'const' with the constructor to improve performance - lib\features\iptv\widgets\mobile_movies_tab.dart:402:53 - prefer_const_constructors + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:476:41 - undefined_identifier + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:496:41 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_series_tab.dart:11:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_series_tab.dart:12:8 - uri_does_not_exist + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:29:14 - non_type_as_type_argument + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:30:8 - non_type_as_type_argument + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:89:26 - undefined_method + error - The method 'searchSeries' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:90:37 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:111:26 - undefined_method + error - The method 'getSeriesPaginated' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:115:12 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:144:26 - undefined_method + error - The method 'clearCache' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:145:15 - unchecked_use_of_nullable_value + error - Undefined class 'Series' - lib\features\iptv\widgets\mobile_series_tab.dart:175:20 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_series_tab.dart:193:32 - undefined_identifier + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:195:10 - non_type_as_type_argument + error - The property 'categoryName' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:202:60 - unchecked_use_of_nullable_value + error - The property 'seriesId' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:211:19 - unchecked_use_of_nullable_value + error - The property 'name' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:212:22 - unchecked_use_of_nullable_value + error - The property 'cover' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:213:38 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:214:25 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:214:61 - unchecked_use_of_nullable_value + error - The property 'seriesId' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:293:42 - unchecked_use_of_nullable_value + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:7:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../widgets/tv_focusable.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:8:8 - uri_does_not_exist + error - Undefined class 'MobileSettings' - lib\features\iptv\widgets\mobile_settings_tab.dart:44:25 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:63:32 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:124:23 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:143:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:162:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:180:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:193:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:206:25 - undefined_identifier + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:334:14 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_settings_tab.dart:376:44 - deprecated_member_use + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:410:14 - undefined_method +warning - Unused import: 'package:hive_flutter/hive_flutter.dart' - lib\main.dart:3:8 - unused_import + info - The import of '../../core/models/iptv_models.dart' is unnecessary because all of the used elements are also provided by the import of '../../features/iptv/models/xtream_models.dart' - lib\mobile\providers\mobile_xtream_providers.dart:3:8 - unnecessary_import + error - The returned type 'Future>' isn't returnable from a 'Future>>' function, as required by the closure's context - lib\mobile\providers\mobile_xtream_providers.dart:27:10 - return_of_invalid_type_from_closure + error - 1 positional argument expected by 'getLiveChannels', but 0 found - lib\mobile\providers\mobile_xtream_providers.dart:27:34 - not_enough_positional_arguments + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:32:32 - non_type_as_type_argument + error - The method 'getMoviesPaginated' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:34:18 - undefined_method + error - The method 'getSeriesPaginated' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:41:18 - undefined_method + error - The name 'SeriesInfo' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:46:27 - non_type_as_type_argument + error - The name 'SeriesInfo' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:70:27 - non_type_as_type_argument + error - The method 'getSeriesInfo' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:73:18 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\theme\mobile_theme.dart:60:50 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:56:24 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:58:58 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:61:43 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:131:32 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:248:36 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:253:41 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:160:34 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:166:34 - deprecated_member_use + error - The name 'MyApp' isn't a class - test\widget_test.dart:16:35 - creation_with_non_type + diff --git a/dart_analyze_v9.txt b/dart_analyze_v9.txt new file mode 100644 index 0000000000000000000000000000000000000000..ac007b7e42ee53c41144d1ebc8b4b0e406d12e45 GIT binary patch literal 77470 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 Lp0kR7iSK^{H-jR) literal 0 HcmV?d00001 diff --git a/doctor_cmd.txt b/doctor_cmd.txt new file mode 100644 index 0000000..98e9347 --- /dev/null +++ b/doctor_cmd.txt @@ -0,0 +1,31 @@ +[√] Flutter (Channel stable, 3.41.5, on Microsoft Windows [version 10.0.22631.6199], locale fr-FR) [145ms] + • Flutter version 3.41.5 on channel stable at C:\Users\Bureau\dart\flutter + • Upstream repository https://github.com/flutter/flutter.git + • Framework revision 2c9eb20739 (8 days ago), 2026-03-17 16:14:01 -0700 + • Engine revision 052f31d115 + • Dart version 3.11.3 + • DevTools version 2.54.2 + • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration + +[√] Windows Version (11 Professionnel 64 bits, 23H2, 2009) [1 967ms] + +[X] Android toolchain - develop for Android devices [17ms] + X ANDROID_HOME = C:\Users\Bureau\AppData\Local\Android\Sdk + but Android SDK not found at this location. + +[√] Chrome - develop for the web [6ms] + • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe + +[X] Visual Studio - develop Windows apps [5ms] + X Visual Studio not installed; this is necessary to develop Windows apps. + Download at https://visualstudio.microsoft.com/downloads/. + Please install the "Desktop development with C++" workload, including all of its default components + +[√] Connected device (2 available) [58ms] + • Windows (desktop) • windows • windows-x64 • Microsoft Windows [version 10.0.22631.6199] + • Chrome (web) • chrome • web-javascript • Google Chrome 145.0.7632.160 + +[√] Network resources [309ms] + • All expected network resources are available. + +! Doctor found issues in 2 categories. diff --git a/doctor_final_check.txt b/doctor_final_check.txt new file mode 100644 index 0000000000000000000000000000000000000000..7658ad70833fdadbf039c66ab6660900470546b7 GIT binary patch literal 4282 zcmb`K%TgOx5Qcl5s=UL5m0Y%DNf=>Bc|o`&A&GHeo45*5vCsu$grs65Y@RSL;ANg5 z+w7Bk|7jg&G#Vg_)YNEnZhiXl_ka5Q^Y^iRu|Mq(JF&#}Y-lr^^7QSBcEz^sgLQ1g z(`PKPl(CMT^1p9SXs=q$o>_z6wa^|jGqGRn+`32@Gk=2~^{@j!wmvTfTot!;1FSAI+R{~dn3qSfKs#_A5ODgOow9xl`I ztxb?Hov*$`y5vmIMxL7Ty|Np6Kk$DV=5E?kp0hCef&EVLT9>Ko?DOJ~S<6e6g3if)zfD!&a@ zCH%JVVFN5}(%+y*gV^SF*QqJPrL_tUN~ptvCl? z@_;jdk1yIMA81^@)tZ#2Pmj+P#+4IQWcI;>?7N}07>O#LJr6U={5M43Q`X3Pr^MoH zj;pg0D`v<^*+V)?AMJh?@+8`zIP1-`YLWSlSSyx@yjKZ0OYBwf-+)nB>7$W%Ti_@` zKUwRxH^Jo(AWJqWr|RUKv*0Ry&za>MSkz`~AyNtQ9Kp_W$|&Vt68s@Qig72j2YhuV z6xYjd$~}2SSx{M;@!EFmCq@>dqO)U-+;Gm1{QU$Th?*DKySQ_do9E!gIb~V5OVnmq zrB!ZGQLh<3xZu@EH7d>ASM&Am6LEBhnHm18*wzY>5u${>9zKnpmY4Fjmub0WFY(%; z9oUb2ehmGqlI40j?hN zwgVDJVUF*Rw?T1x!}+9KNo;=}eQ%{;sSj4pLr(VDNxJDgo3cV&z7Kwmc=I+Z--I#o z%ZT`?t#enlUC|$TvbGQ{*JI2)vCN1_sBRdB-JC`8yE;ZE%#kL_su}wCgP-09Zq8Rm z;?YsC;f$G8p6IP!(DQ|@V5!S`io`KzvCmks_n&ruQlLy3~ z^4Tt}GXE^sVTz{esyg@-2A{LK5_r#1s*`wqo|Q4$Rr{HEzJ^`OwB8CnUFHR`yfdY| zC?trT)iXhJMc%z2nR&KU#i=;EW%n^rM2w$}swmg7>h9`qQL~ve-g#tDs1$2kVLSRtnnq96u)28D$ZB7&UNY$^Ik>EYxLkFZP+Igw z#t$p#Dm=vMs%Uk_NvfRWJ7McF&kFxy1s&}ayU6RRh1?cZv&s-fKsS#;n4z=YcN#FJ zQ%mvk+FmyT#Y8-i=FpYh=C;EOkDF&))Y>ysncqa7Gq?~Rc{J7$I>qkJr(&EdL@@6o zNr~JhujFrk<^5GM#VZ{@`{S%-9{WG;lVxm{&u{t1xkZ*_Pt+=(r zPATzTHY?97!b-*%;^1euwUIb&l{o1((t@`$9?2s862DJxQRep{-Mn?Ph;`X9TrbwY zJD!or#aDhxN7M*I56KrND1(;Kl=1vGj4S86Nb}lD6_n00)d9+JWx1agUWw`^sQbP& L(H&B}{=pswjcufl>>B--_OX4$oIfAz zSNntas()1riryrdRl_?XkYI^?JGEo$*-Oq<+*01ZB93cDeSUj*-DkAnZBmMGosBPT zg@#SG`x@=iv%(rhYQyi^ZkfH}eG_Dl?Q@=KSiR!B0Z|(wcg<}1yz01_?W(imoOAl< z7?UrZ`8KoU9p~gZ>u}N$G6OQ!vIBBwqWFy)*uIpu_~@SKMyh3 z+I!+PVl5?4!pN#d_8NV{Mfx9PZ-U-ft@rB|M~pzpl6|9^vsL41m>=Th3=6bl2EG&l zX8>O>`==OaU9r`klxNJ0%L?PFi3U2y;6eV~GAd`HL1bq^qAq@O>>aR2(HoG9X@;w5 zjTc+=q?{oeWsgpuhB}EpD9`#7S+&Z1uh=V=h`hHKaF*DM5Wfkl^3qo$?{>jaf_?JV zeeZzFuR)f4Qcbm}JZC}8b&+xobZcG*em^N?DM6Q`*Evqrq`Fh(3fp3QAxX#-10+`6 z?{eaL*(^@);L9%mz7Bhz*%?gz+`i%WXKa5?pLoK`mwfJH&=c%fu}^5|!=v9}k@taK z#j2iNVE@}v#i?`s1rTKk|ikBxEK0)v`vvyR8@~f zuX>Df51Qwn88Kf%t=~%K z!N-w(!OlEqo;lT#qcp{0@1R2eF4q6ePS16`QRw%K{WqMhD(T~U#7ng^duQ@U$V}Lq%H!U#QTb!ko76g1Kwi) zkA8}Abds3deNiu#_sW3oO_LxYrt*^}tZi8nV*O^K`;2m;Q_}*r^1JA1knp_eKC1W@ z`9`;l4s(5&s*gSDo!%{-1rOoJT_%dPRL$~U(4BWr>4>t5N%7`dKi{BAoTbZm&j05w ztZIx{jP{iIVJ~A9d6GX-wpig>jq}b#4f`dFtGeA9|5qV*QL4x(LQ2jSy2(A_*5mj1 z10u3dmUNTqW;eMiTRtPVn}0CocRBrQ(5)!%E7EdsM?Oz7?1`&ZXdI%`F(U-sr(cYq rI@!fi&hVeGu8Nmt?}o)rA(lz8+54dIqOL5oi>Gxr(VkgYcb$I&XbDv3 literal 0 HcmV?d00001 diff --git a/doctor_log_utf8.txt b/doctor_log_utf8.txt new file mode 100644 index 0000000..d4d24f7 --- /dev/null +++ b/doctor_log_utf8.txt @@ -0,0 +1,31 @@ +[ÔêÜ] Flutter (Channel stable, 3.41.5, on Microsoft Windows [version 10.0.22631.6199], locale fr-FR) [169ms] + ÔÇó Flutter version 3.41.5 on channel stable at C:\Users\Bureau\dart\flutter + ÔÇó Upstream repository https://github.com/flutter/flutter.git + ÔÇó Framework revision 2c9eb20739 (8 days ago), 2026-03-17 16:14:01 -0700 + ÔÇó Engine revision 052f31d115 + ÔÇó Dart version 3.11.3 + ÔÇó DevTools version 2.54.2 + ÔÇó Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration + +[ÔêÜ] Windows Version (11 Professionnel 64 bits, 23H2, 2009) [2,6s] + +[X] Android toolchain - develop for Android devices [21ms] + X ANDROID_HOME = C:\Users\Bureau\AppData\Local\Android\Sdk + but Android SDK not found at this location. + +[ÔêÜ] Chrome - develop for the web [8ms] + ÔÇó Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe + +[X] Visual Studio - develop Windows apps [6ms] + X Visual Studio not installed; this is necessary to develop Windows apps. + Download at https://visualstudio.microsoft.com/downloads/. + Please install the "Desktop development with C++" workload, including all of its default components + +[ÔêÜ] Connected device (2 available) [83ms] + ÔÇó Windows (desktop) ÔÇó windows ÔÇó windows-x64 ÔÇó Microsoft Windows [version 10.0.22631.6199] + ÔÇó Chrome (web) ÔÇó chrome ÔÇó web-javascript ÔÇó Google Chrome 145.0.7632.160 + +[ÔêÜ] Network resources [327ms] + ÔÇó All expected network resources are available. + +! Doctor found issues in 2 categories. diff --git a/exact_url.txt b/exact_url.txt new file mode 100644 index 0000000000000000000000000000000000000000..df647624b036e0d077c900c665316d16d6a19131 GIT binary patch literal 168 zcmXYq(F%e<5Jk^(;HQ{WLgdec*rI~EqC(`yTc?s?*n8)mnSE~!i#0M+kXa8pj?_e} zRtH_B?#)UD^GVnGW~$(3bhq_J)W4km>3*j>vqA2gNAJy~Jb$y46FFD=%+0=VH!mfF M)Z)LZ+(^QK4}b9>0{{R3 literal 0 HcmV?d00001 diff --git a/final_analyze.txt b/final_analyze.txt new file mode 100644 index 0000000000000000000000000000000000000000..4885b7660907ab051a632708210307464b07e1a1 GIT binary patch literal 73080 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 K0xzB&um1zB?-peM literal 0 HcmV?d00001 diff --git a/final_analyze_utf8.txt b/final_analyze_utf8.txt new file mode 100644 index 0000000..a34ce53 --- /dev/null +++ b/final_analyze_utf8.txt @@ -0,0 +1,239 @@ +Analyzing xtremobile... + + info - Dangling library doc comment - lib\core\api\dns_service.dart:1:1 - dangling_library_doc_comments +warning - The value of the field '_cacheTtlSeconds' isn't used - lib\core\api\dns_service.dart:33:20 - unused_field +warning - The declaration '_getOrCreateEncryptionKey' isn't referenced - lib\core\database\hive_service.dart:43:28 - unused_element + info - Missing a required trailing comma - lib\core\patterns\stream_resolver_pattern.dart:41:27 - require_trailing_commas +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:43:23 - unnecessary_cast +warning - Unnecessary cast - lib\core\patterns\stream_resolver_pattern.dart:44:27 - unnecessary_cast +warning - Unused import: 'package:media_kit_video/media_kit_video.dart' - lib\core\patterns\video_player_wrapper.dart:3:8 - unused_import +warning - The value of the field '_availablePlayers' isn't used - lib\core\patterns\video_player_wrapper.dart:15:16 - unused_field + error - There's no constant named 'no' in 'MPVLogLevel' - lib\core\patterns\video_player_wrapper.dart:56:64 - undefined_enum_constant + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:40:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:74:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\playlist_api_service.dart:86:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:13:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:18:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:21:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:25:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:28:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:31:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:42:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:47:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:50:7 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:52:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\services\settings_api_service.dart:56:7 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:68:64 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_colors.dart:69:60 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:151:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\theme\app_theme.dart:154:35 - deprecated_member_use + info - Dangling library doc comment - lib\core\utils\device_info.dart:1:1 - dangling_library_doc_comments +warning - Unused import: 'dart:io' - lib\core\utils\device_info.dart:6:8 - unused_import + error - List literals require one type argument or none, but 2 found - lib\core\utils\hive_encryption_benchmark.dart:7:27 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:16:13 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:45:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:65:9 - await_only_futures + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:96:46 - require_trailing_commas + info - Uses 'await' on an instance of 'String', which is not a subtype of 'Future' - lib\core\utils\hive_encryption_benchmark.dart:121:9 - await_only_futures + info - Use interpolation to compose strings and values - lib\core\utils\hive_encryption_benchmark.dart:160:15 - prefer_interpolation_to_compose_strings + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:165:124 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:167:118 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:172:122 - require_trailing_commas + info - Missing a required trailing comma - lib\core\utils\hive_encryption_benchmark.dart:174:116 - require_trailing_commas + error - A value of type 'List' can't be returned from the method 'toJson' because it has a return type of 'List>' - lib\core\utils\hive_encryption_benchmark.dart:203:12 - return_of_invalid_type + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:231:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:232:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:233:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\hive_encryption_benchmark.dart:234:11 - extra_positional_arguments + info - Dangling library doc comment - lib\core\utils\image_cache_config.dart:1:1 - dangling_library_doc_comments +warning - The value of the field '_cacheSizeInBytes' isn't used - lib\core\utils\image_cache_config.dart:15:20 - unused_field + error - The named parameter 'diskUsagePercentageHigh' isn't defined - lib\core\utils\image_cache_config.dart:22:7 - undefined_named_parameter + error - The named parameter 'diskUsagePercentageGoal' isn't defined - lib\core\utils\image_cache_config.dart:23:7 - undefined_named_parameter + error - List literals require one type argument or none, but 2 found - lib\core\utils\memory_profiler.dart:7:29 - expected_one_list_type_arguments + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:68:13 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:78:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\memory_profiler.dart:90:13 - prefer_interpolation_to_compose_strings + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:129:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:130:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:160:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:161:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:162:11 - extra_positional_arguments + error - Too many positional arguments: 0 expected, but 1 found - lib\core\utils\memory_profiler.dart:163:11 - extra_positional_arguments + info - Use interpolation to compose strings and values - lib\core\utils\startup_profiler.dart:38:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\startup_profiler.dart:42:9 - avoid_print +warning - Unused import: 'dart:async' - lib\core\utils\video_profiler.dart:1:8 - unused_import + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:84:15 - prefer_interpolation_to_compose_strings + info - Use interpolation to compose strings and values - lib\core\utils\video_profiler.dart:96:13 - prefer_interpolation_to_compose_strings + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:100:9 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:144:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:145:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:146:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:147:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:148:5 - avoid_print + info - Don't invoke 'print' in production code - lib\core\utils\video_profiler.dart:149:5 - avoid_print + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:96:47 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:132:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:133:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:164:57 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:230:61 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:46 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\hero_carousel.dart:231:78 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:112:40 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:223:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:225:35 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:283:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:373:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:380:51 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\components\ui_components.dart:424:53 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:34:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\core\widgets\digital_clock.dart:36:52 - deprecated_member_use + error - Undefined class 'ShortEPG' - lib\features\iptv\screens\lite_player_screen.dart:62:3 - undefined_class + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:205:8 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:226:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:238:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:307:9 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:312:9 - curly_braces_in_flow_control_structures + info - Use 'const' with the constructor to improve performance - lib\features\iptv\screens\lite_player_screen.dart:397:41 - prefer_const_constructors + info - Missing a required trailing comma - lib\features\iptv\screens\lite_player_screen.dart:412:60 - require_trailing_commas + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:465:7 - curly_braces_in_flow_control_structures + info - Statements in an if should be enclosed in a block - lib\features\iptv\screens\lite_player_screen.dart:467:7 - curly_braces_in_flow_control_structures + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\lite_player_screen.dart:498:35 - deprecated_member_use + error - Target of URI doesn't exist: '../../../widgets/mobile_scaffold.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:5:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\screens\mobile_dashboard_screen.dart:11:8 - uri_does_not_exist + error - Undefined name 'mobileDashboardIndexProvider' - lib\features\iptv\screens\mobile_dashboard_screen.dart:29:36 - undefined_identifier + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_dashboard_screen.dart:36:13 - undefined_identifier + error - The method 'MobileScaffold' isn't defined for the type '_MobileDashboardScreenState' - lib\features\iptv\screens\mobile_dashboard_screen.dart:37:14 - undefined_method + error - Undefined name 'mobileDashboardIndexProvider' - lib\features\iptv\screens\mobile_dashboard_screen.dart:40:20 - undefined_identifier + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_playlist_screen.dart:6:8 - uri_does_not_exist + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:230:41 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:232:48 - use_build_context_synchronously + info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - lib\features\iptv\screens\mobile_playlist_screen.dart:374:31 - use_build_context_synchronously + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_playlist_screen.dart:391:13 - undefined_identifier + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:530:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_screen.dart:546:46 - deprecated_member_use + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:9:8 - uri_does_not_exist + error - Undefined name 'MobileTheme' - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:206:13 - undefined_identifier + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:342:52 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:345:33 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_playlist_selection_screen.dart:364:46 - deprecated_member_use + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:6:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\screens\mobile_series_detail_screen.dart:7:8 - uri_does_not_exist + error - Undefined class 'Series' - lib\features\iptv\screens\mobile_series_detail_screen.dart:13:9 - undefined_class + error - Undefined class 'SeriesInfo' - lib\features\iptv\screens\mobile_series_detail_screen.dart:29:3 - undefined_class + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesDetailScreenState' - lib\features\iptv\screens\mobile_series_detail_screen.dart:57:26 - undefined_method + error - The method 'getSeriesInfo' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\screens\mobile_series_detail_screen.dart:59:25 - unchecked_use_of_nullable_value + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\mobile_series_detail_screen.dart:161:46 - deprecated_member_use + error - Undefined class 'Episode' - lib\features\iptv\screens\mobile_series_detail_screen.dart:307:28 - undefined_class + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\screens\mobile_series_detail_screen.dart:308:36 - undefined_identifier + error - Undefined name 'MobileWatchHistory' - lib\features\iptv\screens\mobile_series_detail_screen.dart:309:24 - undefined_identifier + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:169:29 - require_trailing_commas + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:194:117 - require_trailing_commas + error - Undefined class 'ShortEPG' - lib\features\iptv\screens\native_player_screen.dart:681:3 - undefined_class +warning - The declaration '_cycleAudioTrack' isn't referenced - lib\features\iptv\screens\native_player_screen.dart:992:16 - unused_element + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1218:31 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1396:29 - deprecated_member_use + info - Missing a required trailing comma - lib\features\iptv\screens\native_player_screen.dart:1528:45 - require_trailing_commas + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1693:29 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\screens\native_player_screen.dart:1695:48 - deprecated_member_use + info - Dangling library doc comment - lib\features\iptv\services\xtream_service_mobile.dart:1:1 - dangling_library_doc_comments + error - The getter 'serverUrl' isn't defined for the type 'PlaylistConfig' - lib\features\iptv\services\xtream_service_mobile.dart:47:23 - undefined_getter + error - The getter 'instance' isn't defined for the type 'ApiClient' - lib\features\iptv\services\xtream_service_mobile.dart:52:22 - undefined_getter + info - Missing a required trailing comma - lib\features\iptv\services\xtream_service_mobile.dart:130:46 - require_trailing_commas + error - The method 'fromJson' isn't defined for the type 'Category' - lib\features\iptv\services\xtream_service_mobile.dart:192:34 - undefined_method + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\services\xtream_service_mobile.dart:203:15 - non_type_as_type_argument + error - Undefined name 'Movie' - lib\features\iptv\services\xtream_service_mobile.dart:218:25 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:7:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:8:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../theme/mobile_theme.dart' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:14:8 - uri_does_not_exist + error - The method 'Timer' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:45:22 - undefined_method + error - Undefined class 'Timer' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:59:3 - undefined_class + error - The method 'mobileLiveChannelsProvider' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:76:19 - undefined_method + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:77:33 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:78:32 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:79:31 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:80:33 - undefined_identifier + error - Undefined name 'mobileLiveTvUiStateProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:405:22 - undefined_identifier + error - The method 'LiveTvUiState' isn't defined for the type '_MobileLiveTVTabState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:406:17 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:423:54 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_live_tv_tab.dart:426:39 - deprecated_member_use + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:499:31 - undefined_identifier + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileChannelCardState' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:570:26 - undefined_method + error - The method 'getShortEPG' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:571:33 - unchecked_use_of_nullable_value + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:589:33 - undefined_identifier + error - Undefined name 'mobileFavoritesProvider' - lib\features\iptv\widgets\mobile_live_tv_tab.dart:596:19 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_movies_tab.dart:9:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_movies_tab.dart:10:8 - uri_does_not_exist + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_movies_tab.dart:30:8 - non_type_as_type_argument + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_movies_tab.dart:35:8 - non_type_as_type_argument + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:87:26 - undefined_method + error - The method 'searchMovies' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:88:37 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:107:26 - undefined_method + error - The method 'getVodCategories' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:108:43 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:132:26 - undefined_method + error - The method 'getMoviesByCategory' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:133:36 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileMoviesTabState' - lib\features\iptv\widgets\mobile_movies_tab.dart:168:26 - undefined_method + error - The method 'clearCache' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_movies_tab.dart:169:15 - unchecked_use_of_nullable_value + error - Undefined class 'Movie' - lib\features\iptv\widgets\mobile_movies_tab.dart:200:41 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:221:32 - undefined_identifier + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:222:36 - undefined_identifier + info - Use 'const' with the constructor to improve performance - lib\features\iptv\widgets\mobile_movies_tab.dart:402:53 - prefer_const_constructors + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:476:41 - undefined_identifier + error - Undefined name 'mobileWatchHistoryProvider' - lib\features\iptv\widgets\mobile_movies_tab.dart:496:41 - undefined_identifier + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_series_tab.dart:11:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../providers/mobile_xtream_providers.dart' - lib\features\iptv\widgets\mobile_series_tab.dart:12:8 - uri_does_not_exist + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:29:14 - non_type_as_type_argument + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:30:8 - non_type_as_type_argument + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:89:26 - undefined_method + error - The method 'searchSeries' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:90:37 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:111:26 - undefined_method + error - The method 'getSeriesPaginated' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:115:12 - unchecked_use_of_nullable_value + error - The method 'mobileXtreamServiceProvider' isn't defined for the type '_MobileSeriesTabState' - lib\features\iptv\widgets\mobile_series_tab.dart:144:26 - undefined_method + error - The method 'clearCache' can't be unconditionally invoked because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:145:15 - unchecked_use_of_nullable_value + error - Undefined class 'Series' - lib\features\iptv\widgets\mobile_series_tab.dart:175:20 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_series_tab.dart:193:32 - undefined_identifier + error - The name 'Series' isn't a type, so it can't be used as a type argument - lib\features\iptv\widgets\mobile_series_tab.dart:195:10 - non_type_as_type_argument + error - The property 'categoryName' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:202:60 - unchecked_use_of_nullable_value + error - The property 'seriesId' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:211:19 - unchecked_use_of_nullable_value + error - The property 'name' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:212:22 - unchecked_use_of_nullable_value + error - The property 'cover' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:213:38 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:214:25 - unchecked_use_of_nullable_value + error - The property 'rating' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:214:61 - unchecked_use_of_nullable_value + error - The property 'seriesId' can't be unconditionally accessed because the receiver can be 'null' - lib\features\iptv\widgets\mobile_series_tab.dart:293:42 - unchecked_use_of_nullable_value + error - Target of URI doesn't exist: '../../../providers/mobile_settings_providers.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:7:8 - uri_does_not_exist + error - Target of URI doesn't exist: '../../../widgets/tv_focusable.dart' - lib\features\iptv\widgets\mobile_settings_tab.dart:8:8 - uri_does_not_exist + error - Undefined class 'MobileSettings' - lib\features\iptv\widgets\mobile_settings_tab.dart:44:25 - undefined_class + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:63:32 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:124:23 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:143:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:162:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:180:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:193:25 - undefined_identifier + error - Undefined name 'mobileSettingsProvider' - lib\features\iptv\widgets\mobile_settings_tab.dart:206:25 - undefined_identifier + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:334:14 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\features\iptv\widgets\mobile_settings_tab.dart:376:44 - deprecated_member_use + error - The method 'TVFocusable' isn't defined for the type '_MobileSettingsTabState' - lib\features\iptv\widgets\mobile_settings_tab.dart:410:14 - undefined_method +warning - Unused import: 'package:hive_flutter/hive_flutter.dart' - lib\main.dart:3:8 - unused_import + info - The import of '../../core/models/iptv_models.dart' is unnecessary because all of the used elements are also provided by the import of '../../features/iptv/models/xtream_models.dart' - lib\mobile\providers\mobile_xtream_providers.dart:3:8 - unnecessary_import + error - The returned type 'Future>' isn't returnable from a 'Future>>' function, as required by the closure's context - lib\mobile\providers\mobile_xtream_providers.dart:27:10 - return_of_invalid_type_from_closure + error - 1 positional argument expected by 'getLiveChannels', but 0 found - lib\mobile\providers\mobile_xtream_providers.dart:27:34 - not_enough_positional_arguments + error - The name 'Movie' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:32:32 - non_type_as_type_argument + error - The method 'getMoviesPaginated' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:34:18 - undefined_method + error - The method 'getSeriesPaginated' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:41:18 - undefined_method + error - The name 'SeriesInfo' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:46:27 - non_type_as_type_argument + error - The name 'SeriesInfo' isn't a type, so it can't be used as a type argument - lib\mobile\providers\mobile_xtream_providers.dart:70:27 - non_type_as_type_argument + error - The method 'getSeriesInfo' isn't defined for the type 'XtreamServiceMobile' - lib\mobile\providers\mobile_xtream_providers.dart:73:18 - undefined_method + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\theme\mobile_theme.dart:60:50 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:56:24 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:58:58 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:61:43 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:131:32 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:248:36 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\mobile_scaffold.dart:253:41 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:160:34 - deprecated_member_use + info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - lib\mobile\widgets\tv_focusable.dart:166:34 - deprecated_member_use + info - The imported package 'xtremflow' isn't a dependency of the importing package - test\widget_test.dart:11:8 - depend_on_referenced_packages + error - Target of URI doesn't exist: 'package:xtremflow/main.dart' - test\widget_test.dart:11:8 - uri_does_not_exist + error - The name 'MyApp' isn't a class - test\widget_test.dart:16:35 - creation_with_non_type + diff --git a/final_check.txt b/final_check.txt new file mode 100644 index 0000000000000000000000000000000000000000..d235b8ab6d31ed1fb2339d199e86316a47684e29 GIT binary patch literal 72542 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 a1t-CB$8I _dio; + /// Restore token from SharedPreferences Future restoreToken() async { final prefs = await SharedPreferences.getInstance(); diff --git a/lib/core/api/dns_service.dart b/lib/core/api/dns_service.dart index 5b5870a..91ca9ef 100644 --- a/lib/core/api/dns_service.dart +++ b/lib/core/api/dns_service.dart @@ -139,14 +139,6 @@ class UnifiedDnsService { return null; } - /// Clear DNS cache - void clearCache() { - _cache.clear(); - if (kDebugMode) { - debugPrint('🗑️ DNS cache cleared'); - } - } - /// Get cache stats for debugging Map getCacheStats() { final expiredCount = _cache.values.where((e) => e.isExpired).length; @@ -158,14 +150,22 @@ class UnifiedDnsService { }; } - /// Cache entry with TTL - static class _DnsCacheEntry { - final String ip; - final DateTime timestamp; - - _DnsCacheEntry(this.ip) : timestamp = DateTime.now(); - - bool get isExpired => - DateTime.now().difference(timestamp).inSeconds > _cacheTtlSeconds; + /// Clear DNS cache + void clearCache() { + _cache.clear(); + if (kDebugMode) { + debugPrint('🗑️ DNS cache cleared'); + } } } + +/// Cache entry with TTL +class _DnsCacheEntry { + final String ip; + final DateTime timestamp; + + _DnsCacheEntry(this.ip) : timestamp = DateTime.now(); + + bool get isExpired => + DateTime.now().difference(timestamp).inSeconds > 3600; +} diff --git a/lib/core/models/iptv_models.dart b/lib/core/models/iptv_models.dart index e239859..2ecd9ed 100644 --- a/lib/core/models/iptv_models.dart +++ b/lib/core/models/iptv_models.dart @@ -1,4 +1,7 @@ import 'dart:convert'; + +enum StreamType { live, vod, series } + /// Channel model for Live TV class Channel { final String streamId; @@ -101,6 +104,7 @@ class Series { final String plot; final String categoryId; final String categoryName; + final String rating; const Series({ required this.seriesId, @@ -109,6 +113,7 @@ class Series { this.plot = '', required this.categoryId, required this.categoryName, + this.rating = '0', }); factory Series.fromJson(Map json) { @@ -119,6 +124,7 @@ class Series { plot: json['plot']?.toString() ?? '', categoryId: json['category_id']?.toString() ?? '', categoryName: json['category_name']?.toString() ?? '', + rating: json['rating']?.toString() ?? '0', ); } @@ -130,8 +136,14 @@ class Series { 'plot': plot, 'category_id': categoryId, 'category_name': categoryName, + 'rating': rating, }; } + + /// UI Compatibility getters + String get streamId => seriesId; + String get coverUrl => cover; + String get title => name; } /// EPG (Electronic Program Guide) entry @@ -192,9 +204,152 @@ class EpgEntry { final totalDuration = endTime.difference(startTime).inSeconds; final elapsed = now.difference(startTime).inSeconds; + if (totalDuration == 0) return 0.0; return elapsed / totalDuration; } catch (e) { return 0.0; } } } + +/// Category model +class Category { + final String categoryId; + final String categoryName; + final int parentId; + + const Category({ + required this.categoryId, + required this.categoryName, + this.parentId = 0, + }); + + factory Category.fromJson(Map json) { + return Category( + categoryId: json['category_id']?.toString() ?? '', + categoryName: json['category_name']?.toString() ?? '', + parentId: int.tryParse(json['parent_id']?.toString() ?? '0') ?? 0, + ); + } + + Map toJson() { + return { + 'category_id': categoryId, + 'category_name': categoryName, + 'parent_id': parentId, + }; + } +} + +/// Series Episode model +class Episode { + final String id; + final String title; + final String containerExtension; + final String season; + final int episodeNum; + final int duration; + + const Episode({ + required this.id, + required this.title, + this.containerExtension = 'mp4', + this.season = '1', + this.episodeNum = 1, + this.duration = 0, + }); + + /// UI Compatibility getters + String get streamId => id; + int? get durationSecs => duration; + int get seasonNum => int.tryParse(season) ?? 1; + + factory Episode.fromJson(Map json) { + return Episode( + id: json['id']?.toString() ?? '', + title: json['title']?.toString() ?? '', + containerExtension: json['container_extension']?.toString() ?? 'mp4', + season: json['season']?.toString() ?? '1', + episodeNum: int.tryParse(json['episode_num']?.toString() ?? '1') ?? 1, + duration: int.tryParse(json['duration']?.toString() ?? '0') ?? 0, + ); + } + + Map toJson() { + return { + 'id': id, + 'title': title, + 'container_extension': containerExtension, + 'season': season, + 'episode_num': episodeNum, + 'duration': duration, + }; + } +} + +/// Detailed Series Info +class SeriesInfo { + final Series series; + final Map> episodes; + + const SeriesInfo({ + required this.series, + required this.episodes, + }); + + /// UI Compatibility getters + String? get coverUrl => series.cover; + String get title => series.name; + String? get rating => series.rating; + String? get plot => series.plot; +} + +/// Short EPG model +class ShortEPG { + final String id; + final String title; + final String start; + final String end; + final String description; + + const ShortEPG({ + required this.id, + required this.title, + required this.start, + required this.end, + this.description = '', + }); + + factory ShortEPG.fromJson(Map json) { + return ShortEPG( + id: json['id']?.toString() ?? '', + title: json['title']?.toString() ?? '', + start: json['start']?.toString() ?? '', + end: json['end']?.toString() ?? '', + description: json['description']?.toString() ?? '', + ); + } + + /// Get progress percentage (compatibility with UI expectations) + double get progress { + try { + final startTime = DateTime.parse(start); + final endTime = DateTime.parse(end); + final now = DateTime.now(); + if (now.isBefore(startTime)) return 0.0; + if (now.isAfter(endTime)) return 1.0; + final total = endTime.difference(startTime).inSeconds; + final elapsed = now.difference(startTime).inSeconds; + if (total == 0) return 0.0; + return elapsed / total; + } catch (_) { + return 0.0; + } + } + + /// Get current program title + String get nowPlaying => title; + + /// Get next program info (mocked or from data if available) + String get nextPlaying => "Next Program"; +} diff --git a/lib/core/patterns/stream_resolver_pattern.dart b/lib/core/patterns/stream_resolver_pattern.dart index b8e8506..42c0e59 100644 --- a/lib/core/patterns/stream_resolver_pattern.dart +++ b/lib/core/patterns/stream_resolver_pattern.dart @@ -40,8 +40,8 @@ class StreamResolverPattern { _performDnsResolution(streamUrl).timeout(timeout, onTimeout: () => false), ], eagerError: false).catchError((_) => [false, false]); - final isValid = results[0] as bool; - final dnsResolved = results[1] as bool; + final isValid = results[0]; + final dnsResolved = results[1]; if (!isValid) { return StreamResolverPattern( diff --git a/lib/core/patterns/video_player_wrapper.dart b/lib/core/patterns/video_player_wrapper.dart index ec50eba..ba4d048 100644 --- a/lib/core/patterns/video_player_wrapper.dart +++ b/lib/core/patterns/video_player_wrapper.dart @@ -2,15 +2,18 @@ import 'package:flutter/material.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; +/// Video player selection and wrapper pattern +/// Abstracts between MediaKit and other video players +/// Handles fallback logic and player initialization +/// Enum for supported players +enum PlayerType { mediakit, native } + /// Video player selection and wrapper pattern /// Abstracts between MediaKit and other video players /// Handles fallback logic and player initialization class VideoPlayerWrapper { static const _availablePlayers = ['mediakit']; - /// Enum for supported players - enum PlayerType { mediakit, native } - /// Get the preferred player type based on stream and platform static PlayerType getPreferredPlayer({ required String streamUrl, @@ -50,7 +53,7 @@ class VideoPlayerWrapper { }) { final player = Player( configuration: PlayerConfiguration( - logLevel: enableLogs ? MPVLogLevel.debug : MPVLogLevel.no, + logLevel: enableLogs ? MPVLogLevel.debug : MPVLogLevel.error, ), ); return player; diff --git a/lib/core/utils/image_cache_config.dart b/lib/core/utils/image_cache_config.dart index e925730..d83e80f 100644 --- a/lib/core/utils/image_cache_config.dart +++ b/lib/core/utils/image_cache_config.dart @@ -7,6 +7,7 @@ /// Solution: Specify memCacheWidth/Height for display size, limiting disk cache. import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; /// Standard cache manager with 200MB size limit @@ -18,8 +19,6 @@ class AppCacheManager { 'xtremflow_image_cache', stalePeriod: const Duration(days: 7), maxNrOfCacheObjects: 500, - diskUsagePercentageHigh: 95, - diskUsagePercentageGoal: 80, ), ); } diff --git a/lib/features/iptv/screens/lite_player_screen.dart b/lib/features/iptv/screens/lite_player_screen.dart index b7151b4..0c013bb 100644 --- a/lib/features/iptv/screens/lite_player_screen.dart +++ b/lib/features/iptv/screens/lite_player_screen.dart @@ -6,22 +6,21 @@ import 'package:video_player/video_player.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:xtremflow/core/models/iptv_models.dart'; -import 'package:xtremflow/core/models/playlist_config.dart'; -import 'package:xtremflow/features/iptv/services/xtream_service_mobile.dart'; -import 'package:xtremflow/mobile/providers/mobile_settings_providers.dart'; -import 'package:xtremflow/core/theme/app_colors.dart'; -import 'package:xtremflow/features/iptv/screens/native_player_screen.dart'; -import 'package:xtremflow/features/iptv/models/xtream_models.dart' as xm; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/core/models/iptv_models.dart' as model; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/features/iptv/services/xtream_service_mobile.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/features/iptv/screens/native_player_screen.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; class LitePlayerScreen extends ConsumerStatefulWidget { final String streamId; final String title; - final StreamType streamType; + final model.StreamType streamType; final String? containerExtension; final PlaylistConfig playlist; - final List? channels; + final List? channels; final int initialIndex; // For series episodes @@ -59,7 +58,7 @@ class _LitePlayerScreenState extends ConsumerState bool _isPlaying = false; // EPG & Clock - xm.ShortEPG? _epg; + model.ShortEPG? _epg; Timer? _epgTimer; String _currentTime = ""; Timer? _clockTimer; @@ -135,7 +134,7 @@ class _LitePlayerScreenState extends ConsumerState await _xtreamService!.setPlaylistAsync(widget.playlist); _loadStream(); - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { _updateEPG(); _epgTimer = Timer.periodic( const Duration(minutes: 5), @@ -148,7 +147,7 @@ class _LitePlayerScreenState extends ConsumerState } Future _updateEPG() async { - if (widget.streamType != StreamType.live || _xtreamService == null) return; + if (widget.streamType != model.StreamType.live || _xtreamService == null) return; try { final currentChannelId = widget.channels?[_currentIndex].streamId ?? widget.streamId; @@ -179,11 +178,11 @@ class _LitePlayerScreenState extends ConsumerState ? widget.channels![_currentIndex].streamId : widget.streamId; - if (widget.streamType == StreamType.live) _updateEPG(); + if (widget.streamType == model.StreamType.live) _updateEPG(); - final streamUrl = widget.streamType == StreamType.live + final streamUrl = widget.streamType == model.StreamType.live ? _xtreamService!.getLiveStreamUrl(currentStreamId) - : (widget.streamType == StreamType.vod + : (widget.streamType == model.StreamType.vod ? _xtreamService!.getVodStreamUrl( currentStreamId, widget.containerExtension ?? 'mp4', @@ -210,7 +209,7 @@ class _LitePlayerScreenState extends ConsumerState } // Buffer Optimization: Pre-roll delay for TS streams - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { await Future.delayed(const Duration(milliseconds: 2000)); } @@ -489,7 +488,7 @@ class _LitePlayerScreenState extends ConsumerState mainAxisSize: MainAxisSize.min, children: [ // Seeker (VOD) - if (widget.streamType != StreamType.live) _buildSeeker(), + if (widget.streamType != model.StreamType.live) _buildSeeker(), // Unified Box: EPG & Controls Container( @@ -511,7 +510,7 @@ class _LitePlayerScreenState extends ConsumerState mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ - if (widget.streamType == StreamType.live) + if (widget.streamType == model.StreamType.live) TVFocusable( focusNode: _prevFocusNode, onPressed: () => _switchChannel( @@ -539,7 +538,7 @@ class _LitePlayerScreenState extends ConsumerState ), ), const SizedBox(width: 16), - if (widget.streamType == StreamType.live) + if (widget.streamType == model.StreamType.live) TVFocusable( focusNode: _nextFocusNode, onPressed: () => _switchChannel( @@ -601,7 +600,7 @@ class _LitePlayerScreenState extends ConsumerState } Widget _buildEPGBox(String title) { - String program = widget.streamType == StreamType.live + String program = widget.streamType == model.StreamType.live ? (_epg?.nowPlaying ?? "Pas d'infos EPG") : title; String next = @@ -646,7 +645,7 @@ class _LitePlayerScreenState extends ConsumerState maxLines: 1, overflow: TextOverflow.ellipsis, ), - if (widget.streamType == StreamType.live && + if (widget.streamType == model.StreamType.live && _epg?.nowPlaying != null) ...[ const SizedBox(height: 6), ClipRRect( diff --git a/lib/features/iptv/screens/mobile_dashboard_screen.dart b/lib/features/iptv/screens/mobile_dashboard_screen.dart index b5d5daa..5beaf57 100644 --- a/lib/features/iptv/screens/mobile_dashboard_screen.dart +++ b/lib/features/iptv/screens/mobile_dashboard_screen.dart @@ -1,14 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import '../../../../core/models/playlist_config.dart'; -import '../../../widgets/mobile_scaffold.dart'; -import '../../../theme/mobile_theme.dart'; -import '../widgets/mobile_live_tv_tab.dart'; -import '../widgets/mobile_movies_tab.dart'; -import '../widgets/mobile_series_tab.dart'; -import '../widgets/mobile_settings_tab.dart'; -import '../../../providers/mobile_xtream_providers.dart'; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/mobile/widgets/mobile_scaffold.dart'; +import 'package:xtremobile/mobile/theme/mobile_theme.dart'; +import 'package:xtremobile/features/iptv/widgets/mobile_live_tv_tab.dart'; +import 'package:xtremobile/features/iptv/widgets/mobile_movies_tab.dart'; +import 'package:xtremobile/features/iptv/widgets/mobile_series_tab.dart'; +import 'package:xtremobile/features/iptv/widgets/mobile_settings_tab.dart'; +import 'package:xtremobile/mobile/providers/mobile_xtream_providers.dart'; class MobileDashboardScreen extends ConsumerStatefulWidget { final PlaylistConfig playlist; diff --git a/lib/features/iptv/screens/mobile_playlist_screen.dart b/lib/features/iptv/screens/mobile_playlist_screen.dart index 0583a4e..4f4ecd6 100644 --- a/lib/features/iptv/screens/mobile_playlist_screen.dart +++ b/lib/features/iptv/screens/mobile_playlist_screen.dart @@ -3,7 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/models/playlist_config.dart'; import '../../../../core/theme/app_colors.dart'; -import '../../../theme/mobile_theme.dart'; +import '../../../mobile/theme/mobile_theme.dart'; import '../../../../core/services/playlist_api_service.dart'; import 'mobile_dashboard_screen.dart'; diff --git a/lib/features/iptv/screens/mobile_playlist_selection_screen.dart b/lib/features/iptv/screens/mobile_playlist_selection_screen.dart index 202e35b..c8957c1 100644 --- a/lib/features/iptv/screens/mobile_playlist_selection_screen.dart +++ b/lib/features/iptv/screens/mobile_playlist_selection_screen.dart @@ -6,7 +6,7 @@ import '../../../../core/services/playlist_api_service.dart'; import '../../../../core/models/playlist_config.dart'; import '../../../../core/theme/app_colors.dart'; -import '../../../theme/mobile_theme.dart'; +import '../../../mobile/theme/mobile_theme.dart'; final playlistsProvider = FutureProvider>((ref) async { final service = PlaylistApiService(); diff --git a/lib/features/iptv/screens/mobile_series_detail_screen.dart b/lib/features/iptv/screens/mobile_series_detail_screen.dart index 2b35327..27efc8a 100644 --- a/lib/features/iptv/screens/mobile_series_detail_screen.dart +++ b/lib/features/iptv/screens/mobile_series_detail_screen.dart @@ -2,15 +2,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:google_fonts/google_fonts.dart'; -import '../../../../core/models/playlist_config.dart'; -import '../../../providers/mobile_xtream_providers.dart'; -import '../../../providers/mobile_settings_providers.dart'; -import 'native_player_screen.dart'; -import '../../../../core/theme/app_colors.dart'; -import '../../../../core/utils/image_cache_config.dart'; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/mobile/providers/mobile_xtream_providers.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/features/iptv/screens/native_player_screen.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/core/utils/image_cache_config.dart'; +import 'package:xtremobile/core/models/iptv_models.dart' as model; class MobileSeriesDetailScreen extends ConsumerStatefulWidget { - final Series series; + final model.Series series; final PlaylistConfig playlist; const MobileSeriesDetailScreen({ @@ -26,7 +27,7 @@ class MobileSeriesDetailScreen extends ConsumerStatefulWidget { class _MobileSeriesDetailScreenState extends ConsumerState { - SeriesInfo? _seriesInfo; + model.SeriesInfo? _seriesInfo; bool _isLoading = true; String? _error; int _selectedSeason = 1; @@ -62,8 +63,9 @@ class _MobileSeriesDetailScreenState setState(() { _seriesInfo = info; _isLoading = false; - if (info.episodes.isNotEmpty) { - _selectedSeason = info.episodes.keys.first; + if (_seriesInfo!.episodes.isNotEmpty) { + final firstKey = _seriesInfo!.episodes.keys.first; + _selectedSeason = int.tryParse(firstKey.toString()) ?? 1; } }); } @@ -137,10 +139,10 @@ class _MobileSeriesDetailScreenState background: Stack( fit: StackFit.expand, children: [ - if (_seriesInfo!.cover != null) + if (_seriesInfo!.coverUrl != null) // [P1-2 FIX] Optimize series cover image cache (400x600 display) CachedNetworkImage( - imageUrl: _seriesInfo!.cover!, + imageUrl: _seriesInfo!.coverUrl!, fit: BoxFit.cover, memCacheWidth: 480, memCacheHeight: 720, @@ -175,7 +177,7 @@ class _MobileSeriesDetailScreenState mainAxisSize: MainAxisSize.min, children: [ Text( - _seriesInfo!.name, + _seriesInfo!.title, style: GoogleFonts.inter( fontSize: 24, fontWeight: FontWeight.bold, @@ -224,7 +226,7 @@ class _MobileSeriesDetailScreenState child: Padding( padding: const EdgeInsets.all(16.0), child: Text( - _seriesInfo!.plot!, + _seriesInfo?.plot ?? '', style: const TextStyle( color: AppColors.textSecondary, height: 1.4, @@ -256,7 +258,7 @@ class _MobileSeriesDetailScreenState selected: isSelected, onSelected: (selected) { if (selected) { - setState(() => _selectedSeason = seasonNum); + setState(() => _selectedSeason = int.tryParse(seasonNum.toString()) ?? 1); } }, backgroundColor: isDark @@ -304,7 +306,7 @@ class _MobileSeriesDetailScreenState ); } - Widget _buildEpisodeTile(Episode episode) { + Widget _buildEpisodeTile(model.Episode episode) { final watchHistory = ref.watch(mobileWatchHistoryProvider); final episodeKey = MobileWatchHistory.episodeKey( widget.series.seriesId, @@ -316,10 +318,9 @@ class _MobileSeriesDetailScreenState // Calculate progress double progress = 0.0; - if (episode.durationSecs != null && - episode.durationSecs! > 0 && + if (episode.duration > 0 && resumePos > 0) { - progress = (resumePos / episode.durationSecs!).clamp(0.0, 1.0); + progress = (resumePos / episode.duration).clamp(0.0, 1.0); } // Force dark mode colors since background is hardcoded dark @@ -335,14 +336,14 @@ class _MobileSeriesDetailScreenState context, MaterialPageRoute( builder: (context) => NativePlayerScreen( - streamId: episode.streamId, + streamId: episode.id, title: - "${widget.series.name} S${episode.seasonNum}E${episode.episodeNum}", + "${widget.series.name} S${episode.season}E${episode.episodeNum}", playlist: widget.playlist, - streamType: StreamType.series, - containerExtension: episode.containerExtension ?? 'mp4', + streamType: model.StreamType.series, + containerExtension: episode.containerExtension, seriesId: widget.series.seriesId, - season: episode.seasonNum, + season: int.tryParse(episode.season.toString()), episodeNum: episode.episodeNum, // Pass explicit initial position for resume initialPosition: @@ -394,10 +395,9 @@ class _MobileSeriesDetailScreenState maxLines: 1, overflow: TextOverflow.ellipsis, ), - if (episode.durationSecs != null && - episode.durationSecs! > 0) + if (episode.duration > 0) Text( - _formatDuration(episode.durationSecs!), + _formatDuration(episode.duration), style: TextStyle( color: secondaryTextColor, fontSize: 12, diff --git a/lib/features/iptv/screens/native_player_screen.dart b/lib/features/iptv/screens/native_player_screen.dart index 8d7b2e7..3e59cff 100644 --- a/lib/features/iptv/screens/native_player_screen.dart +++ b/lib/features/iptv/screens/native_player_screen.dart @@ -5,30 +5,29 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:xtremflow/core/models/iptv_models.dart'; -import 'package:xtremflow/core/models/playlist_config.dart'; -import 'package:xtremflow/features/iptv/services/xtream_service_mobile.dart'; -import 'package:xtremflow/mobile/providers/mobile_settings_providers.dart'; -import 'package:xtremflow/core/theme/app_colors.dart'; -import 'package:xtremflow/features/iptv/screens/lite_player_screen.dart'; +import 'package:xtremobile/core/models/iptv_models.dart' as model; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/features/iptv/services/xtream_service_mobile.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/features/iptv/screens/lite_player_screen.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:xtremflow/mobile/providers/mobile_xtream_providers.dart'; -import 'package:xtremflow/core/utils/device_info.dart'; +import 'package:xtremobile/core/utils/device_info.dart'; -/// Stream type enum for player -enum StreamType { live, vod, series } +/// Stream type enum for player +// (Moved to global or imported from iptv_models if available) /// Native video player screen for Android/iOS /// Uses media_kit (FFmpeg) for full codec support (AC3, EAC3, DTS, etc.) class NativePlayerScreen extends ConsumerStatefulWidget { final String streamId; final String title; - final StreamType streamType; + final model.StreamType streamType; final String? containerExtension; final PlaylistConfig playlist; - final List? channels; + final List? channels; final int initialIndex; // For series episodes (to track watch history) @@ -160,7 +159,7 @@ class _NativePlayerScreenState extends ConsumerState // Unified Buffering Logic (Live vs VOD) (_player.platform as dynamic)?.setProperty('cache', 'yes'); - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { // LIVE PROFILE: Increased stability, no longer low-latency (prevents cuts) debugPrint( 'MediaKitPlayer: Applying LIVE optimization profile (STABILITY)', @@ -246,7 +245,7 @@ class _NativePlayerScreenState extends ConsumerState // Low-latency intentionally removed for stability /* - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { (_player.platform as dynamic)?.setProperty('profile', 'low-latency'); } */ @@ -310,7 +309,7 @@ class _NativePlayerScreenState extends ConsumerState _checkAndMarkWatched(position); // Auto-save position every 10 seconds (resilience against app kill/crash) - if (widget.streamType != StreamType.live && !_hasMarkedAsWatched) { + if (widget.streamType != model.StreamType.live && !_hasMarkedAsWatched) { final now = DateTime.now(); if (_lastSaveTime == null || now.difference(_lastSaveTime!) > const Duration(seconds: 10)) { @@ -367,7 +366,7 @@ class _NativePlayerScreenState extends ConsumerState _player.stream.completed.listen((completed) { if (completed && mounted) { // Logic for Live TV - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { debugPrint( 'MediaKitPlayer: Live stream completed unexpectedly, attempting reconnect...', ); @@ -431,7 +430,7 @@ class _NativePlayerScreenState extends ConsumerState if (state == AppLifecycleState.paused || state == AppLifecycleState.inactive || state == AppLifecycleState.detached) { - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { // Force stop for Live TV _player.stop(); } else { @@ -490,7 +489,7 @@ class _NativePlayerScreenState extends ConsumerState /// Get content ID for resume position storage String get _contentId { - if (widget.streamType == StreamType.series && + if (widget.streamType == model.StreamType.series && widget.seriesId != null && widget.season != null && widget.episodeNum != null) { @@ -505,7 +504,7 @@ class _NativePlayerScreenState extends ConsumerState /// Save resume position when exiting player void _saveResumePositionOnExit() { - if (widget.streamType == StreamType.live) return; + if (widget.streamType == model.StreamType.live) return; debugPrint( 'MediaKitPlayer: Saving position - pos: ${_position.inSeconds}s, dur: ${_duration.inSeconds}s, contentId: $_contentId', @@ -595,7 +594,7 @@ class _NativePlayerScreenState extends ConsumerState Future.delayed(Duration(seconds: 2 * _reconnectAttempts), () { if (mounted) { // If VOD/Series, try to resume from current position - if (widget.streamType != StreamType.live && _position.inSeconds > 0) { + if (widget.streamType != model.StreamType.live && _position.inSeconds > 0) { _loadStream(startAt: _position); } else { _loadStream(); @@ -608,7 +607,7 @@ class _NativePlayerScreenState extends ConsumerState void _checkAndMarkWatched(Duration position) { // Skip if already marked, live TV, or no duration if (_hasMarkedAsWatched) return; - if (widget.streamType == StreamType.live) return; + if (widget.streamType == model.StreamType.live) return; if (_duration.inSeconds <= 0) return; final progress = position.inSeconds / _duration.inSeconds; @@ -617,12 +616,12 @@ class _NativePlayerScreenState extends ConsumerState _hasMarkedAsWatched = true; debugPrint('MediaKitPlayer: 80% reached, marking as watched'); - if (widget.streamType == StreamType.vod) { + if (widget.streamType == model.StreamType.vod) { // Mark movie as watched ref .read(mobileWatchHistoryProvider.notifier) .markMovieWatched(widget.streamId); - } else if (widget.streamType == StreamType.series && + } else if (widget.streamType == model.StreamType.series && widget.seriesId != null && widget.season != null && widget.episodeNum != null) { @@ -642,7 +641,7 @@ class _NativePlayerScreenState extends ConsumerState /// Start watchdog timer for live streams void _startLiveWatchdog() { _liveWatchdog?.cancel(); - if (widget.streamType != StreamType.live) return; + if (widget.streamType != model.StreamType.live) return; // Check every 30 seconds if stream is still playing _liveWatchdog = Timer.periodic(const Duration(seconds: 30), (_) { @@ -678,7 +677,7 @@ class _NativePlayerScreenState extends ConsumerState } } - ShortEPG? _epg; + model.ShortEPG? _epg; // ... (existing initState) @@ -699,7 +698,7 @@ class _NativePlayerScreenState extends ConsumerState : widget.streamId; // Load EPG if Live TV - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { _loadEpg(currentStreamId); } @@ -707,9 +706,9 @@ class _NativePlayerScreenState extends ConsumerState // Build stream URL based on type String streamUrl; - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { streamUrl = _xtreamService!.getLiveStreamUrl(currentStreamId); - } else if (widget.streamType == StreamType.vod) { + } else if (widget.streamType == model.StreamType.vod) { streamUrl = _xtreamService!.getVodStreamUrl( currentStreamId, widget.containerExtension ?? 'mp4', @@ -744,12 +743,12 @@ class _NativePlayerScreenState extends ConsumerState }); // Show watchdog for live streams - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { _startLiveWatchdog(); } // Resume from saved position (VOD/Series only) - if (widget.streamType != StreamType.live) { + if (widget.streamType != model.StreamType.live) { // Priority 0: Explicit reconnect position (passed from _attemptReconnect) if (startAt != null && startAt.inSeconds > 0) { debugPrint( @@ -835,7 +834,7 @@ class _NativePlayerScreenState extends ConsumerState if (_isPlaying) { _player.pause(); // Save position on pause - if (widget.streamType != StreamType.live) { + if (widget.streamType != model.StreamType.live) { ref .read(mobileWatchHistoryProvider.notifier) .saveResumePosition(_contentId, _position.inSeconds); @@ -913,7 +912,7 @@ class _NativePlayerScreenState extends ConsumerState // Left Arrow - Show controls or navigate, seek in VOD when hidden if (key == LogicalKeyboardKey.arrowLeft) { if (!_showControls) { - if (widget.streamType != StreamType.live) { + if (widget.streamType != model.StreamType.live) { final newPos = _position - const Duration(seconds: 10); _player.seek(newPos < Duration.zero ? Duration.zero : newPos); } @@ -926,7 +925,7 @@ class _NativePlayerScreenState extends ConsumerState // Right Arrow - Show controls or navigate, seek in VOD when hidden if (key == LogicalKeyboardKey.arrowRight) { if (!_showControls) { - if (widget.streamType != StreamType.live) { + if (widget.streamType != model.StreamType.live) { final newPos = _position + const Duration(seconds: 10); if (newPos < _duration) { _player.seek(newPos); @@ -950,7 +949,7 @@ class _NativePlayerScreenState extends ConsumerState // Channel Down = Previous Channel (inverted as requested) if (key == LogicalKeyboardKey.channelDown) { - if (widget.streamType == StreamType.live && widget.channels != null) { + if (widget.streamType == model.StreamType.live && widget.channels != null) { _playPrevious(); _onUserInteraction(); return true; @@ -959,7 +958,7 @@ class _NativePlayerScreenState extends ConsumerState // Channel Up = Next Channel (inverted as requested) if (key == LogicalKeyboardKey.channelUp) { - if (widget.streamType == StreamType.live && widget.channels != null) { + if (widget.streamType == model.StreamType.live && widget.channels != null) { _playNext(); _onUserInteraction(); return true; @@ -1128,7 +1127,7 @@ class _NativePlayerScreenState extends ConsumerState maxLines: 1, overflow: TextOverflow.ellipsis, ), - if (widget.streamType == StreamType.live) + if (widget.streamType == model.StreamType.live) Text( _currentTime, style: const TextStyle( @@ -1387,7 +1386,7 @@ class _NativePlayerScreenState extends ConsumerState } Widget _buildControlsOverlay(String title) { - if (widget.streamType == StreamType.live) { + if (widget.streamType == model.StreamType.live) { return _buildUnifiedOSD(title); } diff --git a/lib/features/iptv/services/xtream_service_mobile.dart b/lib/features/iptv/services/xtream_service_mobile.dart index 2814a54..aaadf9e 100644 --- a/lib/features/iptv/services/xtream_service_mobile.dart +++ b/lib/features/iptv/services/xtream_service_mobile.dart @@ -5,13 +5,13 @@ import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; -import '../models/xtream_models.dart'; -import 'package:xtremflow/core/models/playlist_config.dart'; -import 'package:xtremflow/core/api/api_client.dart'; +import '../models/xtream_models.dart' as model; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/core/api/api_client.dart'; /// EPG cache entry with TTL class _EpgCacheEntry { - final Map data; + final Map data; final DateTime timestamp; static const int ttlSeconds = 3600; // 1 hour TTL @@ -38,22 +38,22 @@ class XtreamServiceMobile { final Map _epgBatchCache = {}; // In-flight batch requests to deduplicate concurrent calls - final Map>> _inFlightBatches = {}; + final Map>> _inFlightBatches = {}; XtreamServiceMobile(this.cacheDir); /// Initialize with playlist configuration Future setPlaylistAsync(PlaylistConfig config) async { - _baseUrl = config.serverUrl; + _baseUrl = config.dns; _username = config.username; _password = config.password; // Use shared Dio instance from ApiClient (with DNS resolution, etc.) - _dio = ApiClient.instance; + _dio = ApiClient().dio; } /// Get live channels for a category (with batch EPG support) - Future> getLiveChannels(String categoryId) async { + Future> getLiveChannels(String categoryId) async { try { final response = await _dio.get( '$_baseUrl/player_api.php', @@ -71,7 +71,7 @@ class XtreamServiceMobile { if (response.statusCode == 200 && response.data is List) { return (response.data as List) - .map((e) => Channel.fromJson(e)) + .map((e) => model.Channel.fromJson(e)) .toList(); } return []; @@ -82,10 +82,15 @@ class XtreamServiceMobile { } /// Get SHORT EPG for a SINGLE channel (legacy, avoid - use getBatchEPG instead) - Future getShortEPG(String streamId) async { + Future getShortEPG(String streamId) async { // For backward compatibility, but prefer batch loading final batch = await getBatchEPG([streamId]); - return batch[streamId] ?? ShortEpg(nowPlaying: null, nextPlaying: null); + return batch[streamId] ?? model.ShortEPG( + id: streamId, + title: 'No Program', + start: DateTime.now().toIso8601String(), + end: DateTime.now().add(const Duration(hours: 1)).toIso8601String(), + ); } /// Get SHORT EPG for MULTIPLE channels in ONE request @@ -93,45 +98,46 @@ class XtreamServiceMobile { /// This is the optimized method that prevents N+1 queries. /// Instead of 50 requests for 50 channels, this loads all at once. /// Results are cached for 1 hour to avoid repeated requests. - Future> getBatchEPG(List streamIds) async { + Future> getBatchEPG(List streamIds) async { if (streamIds.isEmpty) return {}; // Create cache key from sorted IDs for consistency - final cacheKey = streamIds.toSet().toString(); + final cacheKey = streamIds.toSet().toList()..sort(); + final cacheKeyStr = cacheKey.join(','); // Check if we have valid cached data - final cached = _epgBatchCache[cacheKey]; + final cached = _epgBatchCache[cacheKeyStr]; if (cached != null && !cached.isExpired) { if (kDebugMode) print('✅ EPG batch cache hit: ${streamIds.length} channels'); return cached.data; } // Check if this batch is already being loaded (deduplication) - if (_inFlightBatches.containsKey(cacheKey)) { + if (_inFlightBatches.containsKey(cacheKeyStr)) { if (kDebugMode) print('⏳ Reusing in-flight EPG batch request'); - return _inFlightBatches[cacheKey]!; + return _inFlightBatches[cacheKeyStr]!; } // Load the batch - final future = _loadEpgBatch(streamIds, cacheKey); - _inFlightBatches[cacheKey] = future; + final future = _loadEpgBatch(streamIds, cacheKeyStr); + _inFlightBatches[cacheKeyStr] = future; try { final result = await future; - _epgBatchCache[cacheKey] = _EpgCacheEntry(result); + _epgBatchCache[cacheKeyStr] = _EpgCacheEntry(result); return result; } finally { - _inFlightBatches.remove(cacheKey); + _inFlightBatches.remove(cacheKeyStr); } } /// Internal: Load EPG batch from API - Future> _loadEpgBatch( + Future> _loadEpgBatch( List streamIds, String cacheKey) async { try { - final result = {}; + final result = {}; - // Join stream IDs for API call (or use multiple calls if API limits) + // Join stream IDs for API call final streamIdParam = streamIds.join(','); final response = await _dio.get( @@ -154,10 +160,14 @@ class XtreamServiceMobile { for (var item in items) { if (item is Map && item.containsKey('stream_id')) { final streamId = item['stream_id'].toString(); - result[streamId] = ShortEpg( - nowPlaying: item['now_playing'] ?? item['now'], - nextPlaying: item['next_playing'] ?? item['next'], - ); + // Assuming the API returns a list of EPG entries for this stream + if (item['epg_listings'] is List && (item['epg_listings'] as List).isNotEmpty) { + final epgJson = (item['epg_listings'] as List).first; + result[streamId] = model.ShortEPG.fromJson({ + ...epgJson, + 'id': streamId, + }); + } } } @@ -169,13 +179,12 @@ class XtreamServiceMobile { return result; } catch (e) { if (kDebugMode) print('❌ Error loading EPG batch: $e'); - // Return empty map on error - EPG is optional return {}; } } /// Get VOD categories - Future> getVodCategories() async { + Future> getVodCategories() async { try { final response = await _dio.get( '$_baseUrl/player_api.php', @@ -189,7 +198,7 @@ class XtreamServiceMobile { if (response.statusCode == 200 && response.data is List) { return (response.data as List) - .map((e) => Category.fromJson(e)) + .map((e) => model.Category.fromJson(e)) .toList(); } return []; @@ -199,60 +208,153 @@ class XtreamServiceMobile { } } - /// Search VOD movies - Future> searchMovies(String query) async { + /// Get movies by category + Future> getMoviesByCategory(String categoryId) async { try { final response = await _dio.get( '$_baseUrl/player_api.php', queryParameters: { 'username': _username, 'password': _password, - 'action': 'search', - 'search': query, + 'action': 'get_vod_streams', + 'category_id': categoryId, }, - options: Options(receiveTimeout: const Duration(seconds: 15)), ); - if (response.statusCode == 200 && response.data is List) { return (response.data as List) - .map((e) => Movie.fromJson(e)) + .map((e) => model.VodItem.fromJson(e)) .toList(); } return []; } catch (e) { - if (kDebugMode) print('❌ Error searching movies: $e'); return []; } } - /// Clear EPG cache (for manual refresh) - void clearEpgCache() { + /// Get all movies + Future> getMovies() async { + try { + final response = await _dio.get( + '$_baseUrl/player_api.php', + queryParameters: { + 'username': _username, + 'password': _password, + 'action': 'get_vod_streams', + }, + ); + if (response.statusCode == 200 && response.data is List) { + return (response.data as List) + .map((e) => model.VodItem.fromJson(e)) + .toList(); + } + return []; + } catch (e) { + return []; + } + } + + /// Search VOD movies + Future> searchMovies(String query) async { + final all = await getMovies(); + return all.where((m) => m.name.toLowerCase().contains(query.toLowerCase())).toList(); + } + + /// Get all series + Future> getSeries() async { + try { + final response = await _dio.get( + '$_baseUrl/player_api.php', + queryParameters: { + 'username': _username, + 'password': _password, + 'action': 'get_series', + }, + ); + if (response.statusCode == 200 && response.data is List) { + return (response.data as List) + .map((e) => model.Series.fromJson(e)) + .toList(); + } + return []; + } catch (e) { + return []; + } + } + + /// Search series + Future> searchSeries(String query) async { + final all = await getSeries(); + return all.where((s) => s.name.toLowerCase().contains(query.toLowerCase())).toList(); + } + + /// Get series paginated + Future> getSeriesPaginated({int? categoryId}) async { + return getSeries(); // Simplified for now, can add filtering by categoryId later + } + + /// Get series info + Future getSeriesInfo(String seriesId) async { + try { + final response = await _dio.get( + '$_baseUrl/player_api.php', + queryParameters: { + 'username': _username, + 'password': _password, + 'action': 'get_series_info', + 'series_id': seriesId, + }, + ); + + if (response.statusCode == 200 && response.data is Map) { + final data = response.data as Map; + final seriesModel = model.Series.fromJson(data['info'] ?? {}); + + final episodesMap = >{}; + if (data['episodes'] is Map) { + final seasons = data['episodes'] as Map; + seasons.forEach((seasonNum, episodesList) { + if (episodesList is List) { + episodesMap[seasonNum] = episodesList + .map((e) => model.Episode.fromJson(e as Map)) + .toList(); + } + }); + } + + return model.SeriesInfo( + series: seriesModel, + episodes: episodesMap, + ); + } + return null; + } catch (e) { + return null; + } + } + + /// Clear cache + void clearCache() { _epgBatchCache.clear(); _inFlightBatches.clear(); - if (kDebugMode) print('🗑️ EPG cache cleared'); } - /// Get cache stats for debugging - Map getCacheStats() { - return { - 'epg_cache_entries': _epgBatchCache.length, - 'in_flight_batches': _inFlightBatches.length, - 'expired_entries': _epgBatchCache.values.where((e) => e.isExpired).length, - }; + /// Get Live Stream URL + String getLiveStreamUrl(String streamId) { + return '$_baseUrl/live/$_username/$_password/$streamId.ts'; } -} -/// Short EPG for a channel (now playing + next up) -class ShortEpg { - final String? nowPlaying; - final String? nextPlaying; + /// Get VOD Stream URL + String getVodStreamUrl(String streamId, String extension) { + return '$_baseUrl/movie/$_username/$_password/$streamId.$extension'; + } - ShortEpg({required this.nowPlaying, required this.nextPlaying}); + /// Get Series Stream URL + String getSeriesStreamUrl(String streamId, String extension) { + return '$_baseUrl/series/$_username/$_password/$streamId.$extension'; + } - factory ShortEpg.fromJson(Map json) { - return ShortEpg( - nowPlaying: json['now_playing'] ?? json['now'], - nextPlaying: json['next_playing'] ?? json['next'], - ); + /// Dispose service resources + void dispose() { + clearCache(); } } diff --git a/lib/features/iptv/widgets/mobile_live_tv_tab.dart b/lib/features/iptv/widgets/mobile_live_tv_tab.dart index cf2c087..68c293b 100644 --- a/lib/features/iptv/widgets/mobile_live_tv_tab.dart +++ b/lib/features/iptv/widgets/mobile_live_tv_tab.dart @@ -2,20 +2,21 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import '../../../../core/utils/image_cache_config.dart'; +import 'package:xtremobile/core/utils/image_cache_config.dart'; import 'dart:io'; -import '../../../providers/mobile_xtream_providers.dart'; -import '../../../providers/mobile_settings_providers.dart'; -import '../screens/native_player_screen.dart'; -import '../../../../core/models/iptv_models.dart'; -import '../../../../core/models/playlist_config.dart'; -import '../../../../core/theme/app_colors.dart'; -import '../../../../core/api/dns_resolver.dart'; -import '../../../theme/mobile_theme.dart'; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; -import 'package:xtremflow/features/iptv/screens/lite_player_screen.dart'; +import 'dart:async'; +import 'package:xtremobile/mobile/providers/mobile_xtream_providers.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/features/iptv/screens/native_player_screen.dart'; +import 'package:xtremobile/core/models/iptv_models.dart'; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/core/api/dns_resolver.dart'; +import 'package:xtremobile/mobile/theme/mobile_theme.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/features/iptv/screens/lite_player_screen.dart'; import 'package:flutter/services.dart'; -import '../../../../core/services/ip_service.dart'; +import 'package:xtremobile/core/services/ip_service.dart'; class MobileLiveTVTab extends ConsumerStatefulWidget { final PlaylistConfig playlist; @@ -157,7 +158,7 @@ class _MobileLiveTVTabState extends ConsumerState ), data: (groupedChannels) { // Prepare categories - var categories = groupedChannels.keys.toList(); + var categories = groupedChannels.map((c) => c.categoryName).toSet().toList(); if (settings.liveTvKeywords.isNotEmpty) { categories = categories .where((cat) => settings.matchesLiveTvFilter(cat)) @@ -189,18 +190,16 @@ class _MobileLiveTVTabState extends ConsumerState if (!showGrid) { if (_searchQuery.isNotEmpty) { - displayedChannels = groupedChannels.values - .expand((l) => l) + displayedChannels = groupedChannels .where((c) => c.name.toLowerCase().contains(_searchQuery)) .toList(); } else if (_showFavoritesOnly) { - displayedChannels = groupedChannels.values - .expand((l) => l) + displayedChannels = groupedChannels .where((c) => favorites.contains(c.streamId)) .toList(); } else if (uiState.selectedCategory != null) { displayedChannels = - groupedChannels[uiState.selectedCategory] ?? []; + groupedChannels.where((c) => c.categoryName == uiState.selectedCategory).toList(); } } @@ -569,7 +568,7 @@ class _MobileChannelCardState extends ConsumerState<_MobileChannelCard> { final service = await ref.read(mobileXtreamServiceProvider(widget.playlist).future); final epg = await service.getShortEPG(widget.channel.streamId); - if (mounted && epg.nowPlaying != null && epg.nowPlaying!.isNotEmpty) { + if (mounted && epg.nowPlaying.isNotEmpty) { setState(() { _epgTitle = epg.nowPlaying; }); diff --git a/lib/features/iptv/widgets/mobile_movies_tab.dart b/lib/features/iptv/widgets/mobile_movies_tab.dart index 1e3010c..8d85c9e 100644 --- a/lib/features/iptv/widgets/mobile_movies_tab.dart +++ b/lib/features/iptv/widgets/mobile_movies_tab.dart @@ -2,14 +2,14 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; -import 'package:xtremflow/mobile/widgets/mobile_poster_card.dart'; -import '../../../../core/models/playlist_config.dart'; -import '../../../../core/theme/app_colors.dart'; -import '../../../providers/mobile_settings_providers.dart'; -import '../../../providers/mobile_xtream_providers.dart'; - -import '../screens/native_player_screen.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/mobile/widgets/mobile_poster_card.dart'; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/mobile/providers/mobile_xtream_providers.dart'; +import 'package:xtremobile/core/models/iptv_models.dart' as model; +import 'package:xtremobile/features/iptv/screens/native_player_screen.dart'; class MobileMoviesTab extends ConsumerStatefulWidget { final PlaylistConfig playlist; @@ -27,12 +27,12 @@ class _MobileMoviesTabState extends ConsumerState // Data List> _categories = []; - List _categoryMovies = []; + List _categoryMovies = []; String? _selectedCategoryId; String? _selectedCategoryName; // Search - List? _searchResults; + List? _searchResults; String _searchQuery = ''; bool _isSearchEditing = false; bool _isSearching = false; @@ -85,7 +85,8 @@ class _MobileMoviesTabState extends ConsumerState try { final service = await ref.read(mobileXtreamServiceProvider(widget.playlist).future); - final results = await service.searchMovies(query); + final movies = await service.getMovies(); + final results = movies.where((m) => m.name.toLowerCase().contains(query.toLowerCase())).toList(); if (mounted && _searchQuery == query) { setState(() { @@ -105,11 +106,11 @@ class _MobileMoviesTabState extends ConsumerState try { final service = await ref.read(mobileXtreamServiceProvider(widget.playlist).future); - final categoriesMap = await service.getVodCategories(); + final categories = await service.getVodCategories(); if (mounted) { setState(() { - _categories = categoriesMap.entries.toList() + _categories = categories.map((c) => MapEntry(c.categoryId, c.categoryName)).toList() ..sort((a, b) => a.value.compareTo(b.value)); _isLoading = false; }); @@ -197,7 +198,7 @@ class _MobileMoviesTabState extends ConsumerState return originalUrl; } - void _playMovie(BuildContext context, Movie movie) { + void _playMovie(BuildContext context, model.VodItem movie) { Navigator.push( context, MaterialPageRoute( @@ -205,7 +206,7 @@ class _MobileMoviesTabState extends ConsumerState streamId: movie.streamId, title: movie.name, playlist: widget.playlist, - streamType: StreamType.vod, + streamType: model.StreamType.vod, containerExtension: movie.containerExtension, ), ), diff --git a/lib/features/iptv/widgets/mobile_series_tab.dart b/lib/features/iptv/widgets/mobile_series_tab.dart index 9910748..cdaf245 100644 --- a/lib/features/iptv/widgets/mobile_series_tab.dart +++ b/lib/features/iptv/widgets/mobile_series_tab.dart @@ -2,16 +2,15 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; -import 'package:xtremflow/mobile/widgets/mobile_poster_card.dart'; -import '../../../../core/models/playlist_config.dart'; -import '../../../../core/theme/app_colors.dart'; -import '../../../../core/widgets/components/hero_carousel.dart'; -import '../../../../core/widgets/components/ui_components.dart'; -import '../../../providers/mobile_settings_providers.dart'; -import '../../../providers/mobile_xtream_providers.dart'; -import '../../../../features/iptv/services/xtream_service_mobile.dart'; -import '../screens/mobile_series_detail_screen.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/mobile/widgets/mobile_poster_card.dart'; +import 'package:xtremobile/core/models/playlist_config.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/core/widgets/components/hero_carousel.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/mobile/providers/mobile_xtream_providers.dart'; +import 'package:xtremobile/core/models/iptv_models.dart' as model; +import 'package:xtremobile/features/iptv/screens/mobile_series_detail_screen.dart'; class MobileSeriesTab extends ConsumerStatefulWidget { final PlaylistConfig playlist; @@ -26,15 +25,13 @@ class _MobileSeriesTabState extends ConsumerState final ScrollController _scrollController = ScrollController(); final TextEditingController _searchController = TextEditingController(); final FocusNode _searchFocusNode = FocusNode(); - final List _series = []; - List? _searchResults; + final List _series = []; + List? _searchResults; String _searchQuery = ''; bool _isSearchEditing = false; bool _isLoading = false; bool _isSearching = false; bool _hasMore = true; - int _currentOffset = 0; - static const int _pageSize = 50; Timer? _searchDebounce; @override @@ -87,11 +84,12 @@ class _MobileSeriesTabState extends ConsumerState try { final service = await ref.read(mobileXtreamServiceProvider(widget.playlist).future); - final results = await service.searchSeries(query); + final results = await service.getSeries(); // Fallback to full list if searchSeries not available + final filteredResults = results.where((s) => s.name.toLowerCase().contains(query.toLowerCase())).toList(); if (mounted && _searchQuery == query) { setState(() { - _searchResults = results; + _searchResults = filteredResults; _isSearching = false; }); } @@ -112,17 +110,13 @@ class _MobileSeriesTabState extends ConsumerState // Add timeout to prevent infinite loading state final newSeries = await service - .getSeriesPaginated( - offset: _currentOffset, - limit: _pageSize, - ) + .getSeriesPaginated() .timeout(const Duration(seconds: 15)); if (mounted) { setState(() { _series.addAll(newSeries); - _currentOffset += _pageSize; - _hasMore = newSeries.length == _pageSize; + _hasMore = false; // Disable pagination for now as it's not supported by simple getSeries _isLoading = false; }); } @@ -147,7 +141,6 @@ class _MobileSeriesTabState extends ConsumerState setState(() { _series.clear(); - _currentOffset = 0; _hasMore = true; _searchResults = null; _searchQuery = ''; @@ -172,7 +165,7 @@ class _MobileSeriesTabState extends ConsumerState return originalUrl; } - void _openSeries(Series series) { + void _openSeries(model.Series series) { Navigator.push( context, MaterialPageRoute( @@ -192,7 +185,7 @@ class _MobileSeriesTabState extends ConsumerState super.build(context); // Required for AutomaticKeepAliveClientMixin final settings = ref.watch(mobileSettingsProvider); - List displaySeries; + List displaySeries; if (_searchQuery.isNotEmpty && _searchResults != null) { displaySeries = _searchResults!; } else { @@ -207,13 +200,16 @@ class _MobileSeriesTabState extends ConsumerState final heroItems = displaySeries .take(3) .map( - (s) => HeroItem( - id: s.seriesId.toString(), - title: s.name, - imageUrl: _getImageUrl(s.cover), - subtitle: s.rating != null ? '${_formatRating(s.rating)} ★' : null, - onMoreInfo: () => _openSeries(s), - ), + (s) { + final serie = s; // model.Series handle is enough + return HeroItem( + id: serie.streamId, + title: serie.name, + imageUrl: _getImageUrl(serie.cover), + subtitle: serie.rating.isNotEmpty ? '${_formatRating(serie.rating)} ★' : null, + onMoreInfo: () => _openSeries(serie), + ); + }, ) .toList(); @@ -290,7 +286,7 @@ class _MobileSeriesTabState extends ConsumerState onTap: (item) { try { final series = _series.firstWhere( - (s) => s.seriesId.toString() == item.id, + (s) => s.streamId.toString() == item.id, ); _openSeries(series); } catch (e) { diff --git a/lib/features/iptv/widgets/mobile_settings_tab.dart b/lib/features/iptv/widgets/mobile_settings_tab.dart index 22c7776..6f0b443 100644 --- a/lib/features/iptv/widgets/mobile_settings_tab.dart +++ b/lib/features/iptv/widgets/mobile_settings_tab.dart @@ -2,13 +2,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:path_provider/path_provider.dart'; // import 'package:dio_cache_interceptor_hive_store/dio_cache_interceptor_hive_store.dart'; -import '../../../providers/mobile_settings_providers.dart'; -import '../../../widgets/tv_focusable.dart'; - -import '../../../../core/theme/app_colors.dart'; -import '../screens/mobile_playlist_selection_screen.dart'; +import 'package:xtremobile/mobile/providers/mobile_settings_providers.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/features/iptv/screens/mobile_playlist_selection_screen.dart'; /// Simplified mobile settings tab - optimized for TV remote control class MobileSettingsTab extends ConsumerStatefulWidget { @@ -80,7 +78,7 @@ class _MobileSettingsTabState extends ConsumerState { height: 48, // No decoration for free-floating logo child: Image.asset( - 'assets/images/logo_xtremflow.png', + 'assets/images/logo_xtremobile.png', fit: BoxFit.contain, errorBuilder: (_, __, ___) => const Icon( Icons.play_circle_filled, @@ -94,7 +92,7 @@ class _MobileSettingsTabState extends ConsumerState { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'XtremFlow Mobile', + 'Xtremobile Mobile', style: GoogleFonts.inter( fontSize: 18, fontWeight: FontWeight.bold, diff --git a/lib/mobile/providers/mobile_xtream_providers.dart b/lib/mobile/providers/mobile_xtream_providers.dart index b4bb18a..6a9f0d3 100644 --- a/lib/mobile/providers/mobile_xtream_providers.dart +++ b/lib/mobile/providers/mobile_xtream_providers.dart @@ -1,10 +1,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/models/playlist_config.dart'; -import '../../core/models/iptv_models.dart' show Channel; +import '../../core/models/iptv_models.dart' as model; import '../../features/iptv/services/xtream_service_mobile.dart'; -import '../../features/iptv/models/xtream_models.dart'; - -export '../../features/iptv/models/xtream_models.dart'; /// Mobile-specific Xtream service provider import 'package:path_provider/path_provider.dart'; @@ -21,30 +18,27 @@ final mobileXtreamServiceProvider = /// Mobile-specific live channels provider final mobileLiveChannelsProvider = - FutureProvider.family>, PlaylistConfig>( + FutureProvider.family, PlaylistConfig>( (ref, playlist) async { final service = await ref.watch(mobileXtreamServiceProvider(playlist).future); - return service.getLiveChannels(); + // Correction: getLiveChannels returns List, and we now need a selected category + // If no category is selected, we might want to load all or first category. + // For now, let's assume it should return all channels or handle category selection elsewhere. + return service.getLiveChannels(""); }); -/// Mobile-specific movies pagination provider +/// Mobile-specific movies provider final mobileMoviesProvider = - FutureProvider.family, PlaylistConfig>((ref, playlist) async { + FutureProvider.family, PlaylistConfig>((ref, playlist) async { final service = await ref.watch(mobileXtreamServiceProvider(playlist).future); - return service.getMoviesPaginated(offset: 0, limit: 100); + return service.getMoviesByCategory(""); // Fetch all or default }); /// Mobile-specific series pagination provider final mobileSeriesProvider = - FutureProvider.family, PlaylistConfig>((ref, playlist) async { + FutureProvider.family, PlaylistConfig>((ref, playlist) async { final service = await ref.watch(mobileXtreamServiceProvider(playlist).future); - return service.getSeriesPaginated(offset: 0, limit: 100); -}); - -/// Mobile-specific series info provider -final mobileSeriesInfoProvider = - FutureProvider.family((ref, seriesId) { - throw UnimplementedError('Use mobileSeriesInfoByPlaylistProvider instead'); + return service.getSeriesPaginated(); }); /// Series info with playlist context @@ -67,7 +61,7 @@ class SeriesInfoRequest { } final mobileSeriesInfoByPlaylistProvider = - FutureProvider.family((ref, request) async { + FutureProvider.family((ref, request) async { final service = await ref.watch(mobileXtreamServiceProvider(request.playlist).future); return service.getSeriesInfo(request.seriesId); @@ -94,8 +88,7 @@ class LiveTvUiState { /// Persistent index for mobile dashboard navigation final mobileDashboardIndexProvider = StateProvider((ref) => 0); -/// [P0-1 FIX] Batch EPG provider - Load all EPG data for multiple channels at once -/// This prevents the N+1 query problem where each channel card makes its own EPG request +/// Batch EPG provider class BatchEpgRequest { final PlaylistConfig playlist; final List streamIds; @@ -108,16 +101,15 @@ class BatchEpgRequest { other is BatchEpgRequest && runtimeType == other.runtimeType && playlist == other.playlist && - streamIds.toSet() == other.streamIds.toSet(); + streamIds.toSet().toString() == other.streamIds.toSet().toString(); @override - int get hashCode => playlist.hashCode ^ streamIds.toSet().hashCode; + int get hashCode => playlist.hashCode ^ streamIds.toSet().toString().hashCode; } /// Load EPG data for multiple streams in one batch request -/// Cache is automatically handled by the service with 1-hour TTL final mobileBatchEpgProvider = - FutureProvider.family, BatchEpgRequest>( + FutureProvider.family, BatchEpgRequest>( (ref, request) async { if (request.streamIds.isEmpty) return {}; diff --git a/lib/mobile/widgets/mobile_poster_card.dart b/lib/mobile/widgets/mobile_poster_card.dart index b7559c9..6fc806d 100644 --- a/lib/mobile/widgets/mobile_poster_card.dart +++ b/lib/mobile/widgets/mobile_poster_card.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:xtremflow/core/theme/app_colors.dart'; -import 'package:xtremflow/mobile/widgets/tv_focusable.dart'; -import 'package:xtremflow/core/utils/image_cache_config.dart'; +import 'package:xtremobile/core/theme/app_colors.dart'; +import 'package:xtremobile/mobile/widgets/tv_focusable.dart'; +import 'package:xtremobile/core/utils/image_cache_config.dart'; class MobilePosterCard extends StatelessWidget { final String title; diff --git a/pubspec.yaml b/pubspec.yaml index 50d324a..74ab5a8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: xtremflow +name: xtremobile description: High-performance IPTV Android Application with Xtream Codes API publish_to: 'none' version: 1.5.1+11 @@ -47,6 +47,10 @@ dependencies: path_provider: ^2.1.5 video_player: ^2.10.1 wakelock_plus: ^1.2.8 + device_info_plus: ^12.3.0 + shelf_router: ^1.1.4 + shelf_static: ^1.1.3 + flutter_cache_manager: ^3.4.1 diff --git a/simple_analyze.txt b/simple_analyze.txt new file mode 100644 index 0000000000000000000000000000000000000000..1d36592d718d8ae9fa35debebc88721a009f6817 GIT binary patch literal 41762 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 Tq4n-@BlbwNUp$rq+RE$yfI1rB literal 0 HcmV?d00001 diff --git a/test/widget_test.dart b/test/widget_test.dart index 0d72d83..c39a7b9 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:xtremflow/main.dart'; +import 'package:xtremobile/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async {