From 9da36a12b15f52b97136f8ffad8c2c39bffc2283 Mon Sep 17 00:00:00 2001 From: Ademola Fadumo <48495111+demolaf@users.noreply.github.com> Date: Wed, 9 Sep 2026 13:56:41 +0100 Subject: [PATCH] ci: bring :app and :e2eTest under the Android Lint gate --- .github/workflows/lint.yml | 4 +- app/build.gradle.kts | 20 +++ app/src/main/AndroidManifest.xml | 9 +- .../demo/database/DatabaseDemoActivity.kt | 4 +- .../demo/firestore/FirestoreDemoActivity.kt | 4 +- .../main/res/drawable-hdpi/firebase_auth.png | Bin 6901 -> 0 bytes .../main/res/drawable-hdpi/firebase_auth.webp | Bin 0 -> 3598 bytes .../main/res/drawable-mdpi/firebase_auth.png | Bin 4496 -> 0 bytes .../main/res/drawable-mdpi/firebase_auth.webp | Bin 0 -> 2532 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 ---- .../main/res/drawable-xhdpi/firebase_auth.png | Bin 9079 -> 0 bytes .../res/drawable-xhdpi/firebase_auth.webp | Bin 0 -> 4608 bytes .../res/drawable-xxhdpi/firebase_auth.png | Bin 13593 -> 0 bytes .../res/drawable-xxhdpi/firebase_auth.webp | Bin 0 -> 6344 bytes .../res/drawable-xxxhdpi/firebase_auth.png | Bin 18241 -> 0 bytes .../res/drawable-xxxhdpi/firebase_auth.webp | Bin 0 -> 8074 bytes .../res/drawable/ic_launcher_background.xml | 170 ------------------ app/src/main/res/values/colors.xml | 10 -- app/src/main/res/values/strings.xml | 21 ++- auth/build.gradle.kts | 12 -- build.gradle.kts | 38 +++- common/build.gradle.kts | 14 -- database/build.gradle.kts | 14 -- e2eTest/build.gradle.kts | 1 + firestore/build.gradle.kts | 14 -- internal/lintchecks/build.gradle.kts | 15 -- library/build.gradle.kts | 14 -- okf-bundle/ci-workflows/android.md | 2 +- okf-bundle/testing/agent-command-policy.md | 2 +- okf-bundle/testing/validation-checklist.md | 4 +- proguard-tests/build.gradle.kts | 11 +- storage/build.gradle.kts | 15 -- 32 files changed, 90 insertions(+), 338 deletions(-) delete mode 100644 app/src/main/res/drawable-hdpi/firebase_auth.png create mode 100644 app/src/main/res/drawable-hdpi/firebase_auth.webp delete mode 100644 app/src/main/res/drawable-mdpi/firebase_auth.png create mode 100644 app/src/main/res/drawable-mdpi/firebase_auth.webp delete mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/drawable-xhdpi/firebase_auth.png create mode 100644 app/src/main/res/drawable-xhdpi/firebase_auth.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/firebase_auth.png create mode 100644 app/src/main/res/drawable-xxhdpi/firebase_auth.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/firebase_auth.png create mode 100644 app/src/main/res/drawable-xxxhdpi/firebase_auth.webp delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 app/src/main/res/values/colors.xml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a6d5269d33..ca5a5bb3b6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -31,8 +31,8 @@ jobs: java-version: '21' distribution: 'temurin' - # lintAll gates :proguard-tests, which applies the google-services plugin and - # will not configure without this file. Mirrors what scripts/build.sh copies. + # lintAll gates :app and :proguard-tests, both of which apply the google-services + # plugin and will not configure without this file. Mirrors what build.sh copies. - name: Copy google-services.json run: | cp library/google-services.json app/google-services.json diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c7870c5001..75b67e45c1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -39,6 +39,26 @@ android { } } } + + lint { + // Module specific + disable += mutableSetOf( + // Reads the root wrapper, but only the application module analyses it, so it + // belongs here rather than in the shared policy. For reproducible builds. + "AndroidGradlePluginVersion", + // The demos log their auth callbacks unconditionally on purpose — watching + // logcat is how you see one fire. Unlike :auth's, none of these log user data. + "LogConditional", + // Glide's KSP processor does not generate GlideApp, which the storage demo and + // storage/README.md are both written around. Migration tracked separately. + "KaptUsageInsteadOfKsp", + // A themed icon needs a flat silhouette drawn for the purpose. The only + // candidate here is ic_launcher_foreground, whose opaque region is a solid + // plate, so it tints to a featureless block — worse than no monochrome layer. + "MonochromeLauncherIcon" + ) + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 77abc57765..9eb4b0fc30 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,7 +14,6 @@ android:usesCleartextTraffic="true"> @@ -22,7 +21,13 @@ - + + diff --git a/app/src/main/java/com/firebaseui/android/demo/database/DatabaseDemoActivity.kt b/app/src/main/java/com/firebaseui/android/demo/database/DatabaseDemoActivity.kt index 4e99cbfd33..b756c2276f 100644 --- a/app/src/main/java/com/firebaseui/android/demo/database/DatabaseDemoActivity.kt +++ b/app/src/main/java/com/firebaseui/android/demo/database/DatabaseDemoActivity.kt @@ -33,6 +33,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.firebase.ui.database.paging.DatabasePagingOptions import com.firebase.ui.database.paging.FirebaseRecyclerPagingAdapter +import com.firebaseui.android.demo.R import com.google.firebase.auth.FirebaseAuth import com.google.firebase.database.DatabaseReference import com.google.firebase.database.FirebaseDatabase @@ -122,7 +123,8 @@ class ScoreAdapter(options: DatabasePagingOptions) : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ScoreViewHolder(parent) override fun onBindViewHolder(holder: ScoreViewHolder, position: Int, model: ScoreItem) { - (holder.itemView as TextView).text = "${model.name} — score: ${model.score}" + val row = holder.itemView as TextView + row.text = row.context.getString(R.string.demo_score_row, model.name, model.score) } } diff --git a/app/src/main/java/com/firebaseui/android/demo/firestore/FirestoreDemoActivity.kt b/app/src/main/java/com/firebaseui/android/demo/firestore/FirestoreDemoActivity.kt index 91d07abb91..3fb4e44d5b 100644 --- a/app/src/main/java/com/firebaseui/android/demo/firestore/FirestoreDemoActivity.kt +++ b/app/src/main/java/com/firebaseui/android/demo/firestore/FirestoreDemoActivity.kt @@ -33,6 +33,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.firebase.ui.firestore.paging.FirestorePagingAdapter import com.firebase.ui.firestore.paging.FirestorePagingOptions +import com.firebaseui.android.demo.R import com.google.firebase.auth.FirebaseAuth import com.google.firebase.firestore.CollectionReference import com.google.firebase.firestore.FirebaseFirestore @@ -129,7 +130,8 @@ class ScoreAdapter(options: FirestorePagingOptions) : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ScoreViewHolder(parent) override fun onBindViewHolder(holder: ScoreViewHolder, position: Int, model: ScoreItem) { - (holder.itemView as TextView).text = "${model.name} — score: ${model.score}" + val row = holder.itemView as TextView + row.text = row.context.getString(R.string.demo_score_row, model.name, model.score) } } diff --git a/app/src/main/res/drawable-hdpi/firebase_auth.png b/app/src/main/res/drawable-hdpi/firebase_auth.png deleted file mode 100644 index fecbcb6dd41127a8e6d1907c7c74ec2fce7b5ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6901 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 diff --git a/app/src/main/res/drawable-hdpi/firebase_auth.webp b/app/src/main/res/drawable-hdpi/firebase_auth.webp new file mode 100644 index 0000000000000000000000000000000000000000..ecdf81adb5804ae0737b6e4a4e82b0c03abf42d1 GIT binary patch literal 3598 zcmV+p4)O6)Nk&En4gdgGMM6+kP&iEa4FCWywSX!RH3Q@}k{n4v|IMChxhH=SF#-Kt zx$8URuK#vibvBZ3Qyzi8mnYoI&Dp6%t zjI&f`W@e@^y7mGZRY$((%+AdF{Qu9h|DHN#1{<*N=(tn`R6zxNSqE)wRL`DObLwJa zs~B#8xm67_Jf}7szo$3At>s=oIMH(lQ}+}U+C68~ZY7i3^A=Y{b5u9Fo3>)OnLFVRp*!U6k-NLQySuwn@^YjD@xqCc8US1`FxpHt!3w+mzy z4m+47%o;rHh&TeOZCl5-@qV^#`)jt9zuz`*z|l66ZMDDIiP?YE1sq3i+enh#Gn2Ki z<=W-}#~ih*6YMoa7m67Y{qF3TXPqFOU>y?uHuRFJ6I`T}cFb2VxiwBktCz44%aG{z zV#mBnSM8V&G*>D0KkNxb`=__3Dy1FqmP~R>&-%;L`PRU=RFbQd=X+`Vt_<2SpNOq= zCigN{DN7MY7m0w<VFtWYJ>nu zE5Y-nyQC(!BOWD^y~&wDz>&`csme%d@>JgAtQT}6Y-K06KPG} zRr0VrZ4tDjq9YQUJdP9ce7YiOODY{>L4lyXnN-OUe|ZWPA)JyE*_vUKmx|V8PAR(Z zM%E*xHF;~3t^(jsC329U;A0oBG?2_GMOOppoKl?c0=)_1Tp%}rk}Og<$*<=Ey$QN_ zgwnCuFB0Y|$RBeRm1V>|toGm{u8Zvi`Yf0)L=ao(gZlfa%0wU{?FwrDx zvs5RTJVNP2$d33dB=VgYk&EO99x@)BkoXlxP=U|K`l{n@sdyg%F4wr!i9YQE&` zXxMokCJ0NIkep$#X-H2s=X7+-nvQPa(F2&)nvQN+Y8=3{rnZkABSppU72-*Hs(Gqu zvbyhZ$CAeOVEo)0Daq>6$z*r$(JtW}V=XH(dvDUzD=|YVf7+TLqFr2e?!A%TKe-o5 zmVxQ$mI7gynL(DDB3`8Ok3cYknD7G-lykZsB~lU+OgyakspBsQNzw@etv30+d?PMa zd_E#Vda5}B*?qE)#o)}oCkDjWkGDDlsl$Tx1qGW)2_^@u#grC9|9le$9plK4-cU?7 ztoXzj-?%dz!AoxSd@!rr9AYk_ywv__T8#Lj0Dag8EujGjHwbpaS^aX46RkGrnCOUT zzeN8c6NI%oF=tZk%#JzZa~B1^@WPn9QOU}Jc=%)(#yBT}8gSM-TE~p_9#`xb=@{t< zJup&UF^kS={kga-jX8&w*BuGKz(qgvPhR*m76CBKAb@mqONFz^&LVcKuKb>yoviYqjHl%+98A$Y5`5wOf&#RebVATFT2z@zFvY$nWcEQD3M*0A zaDN3Xe1SVIJig6Pib8k0#g)!fkva;I(2h{i@xz*2)fI|^bB?;|nG)>JwnY@~0&*G} zI!66x*1G(sxOlLmQCB83Q5r%6RuAo0Sm?%2@p8diU5kPz9o;gUI1NPz$=Z*w;7x#1 z{7OyhVcY5lherem$xk{f*J9KB0f+6D#zFZ4g9oOz*(t@hylbj~L?@ibilXC%ta4RV zaKKXu--+yEfK zS0!^R;8BOq+}`#nY|W$rxFP77)=5e!pZo7PfKhF3`9L8^ZPt<@<=#!*`d+eF>6ozKnO5p4?Vt3Pj(Ntz9(108;BEOUK+;~d?nEP?J6#I;H z?og>y1bLizU?zo|f>@5_{sx3M9uM$zWTeo-z&z&DJ2v!hvcP2!h$MzFIVIqVPk|_H z1FRJ3=$6h2K^0UPcm7j)$-OY8lnVN1P5=r`g&smFYMm5b;38aKY7SdxO$EX$3o_zTcw zF5?|Wv`^t8C7{i-Eo_4p)vZ^jVD8m@vBXXUoNFSHX_w=+B0MHR z_7kK%QQMcmlBzM7;5Afq`WPtWc2k_sV`F}Vce7J**sv7?qX2;8MR5Z|%bO z$zOz==Ljt*N{PnkSzwqfrzSX!&GDemCv2}m#6p~C)Xh7mY%3pmY+mDH7siJ{zm9FS z6O1{ZK}4dew;AG4TqB59p?Rs4Sd7~SmXdQ52^BaL_~&lPws&cXtq8Hm>%YvEopa+* zpixTya3L$hVc82e$w^P}N||EBv}@qIs3N|}qm1$V0ZQyI5%Y0MAgdRKqjJS3-O$}) zZPx$bLp0A18?^F?!~Vb$H&uvgHL=-itXpOHk%LyYCrP02JVuEZUf0L8x&Y-BC+pqhstP2!26#y1Lq|G zv%h>pVQ7c#zv57n$IiyTpjM?rvWkegIQ~>E4bFB^s)=W#y=9h#_y6gVwNDa~RBhFl z!JGaQ_gIt!tEH!!GfpLVpRTC(E)46pI_;ReEzI2%6wWA*}zAM3|ZUbAb=aSO^ zJdObP@S^uLsD!r@<@2l~#uFZnO^|D{W4>N`%rP!t2GqQ+4m$UOOlFe|{>hYM)9nS8 zQ^H0!?=en&(3b)!`%I}ZK2$6R$z`U-O;O{NcSRqkCT!>>ESDbRD*Nlc?5Pc;G5Ic6 z?6yBs=>p?pc(j1!6zO7^?=Nn>?1;x>Jjg8IUN}QmsCDey7?SDYs$B*|j7lYnSU6(; zQeelt>IjpU;&gr%Se7|;fEtfApqt2fa>6!uXIk;r-QG% zgmY{T=h%wMRSv!`IrzHWG0d8-)3-sBH9hhG)ZB6H_yErf1_C%<1`MYf;a_MEuDa}x zV?c7l8IgSVeE|&RDhI9{P=xvaj-E4xvjgft{Hp(9PPN2>4!*8CDV$>!$eM`9vwVkx zuWOEh%b9Ln3eI^Wpmuecs!z5#W_=@Lg5&27{a>#JEr^c)|`63?ACRg*_@vMWdYaM)D)BG5Gx#>)R^}l?2_h+wu^GztmXS*YkzjC{D Ulhb7)Ipy3m88c0x_h^U|0OC5_UH||9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/firebase_auth.png b/app/src/main/res/drawable-mdpi/firebase_auth.png deleted file mode 100644 index bc9af3cc0c1a8e2af1acd798ca94bfcb5ec2651b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4496 zcmV;B5pV8^P)PAs zNl=Sm&w4iYtX(jIFpLFbX|oU1B$!#N`!fuPAp};-HAi8@W!Ad8Xo`(!Sq-2ecvn|p zJ97h!0Ccxtbj_NVG1$(m3f0;PkFFN{Z3$H19i~^u$!)O;69rt5!02kh77liSevF8o zwQd5Vi(IBrVilYI*&qpvZUSR$FhmP6(Px9`A~3~X-K{sA1fC6|i@+Frp8%u5!RCe% z$z#ukNAoONkGfX^371)GZozugy%I>c%vui@T>(ZW*t6ENd}E5H0vj&5ip~5)nJA#C zz=lk&VnFT8hGO&lzOm5SMOT1{2yn2)>=Okv6WB!VIULg`U787uKggV;HzsdqY9=tY z1gC>Zp?0QOlP*mf9ijC_ZD4ZDI6G4l3-lj;^sD;6Lzp$%aSKPaKPz?eZN z?4&kfx=)GXWv;5Cy1*7bVJ%o>wUJ9F^^+_v;kQySw5uL=BQ*Xb3e<^K$O*^vP)6(w zo(ze{UEgKSB|Hznmw2ugY*2e)B{;c6OtHcsS4}G=jM(LhnMLzQQAEFRXI6j$e6`^2 zIRjZ8-vW3VA#pM2mWr`mbU+yFt^kEtQz6T76F~kPfE$+pWS8M<4oEzLQ+*6q8%MQZ z!Fp*iHjDWA4IUkXU+%!y+fJZ`cR(URwQ-@5tT?&_ll7{c9FbL%Mdy|$ltpJ5&5EN7 zEN<1S0huL1_f3K)2&=(B3=)_>B8ck*4Iv92H!En(2|$*SR!9uCU|zqOgk;U+w$1Lc zd4nvhBL*Z{q0)%$vJw{_Eg%U>yc+*)?gR{zt!yJCTLUfFZ;Xj?WWfbL2e9XYX^BX- zxQIv1h;-5OfHiiIg$4g#{#=uZ%yH#P$8iHn&OjjW9g6Ap`Fy9ky1Gs^H8s^f{`lh!b#-+Ce4V}x-YaYxy!`_I7u~Z( zh55e}e_f!6Ui=#zTK#~pWEz?b|ynY2Qo`vv|4w%}LnYq)Ma&VXXtPvgCE6!Zth4d7eOJF>v>@Dq@Z zqNbz8vIK=b?D2U1T3%kh`_@};^}qY>yMB;Kzrcru?TjjbHT0|10uz4t2=5mc=mwdR z7yoh0TL$BvS`YS#PEZqc<=?yA?zOqOx%<$Vee{}Ciw;k+)ESsh0@;aHB;#iVlP}HT zg7GzwUkC-es$t^BU8;*qVEn!@Cnx9c-QC@9pE`Bwrp1dFTcjpp!R$?q`ZpYkD2ysX ztz9*lix1z^jHRn#JX&p1hCcHb$eJ%+yjbaUIzJ|Bj@Ocd7VJ~GHObKGsN1Dg>4X`M z;F5FJZHBz(HtQxXLDoEJ(xeYMJ3BX&l$6*Y&e=G@i`1UC%((TaRnOX=mIdQqejCR9 z!Z_mxX=!P{J$m#gZKP_8$6W`f>~Q81I3+LG?NYBc=AaiX*SYHuq)av5oI!`f@f;>! zFlEY=D*Td)$C&O~o0Sa=6D<*P)oMZFj$QYY9WBm&9$zV7OL@0;Sv*3n}=Gr0)v+Inz@4kEcgb5SI(BQ?O z^TNNp2IH0_E{V*L)Jeb$AG)zzbj`^cG%#3`oSb|Q#^Yu0zyJOq6A~5IW?=e9Y<~_b zH%)^EfjlRSH&8hwmAt&Xjg^&^6Cx8XF$QZRa2iHp#%`KQCMAgdW$G=P8BDY?7cN}5 z3LmKna$V$L_7y;ZwTQ+fE_I=<0yC`Xpa`LW#2)k5`D~`5UAuM-4jecDmo8m`jEoGx z(IA*PbLN0+=sXS!3eV|W3JTzzcis^m2@-$HmMsI$zwyQ!!p)!rO1N-P;{N5!mwy1k$P=<# ztA+wQfN5tdIR|7zvoO3Evc@h@F7R7#y#>!c`|Kcb2@-V4k|n|;v0}xF0ah!X7p+>e(-F2u8#5aX@aGQ5Q;fH;cx2(LJX!n2mAl*s-XVJJfZN0uyu- z&^1aRH(gOtF{7-kOh{+@1?J&P(2{)66`rT~%R}}9$|sUa5k+*vVmyv@UI|4-ML%t6 zX&EGN4QL5v)4EzQFCL z*{^tQEK60INfQ`{3!0mo2MWy17Lu$Q&=Rs@oz@{yf|W9r%?5mn7A+ELUMbf_6PVmK zi<;PKwHBnOr&9^c4Qy}l@E_0`g`Ft5gZ|jk3l@qDAkkiY@x>vpA@SC%=^uiO%)04& zP_4|0ZQHip0D}a!!rP!VWWfsNSou0Z7UZH?4lIy$QnMmj@mo?T(*&~MRoXt2>Rb{{jJ45Xvl@a%;`Mr= zuC6YMz+QCIHems?wsSojuwkuQ{KEIL8%8VT5Y)N4M((O(aIyg z2lcS&W+3sSH9@3;nREb~9nmLi@t;5y{{7mIpOK5E7pQ1-d>6|>Y+CaYxu#bOeYpqqt679nvdJC|zFm|$Jb&CR_Xn;k7t zM}dW!n1`*P2b5Lc5Z|R8aoz~gAQv6zY=@r9E-C*_uv%8)5_GeOUVyAR++xX^X#hg1 zm+0;7y^I6@p+tf2`2BGD4C z;YO+=X=`gchV4o(3?*==v$X;Af~(;dY_g)r?Vrcr+aZgJXVge4;a#n0 zF*jD?7K^iI&mL`UZ55WA4mnYWyH~K{8qfnOoqh~42P9~7QzekVN%&9O!S^7M@caE8 z^XJb$48b&mAATlQ5-bP3Ts4V%GYk@$k}DQF*IH?{e$#i*`dJMm3OLAc5PQ)c91{+k zvNHss*&h12>L?<&o&Y9L93F#KEX7S5oiD!lVsA%Bho`2dMi4me)#CgS*oW_je*0)q zZF~-(8(s4c2Y?wKY-qJ%xpddThGB;e#Tk>Vp$3Oo3Q;_c9BB$aKNOffH)dyN-!*yi z@rRzCp3X-edBjI;NyoCs3-OqP1)xXLMZa=m|2BuIPGE+e;~}}L4Zh#4Pj80>A?xi} zx^$^G{B>Dd=V3f9#du7Xtj+CC;!@WtqDM_T#NQJfXs~eEedwxN{lV3SQ&t&!#UW&?)7XKG zthEW4SnY67TyDn>UYBcNjK(*i2F+l@l+#g%MlDXK(~hn>`-K-?D6XumT#fbST+k2- z6YJKkdmV4O@3G#!M$HV&oa36eud2WzQH3UVOyk%(ZPiZ`23kLZ8m}j&u;EznjkR69 zdNmCP9J2Q8*>gWy_lD%;WL4Kly4~*Mn>KBF{?%7sJ(H7@ zCgL(|Ts#5oI`y-I&6(Zk+}`7UBWW@NhoV}J966HQ-rnx;`Ft5~zWL^?IdkSbi7xYY zU<7{O&bGF;{~bJdaL;3pJyzpzINCAZc9)lz_sQA$T~mR>;WtACW&q3ZDdxMXi|xk0 zv=+SxHJfWtSlO*A+H4GuB+Ov#U0q#iot>SIXP$YcXztv(<_RQL~YwIi)OAjVelofjl3JN?Si={Zr=0iD*1PU&ST#8oi#NRR#Vq3Y3=FXvz zE(n%qB&G|rLvYQeqJSFs)N{^ur$)dv=x|YgSRgBG$ i7Mx(jdXF`+(EkH6Mr>#Bs@^RC0000<|BMM6+kP&iD_2><{ucK{p^H3QnVZ6p1Eb`#g#I!43<@VUM6 z;=TI9y<%DkdpcS11dvBo2(X~29tI{c&aAF*NM9+MGMkvv-RKW09sB=P+ewCySv)!W z#I^FIa(7Rvq)O$f48OR$ySu}^7nhO&@EE`=X|J69+y8U^eZ0dvr#%m8GmBJ6$0*(; zC?B_?eG|cFwryLUynktNuMKy1cei;Xk(QPqkw`QWi3G|0 zy`T5{KHS~i4@b3aJ5Aa+>q|hwm+&RvAV|OgI7lCZgERp@4v>I^Ct*91Bq?sHk%3`o z-v%u|kX!%1Dk=X6cX!V?8*R81An6_|paOTv-QBGKcXxMpcXwyrz3<)k_H2H!czuf? zUMYbJmT*eIVMOEj)E&xTR!_7Q{z~h8)!E{<(e+IqhWA~3&}eahYlgacaC>&< z88WmWyn>z0s8F9qiFW?!6u>#1LGb1b4FusLfm5Lth?)XJgAz@zvx2q4&_EEz6gV2V zXkGwZ&SF7WV-5#9jZ(J~QIsq@2@Ba`Jl2j{?4#bGlF>QZmq!9F~ z73X3I<*eJ^W`&s`J85;;z}pE;L-PW^<^8Bs0g=>u{tO0^QxEg3We$ zo8m`DMx2W-L`e_&&=yk>6SAsev$=rQj`u@|jXN7ye;ZNqlLXkM7vh@v=J=2dNXlJg zI^43kiuJL%2m(o!NYKAIV+X)GVzc1^mmLQfLuu4jB&S-G{qj;%h_OvWxdc8f3IqW} z#7LW$9b+fXZB%~ec*cGkUpKvL+;Dbk_1J>!aJ}i@W#C{I$PP8dq}YiYBkIN1kn9&k z%AA-rX!p>D<@b)$f7=QYK3cOj$nXSEM1P`ET|o9M&LYQtLvfWgb-SkaT{+D5#y~o~ zqH1zRE43s%ASVF8w)>o>?&HMB%|(VE2G-`c#hEA4yNL-IAmM6by#OlbD@H{E+CJ^L z$|z|~`++lBBHj;CHt1<)i9_EyacgStm1505CewY>B2UEQS(we*Y9ZJc6mS9NZczTf z5NOr7>AV;RX6p`S=gI;QqjwS%XyW#4m-EDsXvGBJ#r{U68ewt}7A_u(oTzn-@slCa zvI#2}1y3YgerAL6dxlIm8MPwGhROn!$)fU=8*dpx%`7~@hzU94>{gZwo1P0H5@g`k z5ktx5-!5iAc{&RE!zMqTBK;3i*t+wSVjS*9(myH+qX{$V(rBbj^)3UXG5j5W^_J2V5F!|Fy7w8uH6ZM zX<7Msth_;5qh*JE>6DIZKZCJz3(tUruc-7bYkNNu;ecYA5}!e z$$*VxNYQwLqi4*Ia23Yl@eT+nv>FQ(jhr|cuy)KCAkovvBJ4;-XlMb9M9M+&fM!SU zCP*k9GjzcqI@N;gRZe=vSZ$k$Vv}^I!-X=&3|=sp>_L7u{PG%ll=L zyG5Z)e%fjOkktF;TX8LVl`+-w)}m8o#1R5^8cDYR&(tCg4PSRiYZZZhjM;@Nmn5wJ z)a)p&BgXMDASjc(6~t3ifYbUL!D6GliyvPKDp(F=gIq)jGK(sHu<0+h1aM;2;LFt;wzhPk;MaAC>4P84+lkLHh__-3P>OLIAOV7wlKZEe{c}@z-b90z7Ztd@XU(*?JhiRR5KI08%kXKk-na#N9QEGh zqKUJ*Gq$h6*bx-tHWc7u@7~}a=pKlIk62LIh3N>yWiO>}$tl6@T5G@Ma_3VVVH%Q~ z0(~q$@v_yU7FYJKT=JWZ0F-Hh=O2QwxPR7xJZ?K%fNK>JDx$#~k6J~&*C4i1lOr^& z30R5c>3yLP$N~*o#d<5FQjP2Pwydh76=s65!c6cInG2U`UgB=iarrT||Cc-v zvGISwQHzpae0Dmb8&%Tk6=s6-3Nyh~A+qB1P>sxm+sIrvO_M1cuqnxJK%Fntbx>-? z#g~I;a=Soz4TuI#HPQwmbK!o@3Nyh#)_$vgVj3j=FY-tfX!iUcI5%l~-tlpb(+|&d zAE=axVUDFb2TZdYr!He;E}W~c{cXkRp=nNvZv5@q4 - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/firebase_auth.png b/app/src/main/res/drawable-xhdpi/firebase_auth.png deleted file mode 100644 index 8a93e39a6a101f2ea3982d5e9087a96c60cf6c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9079 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 z 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 NQC3Z+Udkfue*jRjiq8N5 diff --git a/app/src/main/res/drawable-xxhdpi/firebase_auth.webp b/app/src/main/res/drawable-xxhdpi/firebase_auth.webp new file mode 100644 index 0000000000000000000000000000000000000000..600f00a5d18f8ec9bc3e3453e17a93c47e3f3552 GIT binary patch literal 6344 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 diff --git a/app/src/main/res/drawable-xxxhdpi/firebase_auth.webp b/app/src/main/res/drawable-xxxhdpi/firebase_auth.webp new file mode 100644 index 0000000000000000000000000000000000000000..0336659595d026b07b6cdd2420bd00c63e6c7f18 GIT binary patch literal 8074 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 Y;{0Z{b+ED&v1aK0SRX_NdN!< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 1e4408cae4..0000000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml deleted file mode 100644 index f8c6127d32..0000000000 --- a/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b0b680c7f1..3d815a6311 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,10 +1,19 @@ - + FirebaseUI Demo CHANGE-HERE - - APP-ID - fbAPP-ID - CHANGE-HERE - \ No newline at end of file + + %1$s — score: %2$d + + + APP-ID + fbAPP-ID + CHANGE-HERE + diff --git a/auth/build.gradle.kts b/auth/build.gradle.kts index a7afe7801f..d3758ee36b 100644 --- a/auth/build.gradle.kts +++ b/auth/build.gradle.kts @@ -37,14 +37,6 @@ android { } lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - // Module specific disable += mutableSetOf( "UnusedQuantity", @@ -64,10 +56,6 @@ android { "LogConditional" ) - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - // Pre-existing debt only: 168 localization findings (CPRN-432) and 12 Compose // correctness findings (CPRN-436). Every entry is suppressed; new ones still fail. baseline = file("lint-baseline.xml") diff --git a/build.gradle.kts b/build.gradle.kts index e5e280ced7..c5ff470598 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,9 @@ @file:Suppress("UnstableApiUsage") +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.LibraryExtension +import com.android.build.api.dsl.Lint + plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false @@ -31,18 +35,44 @@ allprojects { } } -// Android Lint is configured per module, so there is no repo-wide entry point by default. -// This task is that entry point, and the module list is the gate's definition: -// - :app and :e2eTest declare no lint { } block yet, so they are deliberately absent (CPRN-433). +// The shared Android Lint policy, alongside the checkstyle one above. Modules add only their +// own disables; the strictness flags live here so a module cannot quietly opt out of the gate +// the way :library did with abortOnError = false. +fun Lint.applyCommonPolicy() { + disable += setOf( + "IconExpectedSize", + "InvalidPackage", // Firestore uses GRPC which makes lint mad + "NewerVersionAvailable", "GradleDependency", // For reproducible builds + "SelectableText", "SyntheticAccessor" // We almost never care about this + ) + + checkAllWarnings = true + warningsAsErrors = true + abortOnError = true +} + +subprojects { + plugins.withId("com.android.application") { + extensions.configure { lint { applyCommonPolicy() } } + } + plugins.withId("com.android.library") { + extensions.configure { lint { applyCommonPolicy() } } + } +} + +// Android Lint has no repo-wide entry point by default. This task is that entry point, and +// the module list is the gate's definition: // - :proguard-tests disables its debug variant on CI, so it is gated on release instead. tasks.register("lintAll") { group = "verification" - description = "Runs Android Lint for every module that configures a lint { } block." + description = "Runs Android Lint for every module gated on it." dependsOn( + ":app:lintDebug", ":auth:lintDebug", ":common:lintDebug", ":database:lintDebug", + ":e2eTest:lintDebug", ":firestore:lintDebug", ":library:lintDebug", ":storage:lintDebug", diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 7b8e3c497b..5fcb8e613f 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -23,20 +23,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } buildTypes { named("release").configure { diff --git a/database/build.gradle.kts b/database/build.gradle.kts index 7e308b9e57..763627927f 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -25,20 +25,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } buildTypes { named("release").configure { diff --git a/e2eTest/build.gradle.kts b/e2eTest/build.gradle.kts index e54f6003d1..b7b294807c 100644 --- a/e2eTest/build.gradle.kts +++ b/e2eTest/build.gradle.kts @@ -14,6 +14,7 @@ android { minSdk = Config.SdkVersions.min } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 diff --git a/firestore/build.gradle.kts b/firestore/build.gradle.kts index 83ad1617df..e2a6feb39d 100644 --- a/firestore/build.gradle.kts +++ b/firestore/build.gradle.kts @@ -24,20 +24,6 @@ android { } } - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } buildTypes { named("release").configure { diff --git a/internal/lintchecks/build.gradle.kts b/internal/lintchecks/build.gradle.kts index fc24e7762f..aec59f0529 100644 --- a/internal/lintchecks/build.gradle.kts +++ b/internal/lintchecks/build.gradle.kts @@ -23,21 +23,6 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } } dependencies { diff --git a/library/build.gradle.kts b/library/build.gradle.kts index 8cad8e6b05..d709bba4a6 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -23,20 +23,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } } dependencies { diff --git a/okf-bundle/ci-workflows/android.md b/okf-bundle/ci-workflows/android.md index 92631d23ea..092f220cf2 100644 --- a/okf-bundle/ci-workflows/android.md +++ b/okf-bundle/ci-workflows/android.md @@ -46,7 +46,7 @@ Step 4 is **Java-only** (`include("**/*.java")`), so it inspects zero files in t Separate workflow, `pull_request` only, running `./gradlew --max-workers=2 lintAll`. -`lintAll` is registered in the root `build.gradle.kts` and gates the 8 modules that configure a `lint { }` block; `:app` and `:e2eTest` are not yet among them (CPRN-433). +`lintAll` is registered in the root `build.gradle.kts` and gates all 10 Android modules. The strictness flags and the common `disable` set live in a shared policy in that same file, applied to every module that applies the application or library plugin; a module's own `lint { }` block carries only its module-specific disables. It is a separate workflow rather than a step in `build.sh` for two reasons. Lint measured **~4-5 minutes** on this repo — the `build` job went from 3-6 min to 8-11 min when it was inline — so running it in parallel roughly halves PR feedback time at about the same total runner cost, since the extra compile the lint job pays is the one `build.sh` stops paying (`lintAnalyze` depends on `compileDebugKotlin`, and there is no remote build cache: Develocity here is configured for build scans only). And under `set -e` an inline lint failure aborted the run **before** `testDebugUnitTest`, so one new finding cost you every test result for that run. diff --git a/okf-bundle/testing/agent-command-policy.md b/okf-bundle/testing/agent-command-policy.md index 5e052d9246..1f7fc5ce18 100644 --- a/okf-bundle/testing/agent-command-policy.md +++ b/okf-bundle/testing/agent-command-policy.md @@ -31,7 +31,7 @@ Single source for **which shell commands agents may run** in this repo. E2e is a | Unit tests (one module with a real `src/test` suite) | `./gradlew ::testDebugUnitTest` (e.g. `:auth:testDebugUnitTest`, `:firestore:…`, `:storage:…`) | `:common:testDebugUnitTest` / `:database:testDebugUnitTest` as “green” evidence (empty suites — [empty unit-suite trap](#empty-unit-suite-trap)); full suite when only one module changed *as a substitute for* the CI path at handoff | | Assemble one module (when no JVM unit suite) | `./gradlew ::assembleDebug` (e.g. `:database`, `:common`) | Treating empty `testDebugUnitTest` as validation | | Checkstyle (**Java only**) | `./gradlew checkstyle` | Invented ktlint/detekt entrypoints; treating a green checkstyle as style coverage for Kotlin sources ([Kotlin blind spot](#checkstyle-kotlin-blind-spot)) | -| Android Lint (all gated modules) — **not** in `build.sh`, own workflow | `./gradlew lintAll` | Bare `./gradlew lint` / `lintDebug` (pulls `:app` and `:e2eTest`, which declare no `lint { }` block yet); assuming a green `build.sh` covered lint | +| Android Lint (all gated modules) — **not** in `build.sh`, own workflow | `./gradlew lintAll` | Bare `./gradlew lint` / `lintDebug` (pulls variants `lintAll` does not gate, e.g. `:proguard-tests` debug); assuming a green `build.sh` covered lint | | Android Lint (one module) | `./gradlew ::lintDebug` (`:proguard-tests` uses `lintRelease`) | Editing Kotlin in a gated module without re-running lint | | Accept new lint debt (**needs a human decision**) | `./gradlew :auth:updateLintBaseline` | Running this to make a red build green — see [lint baseline trap](#lint-baseline-trap) | | Assemble debug | `./gradlew assembleDebug` | Module-scoped assemble as the only CI substitute at handoff | diff --git a/okf-bundle/testing/validation-checklist.md b/okf-bundle/testing/validation-checklist.md index f8764672e1..0233df3c1f 100644 --- a/okf-bundle/testing/validation-checklist.md +++ b/okf-bundle/testing/validation-checklist.md @@ -62,9 +62,9 @@ Instrumented `androidTest` (database/firestore) is **not** in CI or the agent al ./gradlew lintAll # Android Lint — reads Kotlin and resources ``` -`checkstyle` is scoped `include("**/*.java")` from the root `build.gradle.kts`, so on a Kotlin-only diff it inspects **zero files and exits 0**. A green checkstyle is not evidence for a change in `:auth`, `:app` or `:e2eTest` — [Kotlin blind spot](agent-command-policy.md#checkstyle-kotlin-blind-spot). +`checkstyle` is scoped `include("**/*.java")` from the root `build.gradle.kts`, so on a Kotlin-only diff it inspects **zero files and exits 0**. A green checkstyle is not evidence for a change in `:auth`, `:app` or `:e2eTest`; `lintAll` is what covers those — [Kotlin blind spot](agent-command-policy.md#checkstyle-kotlin-blind-spot). -`lintAll` runs Android Lint for the 8 modules that configure a `lint { }` block, each at `checkAllWarnings = true`, `warningsAsErrors = true` and `abortOnError = true` — so any new finding fails the build. It runs in its own workflow ([lint.yml](../ci-workflows/android.md#lint-workflow)), **not** in `build.sh`, so you must run it separately — a green `build.sh` says nothing about lint. `:app` and `:e2eTest` are not yet gated (CPRN-433). Config: each module's `lint { }` block; `library/quality/checkstyle.xml` for checkstyle. +`lintAll` runs Android Lint for all 10 Android modules at `checkAllWarnings = true`, `warningsAsErrors = true` and `abortOnError = true` — so any new finding fails the build. It runs in its own workflow ([lint.yml](../ci-workflows/android.md#lint-workflow)), **not** in `build.sh`, so you must run it separately — a green `build.sh` says nothing about lint. Config: the shared policy in the root `build.gradle.kts` sets those flags and the common `disable` set, and a module's own `lint { }` block adds only its module-specific disables; `library/quality/checkstyle.xml` for checkstyle. `auth/lint-baseline.xml` suppresses 180 pre-existing findings. **Never** run `updateLintBaseline` to clear a failure your change caused — [baseline trap](agent-command-policy.md#lint-baseline-trap). diff --git a/proguard-tests/build.gradle.kts b/proguard-tests/build.gradle.kts index 0a419b7402..d76d08a70c 100644 --- a/proguard-tests/build.gradle.kts +++ b/proguard-tests/build.gradle.kts @@ -46,20 +46,11 @@ android { } lint { - // Common lint options across all modules + // Module specific disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor", // We almost never care about this "MediaCapabilities", "MissingApplicationIcon" ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - } androidComponents { diff --git a/storage/build.gradle.kts b/storage/build.gradle.kts index 0e6f8af175..f36f569a25 100644 --- a/storage/build.gradle.kts +++ b/storage/build.gradle.kts @@ -23,21 +23,6 @@ android { targetCompatibility = JavaVersion.VERSION_1_8 } - lint { - // Common lint options across all modules - disable += mutableSetOf( - "IconExpectedSize", - "InvalidPackage", // Firestore uses GRPC which makes lint mad - "NewerVersionAvailable", "GradleDependency", // For reproducible builds - "SelectableText", "SyntheticAccessor" // We almost never care about this - ) - - checkAllWarnings = true - warningsAsErrors = true - abortOnError = true - - } - buildTypes { named("release").configure { isMinifyEnabled = false