From b7f87e05786d0c4ade1340470d6d0e2b28ca0b3b Mon Sep 17 00:00:00 2001 From: Linus Wong Date: Mon, 8 Aug 2022 19:33:30 +0800 Subject: [PATCH] autogenerate Contents.json for ios appiconsets Also stop generating icons for unsupported iOS versions. --- example/flavor_app/README.md | 17 +- .../ios/Runner/Assets.xcassets/Contents.json | 6 + .../devAppIcon.appiconset/Contents.json | 162 +++++++++--------- .../Icon-App-50x50@1x.png | Bin 879 -> 0 bytes .../Icon-App-50x50@2x.png | Bin 1754 -> 0 bytes .../Icon-App-57x57@1x.png | Bin 907 -> 0 bytes .../Icon-App-57x57@2x.png | Bin 1833 -> 0 bytes .../Icon-App-72x72@1x.png | Bin 1302 -> 0 bytes .../Icon-App-72x72@2x.png | Bin 2568 -> 0 bytes .../prodAppIcon.appiconset/Contents.json | 162 +++++++++--------- .../Icon-App-50x50@1x.png | Bin 879 -> 0 bytes .../Icon-App-50x50@2x.png | Bin 1754 -> 0 bytes .../Icon-App-57x57@1x.png | Bin 907 -> 0 bytes .../Icon-App-57x57@2x.png | Bin 1833 -> 0 bytes .../Icon-App-72x72@1x.png | Bin 1302 -> 0 bytes .../Icon-App-72x72@2x.png | Bin 2568 -> 0 bytes example/simple_app/README.md | 16 +- .../AppIcon.appiconset/Contents.json | 162 +++++++++--------- .../ios/Runner/Assets.xcassets/Contents.json | 6 + lib/cli_commands.dart | 2 + lib/src/ios.dart | 82 ++++++--- lib/utils/template.dart | 35 +++- 22 files changed, 359 insertions(+), 291 deletions(-) create mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/Contents.json delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@2x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-57x57@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-57x57@2x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-72x72@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-72x72@2x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-50x50@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-50x50@2x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-57x57@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-57x57@2x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-72x72@1x.png delete mode 100644 example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 example/simple_app/ios/Runner/Assets.xcassets/Contents.json diff --git a/example/flavor_app/README.md b/example/flavor_app/README.md index 7f4ad5d..557d258 100644 --- a/example/flavor_app/README.md +++ b/example/flavor_app/README.md @@ -1,16 +1,13 @@ # flavor_app -A new Flutter project. +Demo of `icons_launcher` using flavors. ## Getting Started -This project is a starting point for a Flutter application. +First: `flutter pub get` -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +Then generate `dev` and `prod` flavors with the commands: +``` +flutter pub run icons_launcher:create --flavor dev +flutter pub run icons_launcher:create --flavor prod +``` diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/Contents.json b/example/flavor_app/ios/Runner/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/example/flavor_app/ios/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Contents.json b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Contents.json index d36b1fa..52b3a79 100644 --- a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Contents.json +++ b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Contents.json @@ -1,122 +1,122 @@ { - "images" : [ + "images": [ { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "size": "20x20", + "idiom": "iphone", + "filename": "Icon-App-20x20@2x.png", + "scale": "2x" }, { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" + "size": "20x20", + "idiom": "iphone", + "filename": "Icon-App-20x20@3x.png", + "scale": "3x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "size": "29x29", + "idiom": "iphone", + "filename": "Icon-App-29x29@1x.png", + "scale": "1x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "size": "29x29", + "idiom": "iphone", + "filename": "Icon-App-29x29@2x.png", + "scale": "2x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" + "size": "29x29", + "idiom": "iphone", + "filename": "Icon-App-29x29@3x.png", + "scale": "3x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "size": "40x40", + "idiom": "iphone", + "filename": "Icon-App-40x40@2x.png", + "scale": "2x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" + "size": "40x40", + "idiom": "iphone", + "filename": "Icon-App-40x40@3x.png", + "scale": "3x" }, { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" + "size": "60x60", + "idiom": "iphone", + "filename": "Icon-App-60x60@2x.png", + "scale": "2x" }, { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" + "size": "60x60", + "idiom": "iphone", + "filename": "Icon-App-60x60@3x.png", + "scale": "3x" }, { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" + "size": "20x20", + "idiom": "ipad", + "filename": "Icon-App-20x20@1x.png", + "scale": "1x" }, { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "size": "20x20", + "idiom": "ipad", + "filename": "Icon-App-20x20@2x.png", + "scale": "2x" }, { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "size": "29x29", + "idiom": "ipad", + "filename": "Icon-App-29x29@1x.png", + "scale": "1x" }, { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "size": "29x29", + "idiom": "ipad", + "filename": "Icon-App-29x29@2x.png", + "scale": "2x" }, { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" + "size": "40x40", + "idiom": "ipad", + "filename": "Icon-App-40x40@1x.png", + "scale": "1x" }, { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "size": "40x40", + "idiom": "ipad", + "filename": "Icon-App-40x40@2x.png", + "scale": "2x" }, { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" + "size": "76x76", + "idiom": "ipad", + "filename": "Icon-App-76x76@1x.png", + "scale": "1x" }, { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" + "size": "76x76", + "idiom": "ipad", + "filename": "Icon-App-76x76@2x.png", + "scale": "2x" }, { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "Icon-App-83.5x83.5@2x.png", + "scale": "2x" }, { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "Icon-App-1024x1024@1x.png", + "scale": "1x" } ], - "info" : { - "version" : 1, - "author" : "xcode" + "info": { + "version": 1, + "author": "icons_launcher" } -} +} \ No newline at end of file diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@1x.png b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@1x.png deleted file mode 100644 index 9a1609d7b302b1a8b1f2843e3a30d486bf9e863c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)){90%~HFI&NYBj|t)@nRIBCK@ij#fV}j85CiI&f3Z&hK@6+e$v+0SkrOv z3j1)hUM~JRG+9$3)1449E2ezFbiZDzCV4ArtVxmWN%*sNrbxX^WTM8Jl9`UB85H5@VIYAIcci6_)pw+k)M( zu<_`%f>2>kX%%(Gh3_(J9Z18Z-3!ZmiZ+q4n#%CqkPL$;YRiQM&3k;MCtH)B(Kp-bbs3666rN~BOIfH+R?2~5q7 zOb%I)yy?Q2FqvH)IR&Fc8Z}gD9ow9noU_b)71f{%mg)+j1T4sb0DjUaUm5p{u*@pT(%^^Obe!SY z(Rix$VeIwImf&V5ol)4G9tz;+P4eXtcJBS4G&7_6ICEVaolc*5^zrTO;|@BbvzLd? zp4QEt&!!YVhgNPfT^3KD?u!lFBJPaZC!Zrbs$X6|+SWh3D5>PG(RUE-c|GJ#<6q#!waHfn#|2Kbav{&&_H`jZJ@jaEXcu~!QrlxGbwS+woAp@ zlB^bg9s1uvY~NY|FP9hDFyGiviN_*|$0CWxB8kT$$zM3Jf;qYXF&+Q_002ovPDHLk FV1g{1qqG13 diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@2x.png b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-50x50@2x.png deleted file mode 100644 index f5994b8159c153beb2b211120662c4c80befa323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1754 zcmbtV>01&895(YlNfB-3L7IkuN6Y0gB^gddMU$*NvJ4ILK+T(lI-2FJscA8fJQKwO zSxwEO2*b<+nn`(~ZB9fKkI?0jbAQ90=RLl>U*6~WJ-;{83*)S+^o^2~l$5Hg3(EVz zga4y~^nvcDNgtMylB;q>IbKLQv^?b>0rb(4UuE!oAH#c;U~&q^Kh8S3=K#0>9FXMo zL&J}*044G*ZpLi3B{H*LSrM#pq&S;}sxYvWd76nj(&XcEJFNsoaEOK&ydxz3ZuguK zyL+SFu6(-u(KOClyKqBY-GXuRNnZ;8cl=0%f=Q995%vnR+k6(2#X6DkKQN%1Rwon) zuDP%couk*3(O-|A6RdUZ3TBu4G`RG0!kS(|<8)dHZ@2|WGA<-;jH|sI zQ?#y-vez?Szku2tk7D$q~hEGb6VMP?oR+*%}$alIPWrtl`m`DkcTTXpSD_uryj{g)qiF?t-JzXe+Pc*xOi)%_}u1 zR?sV~3k>5_L~*1K8S^eV=>&DoY<(GpaBBg_XtyBx#v2_O-Wi8V)>u{1{ClSGdQ=JW zH@c`tCj4e#e<3;mg3@|B@y5=l9~0;VX=Z-vJ+lhG1MIjNMEx5}3)}o2iY|ATor@eJ zq8mypVEeYA?c}rU_Y`5GWuuxFZ0Sv?6J%jJCm(p5dR*68L`7#Oprtvnlk> z-o)d7*sslrE_)>^k&D@X<;t)7Je?bBn6W(HTxXbmDhT5Ec_c~F10CdltX>ch5N%)y z@+38^E2^Hl-U@*qD}>))bU z?$9m7_H}s_ZwjHT?okbLBYRnN(?BLP*KFWE5 zILqS6cx7&=UiODyA-J0Al+OcgmBAxaIXzE5YecXtH6EXvxgwFaj)6u_Y4IqMkYR|~ z!O4N*_{6IasFyEqI62j`nM>-f1vtYDKE!`y?1%*E!;g+#(#-beu{|CQ%uaMORh3`w znrt;j_6&XjZ%OP!^QHtwavJ=^-e2{?REGR4!cRAa!&FDVi^zFA{l{1czF4_G(8;~v zCF;}jkpNrO7g3`98e>pJBBFBp)AzIf)uH0Jc;BjCn(lVBmZR;1-Dg<0`W$bS#{qig z(~_kMEp>!d(H-smQM{Eir*~1f{w+GHk*2SCm}*$=cijSTrd9>@O8IBr=1FzB*!k<_ z0TFxj3Du2Q96ORC5_^(jQEqjr5Zxdg_T`i;OGg+!UqSfC4rdN-Gw|@b`mIXqTypBt z#cj^qu9sZNW#TD?)Vt6oKvHQyk9f-x{V)WPMNU`R3++Y(>K?aEvM$AL&=u5F`T9X@ z`Dq$gPV)X4Bb*-|`!HGYm-M0JzSO(h>-i>_U*dpye)4Z0iGnwh-i)+(PU_g+li2Q zZP9medHJqHdpQMoMEPBSwp~ZU3b`2}3HaumgQv<`^qM0HKEsvF588Ml&T-wmU@ozd zB2E_@L_nmhGl$n1phAWRBbl^@?-O0NZHnInqDzg;K(&h7G0Riqk!(zv`Fgu@qmkED zXs=)-Y@6v^|E@!?if&*mE#GvzM^7;vjAytvyqFOQJlEa{W`HJN$;6(-J* nx?7nCpZO%l2;}&G@b&PC1n|%_?t0+CW=Xj^VNfl|Yvg|c8_G{! diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-57x57@1x.png b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-57x57@1x.png deleted file mode 100644 index a8c6e99664718f6dbd98763a9cd0f3e74d0f9729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 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 M07*qoM6N<$f*&<*I{*Lx diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-72x72@2x.png b/example/flavor_app/ios/Runner/Assets.xcassets/devAppIcon.appiconset/Icon-App-72x72@2x.png deleted file mode 100644 index 1bad46bab62018401a7e86a10dd837d9c65bc85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 zcmcJR=RX^Y8pn;=QCg&_5j{$^(X=AernPERQ3QzkM{wyv_2v|%ZyKT6iG5-wi4Cs6iEm?0l( z>#7rTkK)uE!Z5*x4fMva=i+)Nzv=WE&vDOmgshK)cbOkKd5zUyHQ{hUt@~f5clbZK zoDs9Sd^*)#6;x@h>G#~XQ>8uGl6WfR#ChQVsL?YkV0ZQzW{3AIK|q%x@vF8@z$ro+ z_7#&!a*q8=DRk{T>2!U**d@)uTyGhzvH=*P-;baE$|d7gpmWpg4^THGp;lz{x9xt0{Md~Dm`&4vJhS6EN1|6QH(9_(Vh)()m%x>$TG-wVr^7m z%^-JsPTEwI)Z#)pC?f{d|6(w|Wrf|Poux$Jkli+FzS(w7iGv#|(GoWUT)tEKxq@NZ zTw!QZP7f5CA=QVxiFWFsO05X~$icur{iu-6q~NXGZ%m(7FXS z`&MZunqWD>1Wx&v2>kiFLa&g7ws+6Xg7f=wpgnunB~FMi;w3cpT*yi?ING6C-AK~N ztVX1)Kh%s;@JpCFk5^;zxXrr&^fM*Pm!(w^4xk)y9^=Co(=sm`>i*9&Ix9((wv+d< z2gv5D*yaG$FeceReyObZ{24q zV|>>GBVw#vWuxq3jf7_qqSp|dua$-^xS-u-vvjCo2LWyJ?St|PdcWRs=6ky7r;Buz z@z$3MO*-^P-RIm1Jed{gy+(+X zd5GC%wAO2DGyp{-cw&AwW6*c49U{o4JyL_T{wxbh(y><14r(mdTRQ|QLH{L@ zHHaSQI+u~9B>Otmyg});{9+J#zvX2*P+I7iI?OX9EVdLM9x`-U_}l6}a!L_ZQx%5TPQxGQ4Mh6EygO9kk$a4fb) zmV>Grn>UGiSRik()x-H2#U?4ZJw}xepuL&Wf{YLAngu@jle(V+vXtHTm#|YQZ(5}V z_r~Gj&C$~-fA=mC2m#R#9~|&fkj00!LR~JPyQ-)09AkWqedkNrK5HWSz#z5Vm3;GR z=4i^LJi#cKRX=kQtkqgT2Q#(tyJ>9jJAW%VK=mJX%md!WeB;NQNEguDMC0C9Yz~nh zqu1-#*(*vy*FoU}EU+28xFN4gt6$RL=PF>*(dDHK?H2sdH}gsH+5E=m*Ff$V_hl*X zutY8HaA-`-!EjKsbEWQQmo6=M`Lp^~5)7E8R%a6R!$B&%=@06B5;$(>7pbI1_0TnE zDeo(l4t@P62l8T>O+o1zQP!}YTjZfC&*{q}tyKH;JBQ#l@*)z~3aGui?H!B>^FE z)uwlEJ=${l@n%uh6(%nbTVyl;@VT@`tkctvTl&}Zk1~tY<2f%46TJow1(U`G(ai}* zV*nmF^JBT%MKH$=zcRm4V*Wtj<=;3%>W_7{N=|Q1*?GS*;$4 zht)hKkmrcRo-@>R)Lv+W0`{&8IPPw&hW?)37hlOtrq9xlhIj>7-f%JbeHUITT aJgK_gk){90%~HFI&NYBj|t)@nRIBCK@ij#fV}j85CiI&f3Z&hK@6+e$v+0SkrOv z3j1)hUM~JRG+9$3)1449E2ezFbiZDzCV4ArtVxmWN%*sNrbxX^WTM8Jl9`UB85H5@VIYAIcci6_)pw+k)M( zu<_`%f>2>kX%%(Gh3_(J9Z18Z-3!ZmiZ+q4n#%CqkPL$;YRiQM&3k;MCtH)B(Kp-bbs3666rN~BOIfH+R?2~5q7 zOb%I)yy?Q2FqvH)IR&Fc8Z}gD9ow9noU_b)71f{%mg)+j1T4sb0DjUaUm5p{u*@pT(%^^Obe!SY z(Rix$VeIwImf&V5ol)4G9tz;+P4eXtcJBS4G&7_6ICEVaolc*5^zrTO;|@BbvzLd? zp4QEt&!!YVhgNPfT^3KD?u!lFBJPaZC!Zrbs$X6|+SWh3D5>PG(RUE-c|GJ#<6q#!waHfn#|2Kbav{&&_H`jZJ@jaEXcu~!QrlxGbwS+woAp@ zlB^bg9s1uvY~NY|FP9hDFyGiviN_*|$0CWxB8kT$$zM3Jf;qYXF&+Q_002ovPDHLk FV1g{1qqG13 diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-50x50@2x.png b/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-50x50@2x.png deleted file mode 100644 index f5994b8159c153beb2b211120662c4c80befa323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1754 zcmbtV>01&895(YlNfB-3L7IkuN6Y0gB^gddMU$*NvJ4ILK+T(lI-2FJscA8fJQKwO zSxwEO2*b<+nn`(~ZB9fKkI?0jbAQ90=RLl>U*6~WJ-;{83*)S+^o^2~l$5Hg3(EVz zga4y~^nvcDNgtMylB;q>IbKLQv^?b>0rb(4UuE!oAH#c;U~&q^Kh8S3=K#0>9FXMo zL&J}*044G*ZpLi3B{H*LSrM#pq&S;}sxYvWd76nj(&XcEJFNsoaEOK&ydxz3ZuguK zyL+SFu6(-u(KOClyKqBY-GXuRNnZ;8cl=0%f=Q995%vnR+k6(2#X6DkKQN%1Rwon) zuDP%couk*3(O-|A6RdUZ3TBu4G`RG0!kS(|<8)dHZ@2|WGA<-;jH|sI zQ?#y-vez?Szku2tk7D$q~hEGb6VMP?oR+*%}$alIPWrtl`m`DkcTTXpSD_uryj{g)qiF?t-JzXe+Pc*xOi)%_}u1 zR?sV~3k>5_L~*1K8S^eV=>&DoY<(GpaBBg_XtyBx#v2_O-Wi8V)>u{1{ClSGdQ=JW zH@c`tCj4e#e<3;mg3@|B@y5=l9~0;VX=Z-vJ+lhG1MIjNMEx5}3)}o2iY|ATor@eJ zq8mypVEeYA?c}rU_Y`5GWuuxFZ0Sv?6J%jJCm(p5dR*68L`7#Oprtvnlk> z-o)d7*sslrE_)>^k&D@X<;t)7Je?bBn6W(HTxXbmDhT5Ec_c~F10CdltX>ch5N%)y z@+38^E2^Hl-U@*qD}>))bU z?$9m7_H}s_ZwjHT?okbLBYRnN(?BLP*KFWE5 zILqS6cx7&=UiODyA-J0Al+OcgmBAxaIXzE5YecXtH6EXvxgwFaj)6u_Y4IqMkYR|~ z!O4N*_{6IasFyEqI62j`nM>-f1vtYDKE!`y?1%*E!;g+#(#-beu{|CQ%uaMORh3`w znrt;j_6&XjZ%OP!^QHtwavJ=^-e2{?REGR4!cRAa!&FDVi^zFA{l{1czF4_G(8;~v zCF;}jkpNrO7g3`98e>pJBBFBp)AzIf)uH0Jc;BjCn(lVBmZR;1-Dg<0`W$bS#{qig z(~_kMEp>!d(H-smQM{Eir*~1f{w+GHk*2SCm}*$=cijSTrd9>@O8IBr=1FzB*!k<_ z0TFxj3Du2Q96ORC5_^(jQEqjr5Zxdg_T`i;OGg+!UqSfC4rdN-Gw|@b`mIXqTypBt z#cj^qu9sZNW#TD?)Vt6oKvHQyk9f-x{V)WPMNU`R3++Y(>K?aEvM$AL&=u5F`T9X@ z`Dq$gPV)X4Bb*-|`!HGYm-M0JzSO(h>-i>_U*dpye)4Z0iGnwh-i)+(PU_g+li2Q zZP9medHJqHdpQMoMEPBSwp~ZU3b`2}3HaumgQv<`^qM0HKEsvF588Ml&T-wmU@ozd zB2E_@L_nmhGl$n1phAWRBbl^@?-O0NZHnInqDzg;K(&h7G0Riqk!(zv`Fgu@qmkED zXs=)-Y@6v^|E@!?if&*mE#GvzM^7;vjAytvyqFOQJlEa{W`HJN$;6(-J* nx?7nCpZO%l2;}&G@b&PC1n|%_?t0+CW=Xj^VNfl|Yvg|c8_G{! diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-57x57@1x.png b/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-57x57@1x.png deleted file mode 100644 index a8c6e99664718f6dbd98763a9cd0f3e74d0f9729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 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 M07*qoM6N<$f*&<*I{*Lx diff --git a/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-72x72@2x.png b/example/flavor_app/ios/Runner/Assets.xcassets/prodAppIcon.appiconset/Icon-App-72x72@2x.png deleted file mode 100644 index 1bad46bab62018401a7e86a10dd837d9c65bc85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 zcmcJR=RX^Y8pn;=QCg&_5j{$^(X=AernPERQ3QzkM{wyv_2v|%ZyKT6iG5-wi4Cs6iEm?0l( z>#7rTkK)uE!Z5*x4fMva=i+)Nzv=WE&vDOmgshK)cbOkKd5zUyHQ{hUt@~f5clbZK zoDs9Sd^*)#6;x@h>G#~XQ>8uGl6WfR#ChQVsL?YkV0ZQzW{3AIK|q%x@vF8@z$ro+ z_7#&!a*q8=DRk{T>2!U**d@)uTyGhzvH=*P-;baE$|d7gpmWpg4^THGp;lz{x9xt0{Md~Dm`&4vJhS6EN1|6QH(9_(Vh)()m%x>$TG-wVr^7m z%^-JsPTEwI)Z#)pC?f{d|6(w|Wrf|Poux$Jkli+FzS(w7iGv#|(GoWUT)tEKxq@NZ zTw!QZP7f5CA=QVxiFWFsO05X~$icur{iu-6q~NXGZ%m(7FXS z`&MZunqWD>1Wx&v2>kiFLa&g7ws+6Xg7f=wpgnunB~FMi;w3cpT*yi?ING6C-AK~N ztVX1)Kh%s;@JpCFk5^;zxXrr&^fM*Pm!(w^4xk)y9^=Co(=sm`>i*9&Ix9((wv+d< z2gv5D*yaG$FeceReyObZ{24q zV|>>GBVw#vWuxq3jf7_qqSp|dua$-^xS-u-vvjCo2LWyJ?St|PdcWRs=6ky7r;Buz z@z$3MO*-^P-RIm1Jed{gy+(+X zd5GC%wAO2DGyp{-cw&AwW6*c49U{o4JyL_T{wxbh(y><14r(mdTRQ|QLH{L@ zHHaSQI+u~9B>Otmyg});{9+J#zvX2*P+I7iI?OX9EVdLM9x`-U_}l6}a!L_ZQx%5TPQxGQ4Mh6EygO9kk$a4fb) zmV>Grn>UGiSRik()x-H2#U?4ZJw}xepuL&Wf{YLAngu@jle(V+vXtHTm#|YQZ(5}V z_r~Gj&C$~-fA=mC2m#R#9~|&fkj00!LR~JPyQ-)09AkWqedkNrK5HWSz#z5Vm3;GR z=4i^LJi#cKRX=kQtkqgT2Q#(tyJ>9jJAW%VK=mJX%md!WeB;NQNEguDMC0C9Yz~nh zqu1-#*(*vy*FoU}EU+28xFN4gt6$RL=PF>*(dDHK?H2sdH}gsH+5E=m*Ff$V_hl*X zutY8HaA-`-!EjKsbEWQQmo6=M`Lp^~5)7E8R%a6R!$B&%=@06B5;$(>7pbI1_0TnE zDeo(l4t@P62l8T>O+o1zQP!}YTjZfC&*{q}tyKH;JBQ#l@*)z~3aGui?H!B>^FE z)uwlEJ=${l@n%uh6(%nbTVyl;@VT@`tkctvTl&}Zk1~tY<2f%46TJow1(U`G(ai}* zV*nmF^JBT%MKH$=zcRm4V*Wtj<=;3%>W_7{N=|Q1*?GS*;$4 zht)hKkmrcRo-@>R)Lv+W0`{&8IPPw&hW?)37hlOtrq9xlhIj>7-f%JbeHUITT aJgK_gk images; + + Map toJson() => { + 'images': images.map((image) => image.toJson()).toList(), + 'info': {'version': 1, 'author': 'icons_launcher'} + }; +} + +List _createIosTemplates( + {required double size, + String? sizeName, + required List scales, + required String idiom}) { + final templates = []; + sizeName ??= '${size.round()}x${size.round()}'; + for (int scale in scales) { + final scaledSize = (size * scale).round(); + templates.add(IosIconTemplate( + sizeName: sizeName, + scaledSize: scaledSize, + scale: scale, + idiom: idiom)); + } + return templates; +} + /// Start create ios icons void _createIosIcons({required String imagePath}) { CliLogger.info('Creating iOS icons...'); @@ -20,39 +51,44 @@ void _createIosIcons({required String imagePath}) { } final iosIcons = [ - IosIconTemplate(name: '-20x20@1x', size: 20), - IosIconTemplate(name: '-20x20@2x', size: 40), - IosIconTemplate(name: '-20x20@3x', size: 60), - IosIconTemplate(name: '-29x29@1x', size: 29), - IosIconTemplate(name: '-29x29@2x', size: 58), - IosIconTemplate(name: '-29x29@3x', size: 87), - IosIconTemplate(name: '-40x40@1x', size: 40), - IosIconTemplate(name: '-40x40@2x', size: 80), - IosIconTemplate(name: '-40x40@3x', size: 120), - IosIconTemplate(name: '-50x50@1x', size: 50), - IosIconTemplate(name: '-50x50@2x', size: 100), - IosIconTemplate(name: '-57x57@1x', size: 57), - IosIconTemplate(name: '-57x57@2x', size: 114), - IosIconTemplate(name: '-60x60@2x', size: 120), - IosIconTemplate(name: '-60x60@3x', size: 180), - IosIconTemplate(name: '-72x72@1x', size: 72), - IosIconTemplate(name: '-72x72@2x', size: 144), - IosIconTemplate(name: '-76x76@1x', size: 76), - IosIconTemplate(name: '-76x76@2x', size: 152), - IosIconTemplate(name: '-83.5x83.5@2x', size: 167), - IosIconTemplate(name: '-1024x1024@1x', size: 1024), + ..._createIosTemplates(size: 20, scales: [2, 3], idiom: 'iphone'), + ..._createIosTemplates(size: 29, scales: [1, 2, 3], idiom: 'iphone'), + ..._createIosTemplates(size: 40, scales: [2, 3], idiom: 'iphone'), + ..._createIosTemplates(size: 60, scales: [2, 3], idiom: 'iphone'), + ..._createIosTemplates(size: 20, scales: [1, 2], idiom: 'ipad'), + ..._createIosTemplates(size: 29, scales: [1, 2], idiom: 'ipad'), + ..._createIosTemplates(size: 40, scales: [1, 2], idiom: 'ipad'), + ..._createIosTemplates(size: 76, scales: [1, 2], idiom: 'ipad'), + ..._createIosTemplates( + size: 83.5, sizeName: '83.5x83.5', scales: [2], idiom: 'ipad'), + ..._createIosTemplates(size: 1024, scales: [1], idiom: 'ios-marketing'), + // The following sizes are only for iOS 6.1 or earlier, which flutter does + // not support re: + // https://developer.apple.com/library/archive/qa/qa1686/_index.html + //..._createIosTemplates(size: 57, scales: [1, 2], idiom: 'iphone'), + //..._createIosTemplates(size: 50, scales: [1, 2], idiom: 'ipad'), + //..._createIosTemplates(size: 72, scales: [1, 2], idiom: 'ipad'), ]; for (final template in iosIcons) { _saveImageIos(template, image); } + _saveContentsJson(IosContents(images: iosIcons)); + CliLogger.success('Generated app icon images', level: CliLoggerLevel.two); } /// Save ios image void _saveImageIos(IosIconTemplate template, Icon image) { final filePath = - '${_flavorHelper.iOSAssetsAppIconFolder}$IOS_DEFAULT_ICON_NAME${template.name}.png'; - image.saveResizedPng(template.size, filePath); + '${_flavorHelper.iOSAssetsAppIconFolder}${template.filename}'; + image.saveResizedPng(template.scaledSize, filePath); +} + +void _saveContentsJson(IosContents contents) { + final filePath = '${_flavorHelper.iOSAssetsAppIconFolder}Contents.json'; + final file = File(filePath); + const encoder = JsonEncoder.withIndent(' '); + file.writeAsStringSync(encoder.convert(contents), flush: true); } diff --git a/lib/utils/template.dart b/lib/utils/template.dart index 432a4af..642bf6c 100644 --- a/lib/utils/template.dart +++ b/lib/utils/template.dart @@ -1,3 +1,5 @@ +import 'package:icons_launcher/utils/constants.dart'; + /// Android template class AndroidMipMapIconTemplate { /// Constructor @@ -11,15 +13,38 @@ class AndroidMipMapIconTemplate { } /// iOS template +/// +/// See https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_ref-Asset_Catalog_Format/AppIconType.html class IosIconTemplate { /// Constructor - IosIconTemplate({required this.size, required this.name}); - - /// Icon name - final String name; + IosIconTemplate( + {required this.sizeName, + required this.scaledSize, + required this.scale, + required this.idiom}); /// Icon size - final int size; + final int scaledSize; + + /// Icon size name to use in file names. + final String sizeName; + + /// The device type for the image. + /// See https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_ref-Asset_Catalog_Format/ImageSetType.html#//apple_ref/doc/uid/TP40015170-CH25-SW2 + final String idiom; + + /// Scale + final int scale; + + /// Icon file name + String get filename => '$IOS_DEFAULT_ICON_NAME-$sizeName@${scale}x.png'; + + Map toJson() => { + 'size': sizeName, + 'idiom': idiom, + 'filename': filename, + 'scale': '${scale}x' + }; } /// Web template