From d6f5a53d7e5948fd2e52e82ed379ff6393e34941 Mon Sep 17 00:00:00 2001 From: Howard Wu Date: Sat, 30 Sep 2023 23:22:03 +0800 Subject: [PATCH] Fix build Fix binder_ndk build Upgrade AGP to 8.1.2 Upgrade Gradle to 8.3 --- .github/workflows/ci.yml | 2 +- build.gradle.kts | 4 +- gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 6 +- gradlew | 281 ++++++++++++++--------- gradlew.bat | 15 +- loader/src/common/socket_utils.cpp | 4 +- module/build.gradle.kts | 14 +- settings.gradle.kts | 4 +- zygiskd/Cargo.toml | 6 +- zygiskd/build.gradle.kts | 2 +- zygiskd/src/constants.rs | 1 + zygiskd/src/root_impl/kernelsu.rs | 5 +- zygiskd/src/root_impl/magisk.rs | 2 +- 14 files changed, 206 insertions(+), 140 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8832f994..907e7829 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: with: workspaces: zygiskd/src -> ../build/intermediates/rust cache-targets: false - + - name: Setup Rust run: | rustup target add armv7-linux-androideabi diff --git a/build.gradle.kts b/build.gradle.kts index b065b114..dbd905b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -40,7 +40,6 @@ val maxKsuVersion by extra(20000) val minMagiskVersion by extra(25208) val androidMinSdkVersion by extra(29) -val androidTargetSdkVersion by extra(34) val androidCompileSdkVersion by extra(34) val androidBuildToolsVersion by extra("34.0.0") val androidCompileNdkVersion by extra("25.2.9519653") @@ -48,7 +47,7 @@ val androidSourceCompatibility by extra(JavaVersion.VERSION_11) val androidTargetCompatibility by extra(JavaVersion.VERSION_11) tasks.register("Delete", Delete::class) { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } fun Project.configureBaseExtension() { @@ -60,7 +59,6 @@ fun Project.configureBaseExtension() { defaultConfig { minSdk = androidMinSdkVersion - targetSdk = androidTargetSdkVersion } lint { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..033e24c4cdf41af1ab109bc7f253b2b887023340 100644 GIT binary patch delta 43784 zcmZs?V{~Rwvn?Fkwrv}oj&0kv`NZkiwrxGJZ6_V8V;h}(ea=1Oz4wgq{n%sG*sJ#5 zf2!7;yQ=2UEO`74IHZy+I0QzrvO8uX9y%ySa?mnvqNLV8{0DVViJKuj_{N|8_y>I+MxT2rn3@Q#>wn~1E zL?7Lobaaai$f~PJ0h}NW%Jz=o9G(v`1G-hf3`!4Hykd#lU+;7v>s6JhQ7>+NykDU( z+Yh)P+pD#Xf_Ezp%e``u9= zPJL0(x6YXP{nVHO6?>|5I(OEX+z0Fdei~>3M`J^9Le#>-%*cHO2dI9HaE61$a74)& zhG`72UvRy2>GhSbe7%JS*{^BAj@7^R_`#yP-hcCvM0hriNtFRwQ8sdle)1Ez%QcHa$>LXwe6Dl*#&-bzELzYX(EA*tDQjPTN z_Iy$>1z$iZhRJU_kP-6fwFoL`ATuxgebp735D2?M!BWyU#RUSYV9ge!Wt(Ryg2c# zE!mNwc?3zLL{3iQ6)y8~c~s=m4Xqg@K3wMbk>I?_-Uz?T$HzrkC9iM}Pe>ON*;6DX zAAhT%>H<2)Tbb?04j7l5tjnh^NK&u3&|8|x9FUM@&C|WbNe>8;>Zst)1WXai?2}(@ zyKj-PO(w)jgcXLvm(rNz(X6t9Y6OW>TfRtL8F0CuNP|)h%mfKHTyb}1*+arFxFC1U z(N0B0N3Jcz26y6Ul(ROd=0s+E8`mO|%&tmuVsXf&%C< zqfuZ+k9Lczb4Li|3N*~kFWFblf~n^$3YVNq6NL&>E`&s_PXoyxkILoa7=DUIu3pa^ zbjt28Iln9>aXD?uYDI=>%f%@nd!*sacDx%hqN>9K2$r2N)@*sA+415I5pr2{acy3O z0sue0u{}YluJrg2MMai%uCnAS|1>N{x) z9W0h;+;^Q;m5Y1Pds=9%6L2UE$|ziEl`q?2-MJyt_O1MjCN!fwl1)PARjh-GPK-Bu ziBk^EHui_QP^405zFUzBY86#gXxXo~tO_j7sEQS_To{@n19bS|pHyoI$71br)Bq_% zKI<_wiEE{M!;;7m75H6Py81{;GMa{JeMKsHeh#zwafm})ycBUB89KUwLH+8iM(-enyqKq)oHH3hDjL8_*Fweo|@|9cT%{f zO-v5t@vOg5-KrPTr2t#GYJ)8@zQ@<478@tOj3h9r#~9`^Q#5+^aL}Wv7*J`&+|Vx@ z)BRL(#kD~Mwr_&pUDQs^fLcl~6?LZC$n&r)&u_?6eu_~zyQ*6+FP*qf$#iHG z2YPE|ZZ@No$<*C$7mSO|AFFFO$1DJum^n0}UN;9_VcV$ZMmrK0={c8_%D=nHmaMXi zLn410cRCiWs7{vSsL)&F+tZG2uyQKop$)mm`wetpa|?aR02T6+0J}-$e5Tw~i$ci59}-vZrgrm4909wfTB||ALOyJi_vsmyzG1%`*ElF%_(8r&emW?qs1{D6NY1hdkN6 z07ItKp8bQ!olQMB3Sen0Jy&kX17H59sC?9IOo92e=7EBncWnkSS&@h??=N|%=F1hG zSGJ+o9GvdE<*GX#`6P4GIp->PzJbw*4h;0=NT7%~D)9MW>0b$q#fS zPQU+~T!DiVv3L&u&UQ{7s>gh_Y{*s{)!Z3MmJJ5VyQyVm4*h!+mLYlbxHc7^s-Z|7u?n}w zt~M(a2Sx*m2>=rstd3iQH+HVUSiz-O6tq{s70C%sK{WQ;xh7kT+&hBZD(hK{7|Y4N z zAdx^+Pn>4{jSrIISgV2-@&3{^j-Y;IM8ShC5vAa`Bw&X%MR|t;idC$p+KHSp$A}|t zV30)uhZY=m*ohEhGUmR_H-@wqm(UN3a{LNwQgP6%#9^!yXN0zFTHlJqJu0!4a0ARb z?}0H@J__e8{jNR8!G>rZMN1gz-Hn{^8f5hZw2V;wDnT!ZPcL%i7mq}^9#@=?Q?CM_ z#AN+p93ZjEZ_HxEVdjqsW=QYEU(Y%ka^DBGrpY^;@dLX!aa}CO#^q!?o!9Tde(|6g zTsz#ck&(+H?@O$c^}E$^!bo$1?^glk+cD$l2qZqT`+=k1nr zC@KhO?BoSOf28lVfwgj@5A+H(C({baLM3&f(q<@Ro(+&1JEVWm?>GV`Y1(l%u?JWA ztO-$<;=nKk{|+-U+K}Q`w%xHfp`dAnJFF75&o4-Cp{pVHL_v0BAgX-0u1P@19f+?~PxnRWk6d#`i|P>g0s|5VU_OLl8o{LGH-+uK$oY1QK^b#2bKOOb4oCbmJ;Z(4h>Aw zUSFyH#m^1OO>sZS{6Woru@D)P&+@y>80T4spjDMN9JKG8sp%ZYUS587-+-^Ld(0oi zX%rk}8j7Ozp;W^Z!wV@JnBNe9_PU1)D%X;HBLll)ib7rtupG-nz8u|)$>>s0D|pz zTby}ViJY8qknwB`)r@eZpgF{HDRtD*R(aO-8}@BpL;83~T@QWu4{ahL;k0_7V{OSV zjZ7mCFlB2@N61=8))E}3ugcM?$cbm3HhO#+Yq?Yme@kY(N&gcDK2BIW@=12yT#fs; zJtbyyYXD~0f_?f~T;(4VHT9xFfDDA%toDf6DZ@2R;q5MPFRI}O=a$mhc%zhnZz%D87ko&zw zac?npXvCj|d1#=}0Qy@D9(He`2kARu5cq8?i}m?WJK`r_=!8|IJ$-mdtBYtNI=p9w zreKL5fsNuE&6F(-mM~42(K6#6E@I{w?eiiS!{=PJdKgX+B3q<63Q4O$e}5(vuQIcA z!I`O+VDfB5T9-UsuTQkUvl9JPD;u&&|8oIN9bZmLL+Bf;6J& zgZ9ENx6iOy(~s$ISz@7M%VSpGaoUvljLuytxy^%VH3BS?EnP>OcsP-w7z%*T0>>xY zg`JM^U2Vt)+9g8kPQ0aY<;~al3s;fB_dt;|vyV;dR87~f+lqoP9XAchY3y$OtN^*C zmX=d#4Uy0cKBV!$elp5`PT7B9_YZp|-85N94PKqu0;1@cdU%J{J9;B&w`bAN3gTsZ ziOKXiFm1$rnpKXV3KVw~*%k1Nz#id<`0jV8m}*>dCGpZ#|1*bpC_*9jix`jUcf@y= zgRb7YpLeT|=Tv(4^tQZjK6XJ2m|(iKkLVeylAyQ>Hphyk*%|4TkTu>6Zt~R+_GrU| zbt?5CRJ?c+5&rz*=$^m<12W0BuQL979w>;ULALjQp#_s$s_ktZ84qC8h_W*h7@XHZ zh-IJ#8wF8_h=FbiDI$L%oUjysU`L}Hs#Ek0yZ~*Oce4j|B~_BPlvd93gDD62ujXHOsJZR>47tlb6P3 z#W3R_xa=0=hRkqNqbmJ$V|hR@0|_}^eug|h%oDTwzd;F_zK`N>@vCTT=*xAIr3txz0FfuywHxre`M2=*+Zi^9s~5!~!(zFWRtjq< zhonY$C?zhg9-;~E8c$vH4BS|iQWvQxV3coc2E@U6E6o|2coL@{N>V`rC!4@K&KKeD z^O}Sp-w;b$wf3>vhKeVhk4!aAWvfnWRTe+*(DF^ChJJffNsn1Zc+a$x?V|2qcSOnV zrK0rQ-zEvGHvD`;xTNcLYO-sO{E^ zXe9flR>4f)ntJ7wl_L`v?0? zwfZ<@1mrfQRL6H7rffYz5uCzRfX7XhVov;&veCLfx%V;QU`?`buO+)l2IdffXiK^; zf=l6Q1IHw8V!{w1-%_wILvmzvk<1huq8rt zULH|Km&H}(1||C(v3toL*eFC5Gwy*TzgFX9Y?Z_Bi#d*-Ola&ZD)JcufV74b^8uBS znMt=0>kJB?+^XMMW8DUUA+3@!8WCqW5Ds2bp zv?8PslfR)I8Rkj zrLk%s9$m|_E$8jtuI}~=V5Cffa|1cR1$~EWXZo_~P}3c>xTMqId(833hemgjlBJ$% zrF|Lvuzx2w+^^Bg1o`X6`eulqBM-~cj>z8*R3vS*ivquleQ}Hiuo2!|q$9%?j_lNE z{lx6_xKMK~N;isbhwPu-NWAA8^ffH&L>wSWLLMvCXS#}+|BkfpKR&`^AHuq*nRjDa zfFs2CH-=pt&~yt{D2VXY8Sli(OV+dKbJ2mG5cp2i0ijElp~*U##yVO@I#5SGrBTVK z=UHIrAwu{=lQl>h5X_*V+Hy}SC0vPvX6A~)oiNP7SxQSSwYxj+B1I6?Oo|fJJfrkb zLccIgc)d>Q`FD_|>wqV&gAO{5x3&L-V2mK0;Cc9*t&Ydga;LE|@Wt9dJh0a&eDHx( z<^f3YeuQwaj5G(MS_mSR-wm|@Y3YPrls~&iJ`piz{q-}6@caLiQU8NvxAwPavS1(} zH~%WA63LALgvmzx(8;PvjDY69S{1sLkX1!6WHNnbh0LQZ*2`2>^5>E&gC8w~=X*_? z(+-h$658%(Mc_ zQ{?FUeEJ;9T*|D<=2F}x^dVHDMOu7jQf=KqMq1}mn%zYCkD+{ff`ACNx45;FSyD}v z{6jM~FKYkrSgaTE&8M)7sULY!4h1FrcHY$FbzXb4P}NtRKU)c|KZ4;5+yppVBBGE9 zj9&`3C{aBx=4x&WXzeSi_k##7ntoyRzF;fgs68GH12(ObRB5BIC?JL7oc55swc zXnkHcZm*SW4F`YPq?!&f;R^0AH&>B%^9$KgH5a1lsQKBzlgf`3Al}NC| zcoADd{c(oU*ed_jY+<5ooTh9t-`KAxHi)6tI@jz3sNhQvW(4aUC8vvnP5+ac_7D9E zJ4Mz7aiUKCslUt54YBc*H5iW|j*p-i5xa2IrnKV84D}lgWf=Zr=VTA48KZqH2lP1| zjs;$ZG+%|kHzvb>^XK)0P1^L{!qrj(ETt5`$jITu~1j^xM;h;f4yih?v1pg=8$dgG@ zApjWaSl>M*ODmNaD8XhFF-ml#h0Tc#G?QjApp^5lHaSLOxKY<+w5Mt#Rp$^nBLn`U zxNEo&YGUF}1E|Xo;F9|}%46Ds0e8Z;1m94|lHKi9KC*ax`^knozV5r*J2yKY*B4(e z$d*Eo^Wo08Qw{PG7=39C`VzD)E=8Anq<~q`VCdY4+-W`%V-_&cK_=Wa)AkrR3U5w~ zAZ<|iq3OrK7{2w-GbyQwicu>F-wdFp1UXU49sXxpJAnF-=`)X;C~6N`ZbLK3Kwx@^ z9F6GsYRv274o)D*A1%*pL0INBIkX%C!*-pMp?R$pF`3{4UYYAe>9l!@!@Y~W62KdG z4bw8r;9FqczltW^Lz%~+!&h5KIwLoXpxP(eOt@{3L=R~GvEEMNv~4ctk9$z}%Q6yD zOaMKSKm?7}Rc~g6Qb2yO7rsXh#fs_L7D>2^uZU9BZ*p>-$zIG>xV*Bq(!ZKm7?dl&=;d*8!>d zu_WB%^m+St9EEa~iH4r+vvu3RE-32}5*~#56V(zPr+@wZyrJq=&|pz$j$J0<^A8&- zZv7zLi}JxPyRyPqD_nnd)fL!jveDOT2YVi#ZM(QIi!Q-;qI5k}EdycGY(O)#n`g)$ zGes4hzDt7}Cko!2W!zFW=3^RHMo*=7Zs^h?1mAr*fP!>B?E+HM&p~#yywuyA{&eBL zIrOvJ=f~y~dB*}R_w%Dea6}p|gbJeIpgXpum%xDRfuP#F!KLZ50wczNfuRSmho+Tn zyE1Gt5x+GwWWzoIZahAZ|SX%lRR}MqY zH0hsyh2+qh1E0Ze&u{8MTJi3XaaG0P{1sGg)DHMWPgLJp&5-NI=WTya8R@`8m5Zu!| zW;G#nPo#r z8{UT2$P_1j{HmE4=J1C-9_BJJbLrtzfwW*o+MBBRg0`mo*7lsqqn~3^(0bi$fW$PtQJmpozzlwAaORc zOy86FyOdj%KCEB9g=t_0W=V=LgXT)iJ1sygb)lPsPNA5>2dngNIVzs0c8f8>zSSX4 ziPaJg*#e{(gYfa$D`jjn3FrZ4N@ThcEs|-k7bfQc3>F}IO^M!MjB&VmaV-YP4QwY$ z5OXKWpYcxP(!R3Y1R&bdhjamc6PJMb=R7h_R46peQhC9!G*oDy=4m(qv8a}unEV^}a~Xx0mcst?@b{M>0z z6E0#yzd)NiQZ?2;xEg-qLHmeA^-7Ua_4)le_%qWOur;~k!&K95&Qy}h6iO7Ywfj@i z+oATqtae%2pck?ZZEB&9R?M|YK16#{A$b#;_HO}W6?dLkqkfRWb$3{sqLNES z3^Eax&il7=^9u{xJVCY_L2oTUg*}0~8*3}Pv7|%nzK4}%1*MoKKh5&DbDwomlUm_` zJ6)YL%YA!t1d>_fJf3*<1LAcOp%7A`F`+v}9~=Kj?%_Tsxld@rU*8Ac2Y^={zhhEt zN;d$KD%6Y8u z=t0Rps`dy40wVAqs>Yl{2+&ttGQt@9w#46F#l)riRWB#D0pAn^17lP4igqZ5jzH!0 z)SsojBuHs*c{Gae_}Jw|8u{}ejJO}!TtHFxPatK8xwPl(l54<8>s5YVUjTTBc(C_L|AipX4QVOVxGT!PXQaLaI+staARx!FvJORna5xb|UrGdBNzoJUy8< z(l&0nRXySEG3EP}7r;RX&F0V5sp{S-2iY+9pL#&|)ZN7F&;UuIA2pso+yb9h|HhDO z5_AyLxf=B%^B?aBP7i=+OSWYSq;b{>8fwX!q}{faM|!?wBDIk{Hx@B1h29+kQ6AOH z&m6K88CofaB<;%7*bxv&s+rmmPkGFZkjSC_G#c%ZG2sG37624ju&zCfsK)mce<`PP zx`RR+udhht2uyj5i&fLw`+oSaTrqB{8PmO?J4O?=6m77SDvrCmO2q9NSO?VKC6|;9 zB!y>Wq2wbpJ*Twdd|O7fL})cWqTdl}nA#z6#W$Bn2;CQ|qFcV&@oz0tjkM@%g@5l;DF zdQ2R4`|spANp5K-42J)ROfNQNhKA8Bt2fSj2jiFX%2r;As zLzVqf70gxuLJSvvTfgc(pDNvZ~bS`)%8S2VP z&bg!p?pg8C3!E=@IV{FmmY}Q#u+-t^oX)nM|VR6K$5f z&yz^ly*d+zL?ch`n_MF{AzgLSz_5OXrJl@F{bc#CHj^aEZhwTKd9gc8z>F)R!Ms%kfkY0+>`4VwVh~yWs^m71n=Uz;F*@j~F`KoE}m8KLuFQYQ&8iRF7 zr^1|+I3X;Bd(LQ193UWP(HVV+?vMM{U~rT;p{$lg2K=_nS!pE$AW=Z1j>>_S}pa9rB<4}3*Mrk9tKyn3kGmM7d)$yV_wk6O0mup zKAv8LlUw*CFux-mi{fn1-!RuL)g~q$bBRqujPyo^0X^k$D~9Av2K*(9VF`>u&9{X1 zw^ti@jbTxK0xV4SlHMa#3RYwqe2-lr|jV)j^aYSD0&-`DFrCM|1yeYLtb-s`EhMQmh|+>iEB75}_&C zpzGfeTlMdV<^G?MB1;!zGrQ!T0Mz7y1HxqKB5ugOv5Ned=CGm=u>WVQD3hV@upATw zq!=6ogy+9c=Yj*oWa&~7a1?*s=Gam%(ErDomx21S^51vbApbRr{^RU*hyX}c`&K{~ zLHT<2xk^2>vPDG^7iU-`Vw6M$1Y6axvXW&K;Cwn-GaujjtZflW5RXvb8cIQ+$@_s2 zPx5pz!n8;iN?Tf5SoXeISZoRd0AEln5tjZqftAS_tBF6AGfF8e+_nNsjWr^|i%`r- z|0DtFO-?ws)@}nyM??5TJpkU>fIn$dJ)Nyska3!ZMpCac<9C88ScG$tX*gx~xz4$H zgM1-6ceY%jJ{xzJskx(Ngx!bPb&Pax>eqD-{iq(Bl@huN<3=@;!HhU;hTeIEYI;QB zT-!QR0ZQ%Xp!FSX>h6Tq2i$mD)sbk9-YCCCuFZrv6RI{B;Hm98KLHnTj!L;xZ$H~5 zpjXKZ{yv6tQxYN~<0d8UcCOz3+JEYJzn-aQuq^h=#4KVMCJ?NP*@G)EG}3tZ*hmK zm;L?d47k8ZRw#*qH5NeGKCS54&u(0{?>kNI_A48=Np}p+1>f+;)d!PLADlZ9IANXz ztRbcJ87!g2SjB06n+ zvyoG|?1*2POCL%z2SV$4a)e3Nbp2`-3~@qfKccL0sJ^}E5y=5SI4SuQV-@r;j74kw zE4IRxAn^z2WxG$1NJpFxNc%$+Y2)X_`~_!_zx)#MOz(>Nmns2rE;29-WwJyP@a;2) zeEys?$v2$urX~maEwEZ{QT;$~5Yrc67naI9gi3c<3Tp1I4RyVWzB)U=qgx7&=dadO-^O zg^E;f$p1TgLcf)rQy^MzrDu^#vfuvpj7{Bv2Vf;7k)q94>_oL?@aAUGAbOKgTMT}4#YOmiIn~$Rf z$Jnyt?9rZ;fWA!|?EBDZ`F))#VIsB?sGPa9%gDoxEQI@Q(>U5^GZ?mRqtR8VlpjR> zBhO@!D3`tgQasQ1l7Jr@ZsZsK2`Piobl}0Uw@P+DSlZ^9k#d%6+ zhIY(r$+>Wc-)4R6S_PivA;t*?m2ga9rB=Vlk{QUeGX$Xll1O9!j_=GPX|r)|6OcON z6o%w`H)KHgPj91YHz;v`aCv`t^^J@VP90@e>iMx{RSGX^Pr7Y%isf183g&fQG|HdU z{Ayy6c)O*5IjC2Va4$ICI@2uVqW&eC2U3PRIWa3pH)&Et(lp?24j;% znkS^WCVW;bDE22hFoO2CrjzjC$sI}45>UY-=bn}fgZ1Z5Xs9KWRTh~H&NtHk4$~Th zQ3A;1?;2r%zT=`1Mt}k>2E3~uQ2t~L#W|!=c{_K&ifmyx)J~SAYkeD@qej--cE>~F zJDGdO>L5(GpV(Z$af%9`LMr*$?~!-Td)9k%7ZC6T<`kF~%TdL}R$*~BEP<%Vc&Sx^ z&c-ZwCSDIy>2nxriF=sycc=^Xg+O8wKDFOOp8bQ&JE!?f_H z<`WsJGuyX;jHbIEYB*D$ojW+Ei-Zh<{~GRV-V*GnDQQHfsETGbog+G&>0RlKOG#02 zd?L2gpiYl3lMw6}w#(5Y+3|#Om$S^c&pssu<+4Yewd89X!dv4Je?g-o{^SEg$%D9tPUXLde)VPpAmRgYH3hh*R|jxy4v-Kdq24*AtPYu^Z4n0=d_kZ zDLKF%BhJCIWawy)8lt^#NDuC>&GHEM12_Um97dsz=i}ycZaA>U|;H&IS(^# zvM1ZhQj~vc&!-?$hcU0?B{y0`O{w}UYWggCh1LRV&<=?Yxi;lXUT3&88Q^WCw$kzKKQX;EF$4LNq@QMLoNOb626Ye*i&F*+4`PT+At~EzoCV#2 z>gQHPuzTgmYHhGPZEabb4J2ov^11DWifwh9P;IY<;pU5M);{d!q#+cr8#WY7} zUo~D80}!H$xqElcDl%bRo1GCo#1@H6ur^#@tfH`F))cqFCZ1fGCAY+?sj#L@xrAw6 zNF~mPwFswDQ>-(iCKE|j%9lnL?l?hFpRz!wQfEQe%_e%~60T`c^(?19o1|T(Svj%M zp+(!=!zP(bw~|}!k$aN*Ci4hspk1+pZLLyk3Sjh}G9j>3Oq++7X>MgxNG>(dE>q)| z95Z*RJOAg5XI}8&-ti;tLWSPlKwHH46ivHwD$FHO^L*uqPM!%1hjYIHS04>-*u+AP z#X?+C00(w$ta!lbB5C|j+z$?vcri|G#*7vU6n5J|R(1mT(UA1)zmX8$&*zWswh)I* z0HpQ^a^0clqsbo}77`bSLBPrh%B{QL z>~K(0_95=q!E{9>9beJv=Ase9JPw;RKy0qt zhzG}zWSoh?#0{7xmL*Rq>{)fOwPhutN&8de>t0Hgq=gR!vFc^GfPM#y;$$M9w9eiR z?&4ZWa9|_s0_t3MIX|SehBp?O_lWDMM}-iY3(S9`jfx$Y4!oQT6p4s~B^-FRgI20X;iW{xADm^AdI9Rb@p1p#KeAYnTnR zd?&_rATyKvAsmbr?|OlvfGh-WggFjU=S}bY;yXzNPI`q%nt!4Z0L*=L5X$N>VQr9ZZ8Vzy2Lpm%% zO0&Vcz;(NQH>zmYq@faAKprVam}`U;dfP@e_$Gwv`{n{`Qu(v$DTSG9?y}P$U~Hus zN|>8q)q1f)I++T>cdbk+0hGI*C3Yc6ipGpf8*~q235n#G>YU!OoP0fMRNk!Ub~Y=f z)Nc`h{7zv}CWEMGYAGA-G7AL7XKb@r_Fy~@oD&H8z?r4jNYg$A)FfsR6shF%m#St~ zLT6=7YuTOG;Icz3!9hy~kr6FuZ(2Oo=G1EB@usALPexHh^G1bv5~XjHcNh?##c(xp zsr(YK04aAF8SAfIH{YY$vfG=gdQsn!2tD6C=>Aa?yJ=;Dw@6kCbv^12_HER_9|*lP zn!p9?0=-c}bQL@a5Q)bhJ6EVhvToW)Xb?j8g3$OpCV+aAuv)I8Fj@C z(8uJIe^+-JMVTtpj zh$(CuAyTCe5M+2@FM6Gr4Z(7B;Zk3)QZ+Bi3h17Be1N%=)cK5U@#tp2d8Ss_b@}c{ zV+p8si+VH7jb(L}rADUbL|eC8)L;dW{D}`0)&KG$S)FxQJ}=S2aml}2I0^u-p8yZ{ zE6y*dG#yCjp=;1zGFckLy|Xv1CEZQQAl*%Zu3X>%(Blx9bdP=pwDu=Bq)waWD61zs z(!WP&`<7tpip{M4_%&j4VnLTeSE4PpA@Qu3kClCmtkS2njKJafmhD{?G4scTa>O%5 zw9j^&obIeD4PtO#YKz#)L7~FFzSI~@TK7HME=x-QCHA8o>d^k{%zSAIaVrp?(|b8# z?8r9@AW(14)#h6hoJ&83 ziIrP(@Q_=wqsINKaTeQcwgtJ61n(1$=e6}2!M6P~NTs0wuFOt|O0=hhd3mIU5v7_P z&^}VjOjC2IXMADqW}K+%ozu=czfy6%wcvICuBmjY4X&0z=OjA@OS)qxX#Vyi8aBlfUl!AGN*AKN_>%?6l}U1 zC9kygC@el5(w*UdLegew;yW#7VcY#vO38jlUVAlokie_)s_!JA6)+o*-p zQSgisEbpKFGcmnq9V@}dzY4J;^me9Q-z#0glP%<>LQU30Y(=3cXgfPJQzcpmnEQcM z7NG#C;`yG4du9tDResj78Ob+@d(^9Z_$r#xQ?`PAHBEr$9XFnO4@H#S zStS3V!)zu-Tk^Iz!o8XyW+O2L;2}Kz`j{77TjB11ZQ2rAYS5#e&Yg+N)s(*WJNgfw zQ=R-he&VS7-`bz!R$Qh76&pF7<&_XON1?03r!7ps^Anel00es+EyYBE_~jK<={*eY z_z`=u8sAu7Uaal!?NwZkIh~^S{y5fNx+f1Fy^KG&d~=wDKs241w-BNC0N!xgA2q3- zx0TJ176V}$z+}OpvN8QvyiHs0#$9>15nCZ$@oZH+7Ze@j?)dTyuNv_w1}IazA_(x6 z%@ALnZ}(??yPM-1hb_s0agGm5HP&=Hy`FLF)36<-Pl_faQcWk2QBZ{HtC8FA0~Ovt zRCmgVgfaZksT01?#Nh3FK-Bp$eBMw6ooD9UcF024v2s3tUjekK2YEfVDgN@Jv-`FS zbA-Pjk2$vjY3ZE&fvPV{@8sdbqY)Tv9oc|bbivliZ1!%5bShDHQy@lwc=a0x@vdIF zwyok}k!y!lQ|l>5^y;xfLQ?JAmGpxA?|52Yr61>&B|9No26Dyp0EKU%^n{AZ;^k*= zBx4_}D?y37dkT-1k|BK99rY~nN=lk~#tU&$T+CzamjW@=^v43V*2C&X##SHY41n>3uSDW|h=h=d@|Z?)Ch-zorflUkfWM!FHu5Zu|5g+Vrs9Y49&b2OemRv5Q_X z6NeH1DjVi1>-FlPh+Tg&5aT;M)(bIxU$evyIrbGg%L#0T4WTSXJX-EY_3Hwa_&SAU zvHm$~lKVPCHcBFr+xW^l88aQeAl8d*KFwx$Fg4`f?LwXN1>mc3|O{Vdj3Rbqlp+oYWydQk$a6>|i zZ=z@=UadCs%Z&76)GZnjS*`@`WvhYBGifL9ACXppSjXlQjg6FPq37p4V~Z`GH}Kw& z8#eCpaYvdHK=E|nSkjq;vVXkbagg^oe;gVjFP?|hx+g|6N6dXbr~jogMw2H3r=QI! zpG;(&(EzH%AvF)<1&qLDnRy4I+Q$YUIG}Og3QH10#cHIkJVF1{OBmy~_`ajOC@EuM zxYP2#c^V^Ue(kOO{sSF>Frw@*U}e{6;}e`Cl97cyKw5ueUq;iTw5wl#@As4%lha(y zeF~N9{WJr?ptiPF^U@3u(Ef;G0ee1ahcdX{1OcT^XGV85u(3_O!+afmJn@KTh0Scw zmI&kyv8VL+BsDcf^zTXQ)x6IWpP(ia-k*Vg;|~lu65&dXtKVR&Lg&y!&0RCu2! z@(w2l*qqQhlWaJ1NZX$%<)h5dQOQH`%!@RwxCi|$pdWK1>_p1Xn>y7yqV;7%dv zCpd7xyz_DZ-*?>sovx>s1^rhoDPZ(zOlZ?pJEm)%Ru;dN#W})Uk<}VDZLZX?!%B{Y zEDVjJl%|rMFvBGkY3?|BbwSh9s5SuGbPp2(VAesiY@E1*m5cI3On0(YI(8cEJw`_O z?R>f-9|&CkM76=##7?li+W}|%_Co^t@e2J#VH($XWcRE44E{WRrY{!F5WKA%-(+je6^`Q?=+zK_ zCqZDwI8s4?4LGH{hHzd(gX6;as% zRK*sQ�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 Qc)^b}ObCdTt-n6~KSqm+J^%m! delta 39466 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 Ar2qf` diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b5606979..ac72c34e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c..fcb6fca1 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,98 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +118,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,88 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 107acd32..93e3f59f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/loader/src/common/socket_utils.cpp b/loader/src/common/socket_utils.cpp index 73dd1d24..552a599b 100644 --- a/loader/src/common/socket_utils.cpp +++ b/loader/src/common/socket_utils.cpp @@ -19,7 +19,7 @@ namespace socket_utils { read_sz += ret; } while (read_sz != count && ret != 0); if (read_sz != count) { - PLOGE("read (%d != %d)", count, read_sz); + PLOGE("read (%zu != %zu)", count, read_sz); } return read_sz; } @@ -37,7 +37,7 @@ namespace socket_utils { write_sz += ret; } while (write_sz != count && ret != 0); if (write_sz != count) { - PLOGE("write (%d != %d)", count, write_sz); + PLOGE("write (%zu != %zu)", count, write_sz); } return write_sz; } diff --git a/module/build.gradle.kts b/module/build.gradle.kts index 39255fd2..741541f5 100644 --- a/module/build.gradle.kts +++ b/module/build.gradle.kts @@ -23,11 +23,11 @@ android.buildFeatures { } androidComponents.onVariants { variant -> - val variantLowered = variant.name.toLowerCase() - val variantCapped = variant.name.capitalize() - val buildTypeLowered = variant.buildType?.toLowerCase() + val variantLowered = variant.name.lowercase() + val variantCapped = variant.name.replaceFirstChar { it.titlecase() } + val buildTypeLowered = variant.buildType?.lowercase() - val moduleDir = "$buildDir/outputs/module/$variantLowered" + val moduleDir = layout.buildDirectory.dir("outputs/module/$variantLowered") val zipFileName = "$moduleName-$verName-$verCode-$commitHash-$buildTypeLowered.zip".replace(' ', '-') val prepareModuleFilesTask = task("prepareModuleFiles$variantCapped") { @@ -64,10 +64,10 @@ androidComponents.onVariants { variant -> filter("eol" to FixCrLfFilter.CrLf.newInstance("lf")) } into("bin") { - from(project(":zygiskd").buildDir.path + "/rustJniLibs/android") + from(project(":zygiskd").layout.buildDirectory.dir("rustJniLibs/android")) } into("lib") { - from("${project(":loader").buildDir}/intermediates/stripped_native_libs/$variantLowered/out/lib") + from(project(":loader").layout.buildDirectory.dir("intermediates/stripped_native_libs/$variantLowered/out/lib")) } doLast { @@ -86,7 +86,7 @@ androidComponents.onVariants { variant -> group = "module" dependsOn(prepareModuleFilesTask) archiveFileName.set(zipFileName) - destinationDirectory.set(file("$buildDir/outputs/release")) + destinationDirectory.set(layout.buildDirectory.dir("outputs/release")) from(moduleDir) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 80dc4f19..62d27ba9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,8 +7,8 @@ pluginManagement { gradlePluginPortal() } plugins { - id("com.android.library") version "8.1.0" - id("com.android.application") version "8.1.0" + id("com.android.library") version "8.1.1" + id("com.android.application") version "8.1.2" } } diff --git a/zygiskd/Cargo.toml b/zygiskd/Cargo.toml index 5a5d18e7..90b3b5d1 100644 --- a/zygiskd/Cargo.toml +++ b/zygiskd/Cargo.toml @@ -16,14 +16,14 @@ konst = "0.3" lazy_static = "1.4" log = "0.4" memfd = "0.6" -nix = { version = "0.26", features = ["process","poll"] } -num_enum = "0.5" +nix = { version = "0.26.4", features = ["process","poll"] } +num_enum = "0.7.0" once_cell = "1.17" passfd = "0.1" rand = "0.8" tokio = { version = "1.28", features = ["full"] } -binder = { git = "https://github.com/Kernel-SU/binder_rs" } +binder = { git = "https://github.com/Kernel-SU/binder_rs", rev = "c9f2b62" } [profile.release] strip = true diff --git a/zygiskd/build.gradle.kts b/zygiskd/build.gradle.kts index 7d07fdb8..607e098e 100644 --- a/zygiskd/build.gradle.kts +++ b/zygiskd/build.gradle.kts @@ -20,7 +20,7 @@ cargo { targetIncludes = arrayOf("zygiskd") targets = listOf("arm64", "arm", "x86", "x86_64") targetDirectory = "build/intermediates/rust" - val isDebug = gradle.startParameter.taskNames.any { it.toLowerCase().contains("debug") } + val isDebug = gradle.startParameter.taskNames.any { it.lowercase().contains("debug") } profile = if (isDebug) "debug" else "release" exec = { spec, _ -> spec.environment("ANDROID_NDK_HOME", android.ndkDirectory.path) diff --git a/zygiskd/src/constants.rs b/zygiskd/src/constants.rs index 70f82e34..3d2cad09 100644 --- a/zygiskd/src/constants.rs +++ b/zygiskd/src/constants.rs @@ -9,6 +9,7 @@ pub const VERSION_NAME: &str = env!("VERSION_NAME"); pub const VERSION_CODE: &str = env!("VERSION_CODE"); pub const VERSION_FULL: &str = concatcp!(VERSION_NAME, " (", VERSION_CODE, ")"); pub const MIN_KSU_VERSION: i32 = unwrap_ctx!(parse_i32(env!("MIN_KSU_VERSION"))); +pub const MIN_KSU_VERSION_1: i32 = MIN_KSU_VERSION - 1; pub const MAX_KSU_VERSION: i32 = unwrap_ctx!(parse_i32(env!("MAX_KSU_VERSION"))); pub const MIN_MAGISK_VERSION: i32 = unwrap_ctx!(parse_i32(env!("MIN_MAGISK_VERSION"))); diff --git a/zygiskd/src/root_impl/kernelsu.rs b/zygiskd/src/root_impl/kernelsu.rs index 29e58607..7bf60115 100644 --- a/zygiskd/src/root_impl/kernelsu.rs +++ b/zygiskd/src/root_impl/kernelsu.rs @@ -1,5 +1,4 @@ -use crate::constants::{MAX_KSU_VERSION, MIN_KSU_VERSION}; -use nix::libc; +use crate::constants::{MAX_KSU_VERSION, MIN_KSU_VERSION, MIN_KSU_VERSION_1}; use nix::libc::prctl; const KERNEL_SU_OPTION: u32 = 0xdeadbeefu32; @@ -27,8 +26,8 @@ pub fn get_kernel_su() -> Option { }; match version { 0 => None, + 0..=MIN_KSU_VERSION_1 => Some(Version::TooOld), MIN_KSU_VERSION..=MAX_KSU_VERSION => Some(Version::Supported), - 1..=MIN_KSU_VERSION => Some(Version::TooOld), _ => Some(Version::Abnormal), } } diff --git a/zygiskd/src/root_impl/magisk.rs b/zygiskd/src/root_impl/magisk.rs index d5484611..7b27d3c5 100644 --- a/zygiskd/src/root_impl/magisk.rs +++ b/zygiskd/src/root_impl/magisk.rs @@ -40,7 +40,7 @@ pub fn uid_granted_root(uid: i32) -> bool { }) } -pub fn uid_should_umount(uid: i32) -> bool { +pub fn uid_should_umount(_uid: i32) -> bool { // TODO: uid_should_umount return false; }