App removed from Google Play: Android Advertising ID

I’ve received a Google Play Support email telling me that one of my apps has been removed from Google Play.

scared bruce lee GIF

This happened because my app is using the Android Advertising ID.

The Android Advertising ID is a user-specific, unique, resettable ID for advertising, provided by Google Play services. It gives users better control and provides developers with a simple, standard system to continue to monetize your apps. It is an anonymous identifier for advertising purposes and enables users to reset their identifier or opt out of interest-based ads within Google Play apps.

Irresponsible me didn’t pay attention at the Google terms which state that all apps that use the Android Advertising ID, must provide a valid privacy policy in both the designated field in the Play Console, and from within the app.

If you just received this message for one of your apps, DON’T PANIC, I solved this problem very easily for my apps and here’s how I did it.

1. Get a valid Privacy Policy

Of course you can contact your legal expert to create a valid Privacy Policy specifically for your app but you may also use a generic generated Privacy Policy if it suits your needs.

I used this simple web app, Privacy Policy Generator. It allows you to set a few settings accordingly to the information of your app and the features and services it uses and it generates a Privacy Policy right away which you can download in text, HTML or markdown.

2. Made your Privacy Policy accessible

Now you have to make sure that your new Privacy Policy is accessible to everyone, there are a few options to do this:

  • Your own website. If you already have a website I’ll recommend this option, just create a new page where you can host the HTML file or the text and you’re all set.
  • GitHub Pages. Use the simple platform offered by GitHub to host your Privacy Policy.
  • Any blog platform. Use any blog platform you prefer, there are some that are free where you can host your Privacy Policy and make it accessible.

Regardless of the method you prefer, once you have the public URL of your Privacy Policy you are ready to continue.

3. Set the URL in your Google Play Console

Go to your Google Play Console, select your unpublished application and go to Store presence > Store listing in the sidebar. Scroll to the bottom and there you should find the designated field to specify the Privacy Policy of your app. Set the public URL of your newly created Privacy Policy.


4. Integrate your Privacy Policy within your app

Now you need to make your Privacy Policy accessible from within your app, there are a few options to do this:

  • Integrate your Privacy Policy information into your app and make it accessible through a designated view integrated into your app’s navigation.
  • Load your accessible Privacy Policy within your app.
  • Add a link which opens your Privacy Policy in the device browser.

5. Publish your new .apk

Finally, package and ship your new apk and after a few days, your app should be published again.

best gif thumbs up GIF

Posted in Dev

Android Remove .idea Folder from Git

There are many examples of .gitignore files for Android Studio projects, some of them have .idea files in them and others don’t. Let’s figure this out.

What’s the .idea folder?

When using IntelliJ IDE (or another IntelliJ based IDE like Android Studio), the .idea directory contains a set of configuration data. Project settings are stored with each specific project as a set of xml files.

It contains many files and configuration values, it includes assets information, caches, code styles, dictionaries, project type information, workspace settings among many other data.

For more information take a look at this article: Deep dive into .idea folder in Android Studio.

Should the .idea folder be kept under version control?

This is the debate area, this official article states that all files under the .idea directory in the project root except the workspace.xml, usage.statistics.xml and tasks.xml files which store user specific settings should be under version control.

This may be helpful if you are working in a team that needs to be synchronized in terms of IDE configuration or want to share project configuration contained in these files, however, I personally do not like to make my repos IDE-dependent so I prefer not to include the .idea folder in my repos and ignore it from my initial commit, instead I use maven or gradle files to make configuration and dependencies available to everyone.

How to remove the .idea folder from your repo?

So if you have already committed your .idea folder to your repo you can remove it pretty easily.

  1. Add the .idea folder to your .gitignore file in your master branch (You can do this by adding .idea to a new line in your .gitignore file) and commit the change.
    git commit -m "Add .idea folder to .gitignore"
  2. In your current branch, check this file out from master to get the updated file. Skip this step if you’re working in your master branch.
    git checkout master -- .gitignore
  3. Remove the .idea folder from the git tree.
    git rm --cached -r .idea
  4. Commit this change.
    git commit -m "Remove .idea folder from repo"

Your project is now free from the IDE chains.

mel gibson freedom GIF

Posted in Dev

Top Code Challenges Websites

Code challenges are great, whether you know nothing about code and want to get started or you are a developer with many years of experience, code challenges are a fun and easy way to keep your skills sharp, get into new technologies and learn from a huge community.

Personally, I think there are many reasons why developers should take code challenges and quizzes on a constant basis, among them:

  • They help you to continuously improve your code skills.
  • Learn new languages and skills.
  • Learn from other developers multiple solutions to a problem.
  • Enable creativity.
  • Great companies love code challenges. Be prepared for your dream job interview.
  • They’re fun!

So, with that said, here are my personal top code challenges websites:


Coderbyte gives you access to a great collection of challenges that you can solve directly in your browser with more than 10 programming languages. Another great feature is that you can compare thousands of user solutions with your own, it is crazy how many approaches there are to a single challenge.

Coderbyte also has something called tracks, which are a collection of tutorials, and challenges designed to prepare you for technical interviews of different companies, which I think is fantastic.


Codewars brings you thousands of challenges in many languages for you to solve as well. The cool thing about Codewars is its dojo thematic where developers become warriors training their skills and get ranked among its community.

A challenge is named Kata and they are the main activity of the site, the Kata can also be created by members of the community and complemented with more languages. You get Ranks that indicate progression and difficulty as you start completing Kata and also you have Honor, which represents the level of respect earned from the community by staying active and contributing.


Same as the two above, these platforms bring you thousands of challenges, but it adds a fun turn, it turns challenges into games, it brings some cool graphics and missions that make the challenges a lot more fun and also you are able to compete in multiplayer challenges with developers all around the world.

Many achievements can be earned and definitely all this game-like functionality makes the challenges and the competition great to learn about many programming concepts and mathematics puzzles. You are also able to contribute with your own puzzles to the platform.

Of course, there are many more code challenges platforms, so, share your favorites with me and start solving challenges.

Posted in Dev

Android Splash Screen with Kotlin

There are different opinions on whether having a splash screen on your Android application or not.

Personally, I think splash screens are a good place where you can showcase your app’s nice design and give your users a good first impression.

So, this is how I’ve been implementing splash screens on my recent Android apps with Kotlin.

Static vs Animated

I’ve used both static and animated splash screens and here are some thoughts.


  • Showed only in the launching of your app before onCreate() is called.
  • You’re not wasting your users time.
  • Not intended to run operations while the splash screen is shown.


  • You can show a cool animation and custom design.
  • Flexibility to perform some operations while the animation finishes.
  • Users can get bored if the animation is useless or if it takes too long.

Static Android Splash Screen



Create the drawable file that we will use as background in the entry activity, by using a background, the app will show it without having to inflate a layout file.


Create a theme in the styles file with no action bar that uses the splash drawable as the background to set it in the entry activity.


Set the new style as a theme for the splash activity in your app manifest.


Add the code to navigate to the next activity as soon as the app has finished loading.

Animated Android Splash Screen


When I use animated splash screens I like to keep showing the static part of the splash screen on the initialization so I repeat steps 1, 2 and 3 from above and just add the animation functionality.


For the animated splash screen, we will inflate a layout with the element or elements we want to animate. In this case, I’m just animating a textview.


Now we need to modify the splash activity to enable the animation and perform some loading operations in the meantime. Here’s how my splash activity looks like.

That’s it, please share your thoughts on Android splash screens and your comments on how to improve this implementation.

Posted in Dev

Why Should Every Developer Create a Mobile App

I love to develop mobile apps as a hobby, the first app I published was a very simple RSS client I built in college, It was for Windows Phone 7 and I uploaded it to the Windows Phone Marketplace.

confused girl GIF

I know… My first app ever was destined to die 💀, and not only the first one, because the moment I saw in my dev dashboard that someone besides my mom had downloaded my app I went crazy and eventually I create another 4 apps for Windows Phone before I even get started with Android.

I don’t regret it at all to have put my time and effort into creating these apps. I learned huge when building them and also it took me to the very answer of why I think every developer should create a mobile app:

User Reviews

In one of this apps I got my first user review:


Yes, that is my first review ever, and as much as first it made me sad because donna didn’t understand the purpose of my movie suggestions app, I’ve come to realize user reviews are the reason I create mobile apps and here are a few reasons why I find them so valuable.


User reviews give you a lot of useful information about your app and your users. It is the first indicator that your app is making an impact, either positive or negative in your user’s lives, they’re taking the time to write a review and express their experience while using your app. It feels much better when it’s a good one.


With user reviews, you’re able to come close to your users and interact with them. You can offer support, ask follow-up questions or simply say thanks. With this interaction, you build a sense of community around your app.


User reviews are about developing better software for your users, paying attention to your user’s needs can impact your app bottom line and enables you to create a better product.

Receiving user reviews feels great, it’s amazing to know that there are people all around the world using your app and that it is making an impact on their lives. Take the improvement opportunity from the bad reviews and the joy and satisfaction of the good ones.