How to hack the Home Screen Tips Widget? - Android Software/Hacking General [Developers Only]

How do we hack the Home Screen Tips Widget?
There seems to be one included with a few roms. I'd like to be able to change it so that I can use it to learn Japanese words. Is it just a question of editing an xml file or something? Does anyone know where it is stored? If it is baked in a rom, is it therefore impossible to edit?
Thanks.

Decompile the apk, and inside the /res/values/ directory look at the arrays.xml file
CM source -> HERE

Thanks a lot!
I'll get to it.

I'm unable to get it to work at the moment. I've been following this video tutorial too. Are there any obvious things I could be doing wrong please?
I can decompile the apk and rebuild it after changing it. The apk will run but fail to install. Or if I install it in a zip file and via Recovery it seems to install but doesn't show up in System/Apps. (I'll try pushing it with adb)
How do we disable verification? (10:40)
(I'm using CM7 7.02)
Thanks for any help.

Grant Barker said:
I'm unable to get it to work at the moment. I've been following this video tutorial too. Are there any obvious things I could be doing wrong please?
I can decompile the apk and rebuild it after changing it. The apk will run but fail to install. Or if I install it in a zip file and via Recovery it seems to install but doesn't show up in System/Apps. (I'll try pushing it with adb)
How do we disable verification? (10:40)
(I'm using CM7 7.02)
Thanks for any help.
Click to expand...
Click to collapse
You cannot replace a "system" app with an apk which is not signed as a "system app". I had the same issue when I started fixing the DCIM incompatibility in the stock Camera app.
My question for you is: do you have the arrays.xml file already compiled to suit your needs? What phone do you have (HDPI, MDPI, LDPI)? I can make you a custom widget and send it to you.

That's very kind of you hrk.
The phone is an HTC Desire HD.
I should keep trying to learn to do it myself to be honest because I'll be changing it every couple of weeks hopefully, once I learn certain words etc.
Maybe you could talk me through the steps you take or maybe you use different methods or a different program compared to the video?
Anyway thanks for your kind offer.

Grant Barker said:
the steps you take or maybe you use different methods or a different program compared to the video?
Anyway thanks for your kind offer.
Click to expand...
Click to collapse
I set up a build environment (read "I can cook ROMs"). This way I can modify the original Protips project, and then build the apk with the AOSP signing key. If you are running a Stock ROM or a customROM which has not changed the signing keys (e.g.: CyanogenMod uses the same key AOSP uses), the Protips.apk will work flawlessly.
Setting up a build environment requires a bit of time and around 5 GB of hard disk, but it's something everybody can do. The beauty and winning point of Android Open Source Project.

That's great. Thanks hrk.
I'll follow your advice and set up a build environment..

hrk said:
....
Setting up a build environment requires a bit of time and around 5 GB of hard disk, but it's something everybody can do. The beauty and winning point of Android Open Source Project.
Click to expand...
Click to collapse
It's good fun. I just finished the example project Hello World.
I'm pleased I listened to you.

Grant Barker said:
It's good fun. I just finished the example project Hello World.
I'm pleased I listened to you.
Click to expand...
Click to collapse
That's good to hear, but when I wrote "build environment" I meant the entire platform.
With the Android SDK you can build apps, but you won't be able to properly sign them: you can have your own signature and publish them in the Market, but you can't "re-sign" system apps.
Good work!

Ah. I see what you mean.
Maybe that will be the next step in the near future.
In the meantime I'm inspired to make a similar app/widget from scratch which will do what I need..
Thanks.

Grant Barker said:
Ah. I see what you mean.
Maybe that will be the next step in the near future.
In the meantime I'm inspired to make a similar app/widget from scratch which will do what I need..
Click to expand...
Click to collapse
I've had the same idea for a while now! That widget is pretty nice and could be transformed in something pretty cool

Hi did you manage to edit the homescreen tips widget,
I'm finding all over the internet and can't find a solution

_Sparks said:
Hi did you manage to edit the homescreen tips widget,
I'm finding all over the internet and can't find a solution
Click to expand...
Click to collapse
I have the same problem... im trying to hack it (changed te arrays.xml) but it still needs that damn system signing could anyone help?
Is there any other way than installing 5gb of stuff just to sign one .apk

jazux said:
I have the same problem... im trying to hack it (changed te arrays.xml) but it still needs that damn system signing could anyone help?
Is there any other way than installing 5gb of stuff just to sign one .apk
Click to expand...
Click to collapse
dude could we use apk signer or any other stuff?

_Sparks said:
dude could we use apk signer or any other stuff?
Click to expand...
Click to collapse
I think no because we need the system signing key

Any signer should work. But depending on how you edit and build the apk, you might not be able to "install" it, but have to push it instead
Sent from my HERO200 using XDA App

kyouko said:
Any signer should work. But depending on how you edit and build the apk, you might not be able to "install" it, but have to push it instead
Sent from my HERO200 using XDA App
Click to expand...
Click to collapse
I decompiled it, replaced arrays.xml compiled it TRIED to sign but i got error "unable to sign system application" or something like that

Hmm, I'll check it out and see..once the power is back on in my area
ComEd said it could be up to two days because of the storms lol
Sent from my HERO200 using XDA App

jazux said:
I decompiled it, replaced arrays.xml compiled it TRIED to sign but i got error "unable to sign system application" or something like that
Click to expand...
Click to collapse
Read my previous posts on this very topic.
You can't sign a system app without using the system key. It can't be easier than that.

Related

Skinning this android!

Un so um jesusfreke if I understand all this and I'm not shure I fully do, but if I take out thr framework-res.apk un pack it edit it pack it all back up and sign it with thr sighnapk.jar utility and throw it back on my phone which has been moded with your boot recovery and update it will work....well at least in theory????? What's the worst that could happen at a failed attemtp do ya think?
worst that could happen?
brick phone. and I dont mean zack morris.
But assuming you know what everything you just typed actually does, should be fine.
VR4Stryph said:
Un so um jesusfreke if I understand all this and I'm not shure I fully do, but if I take out thr framework-res.apk un pack it edit it pack it all back up and sign it with thr sighnapk.jar utility and throw it back on my phone which has been moded with your boot recovery and update it will work....well at least in theory????? What's the worst that could happen at a failed attemtp do ya think?
Click to expand...
Click to collapse
I think you also have to re-sign all the .apk files in the /system/app folder. I just tried this last night and it all worked. I modified the default background in framework-res.apk. So now my phone is using the default background image with ugly black lines that I painted on it in gimp (see screenshot)
The only caveat is that you may have to reset the phone once you re-sign all the apks (alt+w in recovery mode). You will lose all your installed applications and data, and you'll have to re-enter your google account and password when you boot back up.
Try it without reseting, and if your phone acts weird, then try a reset and it should smooth things back out. After that point, you should be able to modify framework-res.apk without having to reset again.
The worst* that will happen is that you can't boot the phone normally. If that happens, put the modified RC30 update back onto your sd card somehow (external reader, another phone that uses miniSD cards, etc), and then boot into recovery mode and re-apply the modified RC30 update.
*I make no guarantees you won't brick your phone of course . But I can't think of anyway you would by doing this.
This isn't exactly skinning but it might help you start:
I modified the Launcher.apk so I could have my own wallpaper in the wallpaper gallery and take out the ugly stuff. Im sure you could change other resources in this and possibly other apk's as well.
I downloaded the android source from here http://source.android.com/download then slightly changed the source for Launcher.apk and recompiled it (make Launcher). My modified Launcher.apk worked fine on the emulator so I remounted my G1's /system partition as rw and replaced /system/app/Launcher.apk with my version and removed Launcher.odex then rebooted (dont forget to save the originals if you try this). So far its been working great in JesusFreke's modified RC30.
A screenshot of the modified wallpaper gallery is here: http://x8x.us/android/device.png
The signed modified Launcher.apk is here: http://x8x.us/android/Launcher_modified_wallpaper.apk
A tarball of the modified source is here: http://x8x.us/android/Launcher_modified_wallpaper.tar.gz
You can browse the modified source directory here: http://x8x.us/android/Launcher_modified_wallpaper/
The only changes I made were to src/com/android/launcher/WallpaperChooser.java and the res/drawable/wallpaper_*.jpg files.
Hopefully this will help you make similar changes on your own, at least until Google comes up with an easier method for changing skins and such. And maybe a wallpaper gallery thats not static!
Being able to do things like this are what I was hoping for when I bought the G1, sucks that they won't allow people to choose to enable root.
I just saw a detailed post from Living_Sword over at modmygphone on how to make the re-signing thing work. Thought y'all might be interested
http://www.modmygphone.com/forums/showthread.php?p=16871#post16871
JesusFreke said:
I just saw a detailed post from Living_Sword over at modmygphone on how to make the re-signing thing work. Thought y'all might be interested
http://www.modmygphone.com/forums/showthread.php?p=16871#post16871
Click to expand...
Click to collapse
Looks alot like the method you described above... umm... there any way to backup text messages yet.. iv'e got a few hundred that i'd like to keep :*(
VR4Stryph said:
Looks alot like the method you described above... umm... there any way to backup text messages yet.. iv'e got a few hundred that i'd like to keep :*(
Click to expand...
Click to collapse
It is. He took my idea and ran with it.
Re: backing up text messages.. not sure. Let me play with it a bit and get back to you
JesusFreke said:
It is. He took my idea and ran with it.
Click to expand...
Click to collapse
lol I never ran away with your idea. I acknowledge it as yours and thanked you for the idea in the original post here.
I know we are all trying to get the best out of our G1 and stealing ideas isn't the right way to go about it. Hope I cleared all misunderstandings
I didn't mean that in a bad way I saw your article and was like "oh cool! He got it to work."
just to clarify...
the default wallpapers you see in the Wallpaper Gallery activity are embedded in Launcher.apk?
i always thought it read some directory of images.
i guess that explains why the process for converting images from the Pictures activity requires crop/resizing and the gallery activity doesn't.
JesusFreke said:
I just saw a detailed post from Living_Sword over at modmygphone on how to make the re-signing thing work. Thought y'all might be interested
http://www.modmygphone.com/forums/showthread.php?p=16871#post16871
Click to expand...
Click to collapse
If i am just modifying a pic (.png) in the apk, does the apk still have to be resigned?
yes, it does need to be resigned.
Modifying Wallpaper Gallery
ive been trying to find a way to add my own wallpapers to the gallery and it seems its no easy task, isnt there a way to redirect the path to make it look in a directory? im a linux noob (especially on devices like this) so if im asking a dumb question i dont know that i am
also.. if the only route is to modify the launcher package, is it possible to add as many as you want? or is there a limit to how many you can put in/replace?
best bet is to modify the apk (i think it's launcher but it may be framework-res) but as far as i know you can only replace the wallpapers there unless you wanna try some hex edits
Apotheo said:
I downloaded the android source from here http://source.android.com/download then slightly changed the source for Launcher.apk and recompiled it (make Launcher).
Click to expand...
Click to collapse
im trying to create my own Launcher.apk so i can include my own wallpapers into the Wallpaper Gallery. Everytime i type "make Launcher" (im in the /packages/apps/ dir) it just says:
make: Nothing to be done for `Launcher'.
so i figured i would try going into the Launcher dir, then trying it... then i get this:
make: *** No rule to make target `Launcher'. Stop.
how do you compile these things? ive also tried opening it in eclipse with the android plugin but when i try to compile it tells me to fix like 300 something errors first.

[DUMP] LG Eve

http://www.4shared.com/get/149810989/bdab5d84/lg_eve_dump.html
Credit goes to @pixeladdikt
Gonna go through and see if there is anything interesting, thanks Maxisma and pixeladdikt
edit: I thought when you downloaded something the estimated download time went down, not up
hope they have some specail apps inside
I've checked on ROGERS' pages and on LG's own one, apparently it runs LG's S-Class interface on top of standard Android, so there probably is some interesting stuff there.
Just saw some promo videos of it, very social oriented. Hopefully we can port it to Magic/G1.
There's some interesting things, about to install a video editor
Is this a 2.0 or 1.6 based OS?
Is this a 2.0 or 1.6 based OS?
Thanks
DownloaderZ said:
Is this a 2.0 or 1.6 based OS?
Thanks
Click to expand...
Click to collapse
I think it's 1.5
JAguirre1231 said:
There's some interesting things, about to install a video editor
Click to expand...
Click to collapse
only two two the acrsoft files worked. however, they couldnt find any files to edit or add
also most of the files are odexed, booo. i tried XIM, which is LG's input method it installs but crashes constantly.
ubernicholi said:
only two two the acrsoft files worked. however, they couldnt find any files to edit or add
Click to expand...
Click to collapse
Well you got farther than me, the video editor force closed and the workshop didn't have an app. Telenav is also in there it's the tn55 one. I'm afraid to use it though because I don't know of T-mobile will catch it and start charging for it
do you have the init.rc for this dump?
mssmison said:
do you have the init.rc for this dump?
Click to expand...
Click to collapse
Had no root access, so no init.rc sorry.
Got it booting no problem, however it doesn't take touchscreen input. I'm working through it, I'll update if I figure it out.
can i push the video player or ARC apps in adb or console?
Ace42 said:
can i push the video player or ARC apps in adb or console?
Click to expand...
Click to collapse
It won't work, I already tried they force close or are incompatible
ubernicholi said:
only two two the acrsoft files worked. however, they couldnt find any files to edit or add
also most of the files are odexed, booo. i tried XIM, which is LG's input method it installs but crashes constantly.
Click to expand...
Click to collapse
when i 7-zip'd the dump it has a folder 3rd Party... this then has framework etc of the ArcSoft apps placed on the phone...
idk what to do with them... but would this be neccessary or even able to be added into a ROM to have these apks work?
I've gotten the keyboard working by pushing libxt_jni.so and libautohan_jni.so to system/lib and than installing the XIM.apk though adb.
doubleokneegro said:
when i 7-zip'd the dump it has a folder 3rd Party... this then has framework etc of the ArcSoft apps placed on the phone...
idk what to do with them... but would this be neccessary or even able to be added into a ROM to have these apks work?
Click to expand...
Click to collapse
as well the build.prop needs and update I believe to get the divxregistration apk installed.
confirmed the keyboard works with above method. good work, not quite as good as htc-ime-imo.
lol
to get the arcsoft working a build.prop change is required. than you'll be able to install the apps.

Custom Themed ADW.Launcher

Ok, here's my situation: I made a custom themed, modified version of ADW.Launcher 1.0.1, as I have with previous versions. They will not install via a file browser & package manager on the phone or using adb. The only way I've gotten them to install is by flashing it to /system/app/, but that makes future updates impossible unless I restore my phone to an earlier state.
My question: How can I simply make this install or how can I theme an application already installed to /data/app/? I suppose signing it myself could work, but I'd have to learn how to do that.
Thanks!
you need to resign the apk. You may need to delete META-INF
http://ip208-100-42-21.static.xda-developers.com/showthread.php?t=473580
This has me very frustrated. I use Linux, not Windows. The link you gave me doesn't help. I cannot figure out how to do this, and it's ticking me off. I shouldn't have to spend hours trying to do this.
I used the following link and successfully created a signed apk, but it still won't install.
http://forum.xda-developers.com/showthread.php?t=538020
xvenom89 said:
This has me very frustrated. I use Linux, not Windows. The link you gave me doesn't help. I cannot figure out how to do this, and it's ticking me off. I shouldn't have to spend hours trying to do this.
I used the following link and successfully created a signed apk, but it still won't install.
http://forum.xda-developers.com/showthread.php?t=538020
Click to expand...
Click to collapse
I don't see why you're getting ticked off... I'm only trying to help you and you didn't even specify what os you were using.
Did you delete meta-inf before resigning? You'll also need to unistall adw before reinstalling.
If all else fails, upload the apk and I'll resign it for you
xvenom89 said:
This has me very frustrated. I use Linux, not Windows. The link you gave me doesn't help. I cannot figure out how to do this, and it's ticking me off. I shouldn't have to spend hours trying to do this.
I used the following link and successfully created a signed apk, but it still won't install.
http://forum.xda-developers.com/showthread.php?t=538020
Click to expand...
Click to collapse
Dude relax he just spent time trying to help you where no one else even bothered
Sent from my Incredible
No guys, you've got it all wrong; I'm not ticked at any of you, but at my own failure. I'm not sure why it won't work. Yes, I deleted the META-INF folder before signing it and got an output file containing a new META-INF, but the errors persisted. Having someone else do it for me would be nice, but it won't help much since I'll have to do it after every update. Thanks a lot for your offer, though.
I'll just keep trying..

updated S-Voice apk

For those who dont know, there is a new updated S-voice out that is currently working on most devices. I'm sure it'll be patched soon as well, and the need to change the build.prop will arise again. In the meantime, this one DOES work
http://www.mediafire.com/?fp04n29phdzeram
Move to system/app, install, enjoy.
When was it updated? I got the download from the original thread yesterday afternoon.
How is it different to skyvi?
EggRoll53 said:
When was it updated? I got the download from the original thread yesterday afternoon.
Click to expand...
Click to collapse
This was updated earlier today. Many users were having trouble with the previous build after Samsung blocked access to the application from other devices.
cricketAC said:
How is it different to skyvi?
Click to expand...
Click to collapse
I'm sorry, I can't speak on behalf of that since I've never used it. Perhaps someone else in the thread can help you on that. My apologies.
aaCotyaa said:
I'm sorry, I can't speak on behalf of that since I've never used it. Perhaps someone else in the thread can help you on that. My apologies.
Click to expand...
Click to collapse
I pushed it into systems/app. Rebooted. It doesnt show in my apps.
?
cricketAC said:
I pushed it into systems/app. Rebooted. It doesnt show in my apps.
?
Click to expand...
Click to collapse
Did you push THEN install?
I should also note that this app is only compatible with ICS 4.0+ roms.
aaCotyaa said:
I should also note that this app is only compatible with ICS 4.0+ roms.
Click to expand...
Click to collapse
Figures. Mine isn't.
Sent from my LG-P999
I'm getting Force Close every time I tell it to do something that app oriented, I'm assuming it's looking for Samsung applications? I fixed permissions with in root explorer , is there something else I'm missing. Still think its kinda pointless lol. NVM some things work some dont, I sent myself a text but cannot set an alarm lol. this helped things though.
Originally Posted by sanderbouw
To get it working properly you need to open the apk with winzip or winrar and you'll see an lib folder with an .so file in it.
Copy this file into your /system/lib and reboot.
It made the S Voice working on my old Xperia X8.
I have permissions set to -rwxrwxr-x
I have permissions set to -rwxrwxr-x
I haven't a clue then lol, tried that as well, with no luck.
I copied that .so file from the .apk into the lib folder and it works now. It appears the only time that the app FC itself is when it tries to launch another app. I'm guessing probably because it is trying to look for the Samsung app.
Example - When I ask "Locate the nearest Mexican restaurant" or "What is the weather like today?"
U should link the the original thread so people can give credit where it is due and thank whoever ported it
Sent from my LG-P999 using xda premium
I just installed it, didnt change anything, and its working great!
aaCotyaa said:
Did you push THEN install?
Click to expand...
Click to collapse
hi, may sounds silly, but i'm new in the android game.
where do I find the "systems/app" folder that you mentioned? I'm on a Mac and using the USB Mass Storage, but I don't see the systems folder.
any help will be appreciated.
You're going to need to use ADB with cmd line to push it as far as I know or have root enabled file explorer like ROM Toolbox and you will see system when you're in it, this app never worked when I pushed it to system for me just installed it like a normal app and rebooted phone
Sent from my LG-P999
Yeah I had to just install it regularly on the first release I got, but on this one I had to move to system. I used Solid Explorer.
I need a help iam stuck with network problem
hi i need a help from u.iam using xperia x8.im using custom rom mini cm9 3.0.3.i tried installing s voice but it didn't work.so i followed your method. i first moved that svoicesigned.apk to the system/apps and then installed.i extracted the svoicesigned.apk and copied a .so file fom lib and then moved it to the system/lib.and then i changed the ro.product.device=Gt-I9300 and ro.product.model=GT-I9300 using root explorer.but till now the problem is not solved.so i set permission to svoicesigned.apk to rwxrwxr-x.and set permission to libsvoxtts.so to rwxrwxr-x.and rebooted,but the problem is not solved.please help me to come out of this problem

Mixzing app won't open

I updated my phone to4.4.1 today and ever since I haven't been able to open my music player 'Mixzing'. When I click on the App icon it goes to a black screen momentarily then back to the home screen without starting the app (this is the only app that it happens on)
I have wiped dalvik ect and deleted any folders that have 'mixzing' on and tried re-installing but nothing has helped.
Any ideas?
anyone?
Same here
I couldn't post my question on the corresponding Dev Thread for CM11 on i9300, but found this post for Nexus 5. Unfortunately without an answer.
I have the same problem (MixZing app doesn't open) on i9300 with CM11 nightly (Android 4.4.2). On CM10.2 (Android 4.3.1) it worked fine.
Have you found an answer somewhere else?
storchp said:
I couldn't post my question on the corresponding Dev Thread for CM11 on i9300, but found this post for Nexus 5. Unfortunately without an answer.
I have the same problem (MixZing app doesn't open) on i9300 with CM11 nightly (Android 4.4.2). On CM10.2 (Android 4.3.1) it worked fine.
Have you found an answer somewhere else?
Click to expand...
Click to collapse
Same here, no solution yet.
I made a modded version of the mixzing app to get it to launch for me:
All I did was replace the following in com.mixzing.android.SdCardHandler.getCardId()
Code:
invoke-static {v10}, Landroid/os/FileUtils;->getFatVolumeId(Ljava/lang/String;)I
move-result v4
with
Code:
const/16 v4, 0xBEEF
You should use your own random number instead of BEEF since this effectively means that you are always returning the same value for getFatVolumeId as far as the app is concerned.
Can you explain this to the developer of MixZing? So they can update the original App.
Would be nice, thanks.
storchp said:
Can you explain this to the developer of MixZing? So they can update the original App.
Would be nice, thanks.
Click to expand...
Click to collapse
They have said that they know about it. They were just taking too long for my taste, so I did it myself instead.
If you can't wait I can post my modded version if you want, but I highly recommend doing the mod yourself rather than simply trusting that my posted version does not contain any malware. It's just a good habit to get into IMO.
Never modded an App. But I'm eager to learn. Any resource (document, blogpost, etc.) I should look into?
storchp said:
Never modded an App. But I'm eager to learn. Any resource (document, blogpost, etc.) I should look into?
Click to expand...
Click to collapse
You can technically use a combination of 7zip (or another zip utility), smali, baksmali, and signapk to do this mod, however this is not the most user friendly way to do it. I would suggest using one of the following:
Here is one way, apktool (Linux, Mac OS, Windows): http://forum.xda-developers.com/showthread.php?t=2195680
The other is Virtuous Ten Studio (Windows Only): http://forum.xda-developers.com/showthread.php?t=1619473
*EDIT*
It is important to note that since this is not a system apk -- I.E. one that comes with the phone -- you will have to re-sign the apk after adding, removing, or changing any of the files inside. If it were a system apk, you could place the classes.dex file directly into the apk (which is secretly a zip file) without re-signing. (VTS does this for you automatically).
Thanks, I'll check it out.
Ok, decompiled it and found the lines you mentioned in a file called SdCardHandler.smali.
Before I change it I want to understand a little bit what I'm doing.
The method getFatVolumeId() returns the Id of a given Mount Point. It's a native method call which I guess causes the trouble here.
If I change it to a static value, does it do any harm? I mean I have an internal and external SD card. Does MixZing check both?
You should use your own random number instead of BEEF
Click to expand...
Click to collapse
Just some hex value I can think of? e.g. AEEF, CEEF, ABCD, ...
Couldn't wait, wanted to try anyway
Did the changes, compiled a new apk, signed it, but it doesn't install :crying:
When installing via the phone itself it just tells me that the App hasn't been installed.
When installing via ADB it get an INSTALL_FAILED_SHARED_USER_INCOMPATIBLE error. Need to figure out, how to fix this.
storchp said:
Couldn't wait, wanted to try anyway
Did the changes, compiled a new apk, signed it, but it doesn't install :crying:
When installing via the phone itself it just tells me that the App hasn't been installed.
When installing via ADB it get an INSTALL_FAILED_SHARED_USER_INCOMPATIBLE error. Need to figure out, how to fix this.
Click to expand...
Click to collapse
The problem is that on our devices, that native method does not exist, so we just arbitrarily use a value such that it always returns the same value (I.E. always the same card) As for the error, uninstall any applications signed by the same certificate as Mixzing was or sign your modded copy with debug keys, and it should install just fine.
*edit*
Other fun values:
DEAD, F00D, B00B, BABE, C0DE.
Thanks. A little research brought me to the packages.xml file. In there I found the shared user attribute for the MixZing Upgrader App. I was not sure if I want to edit the file. But after your tip I just uninstalled the Upgrader App and I could install the modded version.
Thanks a lot
Meanwhile they have fixed the App in the store.

Categories

Resources