☃️ Desktop Winter Offer -20%

Dev Tips

Dev Tips, Mobile Testing, Use Cases

How testing your app early helps protect your Play Store ranking

This post explores the strong links between app quality and app store ranking. To offer you the best insight, we’ve collaborated with our friends at Gummicube who are experts in App Store Optimization – When it comes to developing apps, the user experience is vital. It’s one of the core aspects of an app that can set it apart from the competition. With thousands of apps launched daily, developers want to make sure they stand out by giving users the best experience possible. Unfortunately, bugs present a challenge that cause the downfall of many apps. Google Play does not tolerate buggy apps, and if Google notices users frequently leaving negative reviews about an app’s performance, they will make sure to hide it from users. Fortunately with Genymotion, it is possible to prevent this from happening. Bugs Ruin User Experience When it comes to the user experience, bugs are always bad. They tend to ruin the user experience and can lead users to uninstall apps. Even worse, if too many app crashes, application-not-responding (ANRs) or uninstalls accrue, Google Play will take away that app’s keyword rankings to ensure users don’t download a buggy app. One less buggy app is great for users, but it means loss of discoverability for that particular app, as well as overall installs. Before launching an app or new update, it’s important to ensure that the build does not contain performance issues or major bugs. Otherwise a company’s App Store Optimization (ASO) strategy can be ruined. How Bugs Affect Keyword Rankings When poor performance, negative reviews and uninstalls rise, Google Play starts flagging the underperforming app, causing it to fall back in rankings. Click-through-rate and daily installs start suffering as visibility falls more and more. This then leads the app to become increasingly irrelevant which causes a further loss in rankings. Eventually, Google Play may deem the app as so irrelevant due to poor user experience, that the app can lose its ranking completely for a given keyword. Through App Store Optimization, developers can work to counteract this negative trend and improve their rankings by targeting additional keywords to expand their keyword reach. However, if an app is receiving too many uninstalls, ANRs or crashes, then its ASO efforts can be negated. It is important that developers ensure their apps are bug-free before they are launched or updated. This is where Genymotion is able to help developers. How Genymotion Helps Improve User Experience & ASO With Genymotion’s testing features, developers are able to properly test their app beforehand, helping prevent a bug from disrupting the user experience once live. Running large scale, automated tests, reducing the amount of testing cycles needed to polish an app. This helps with two major factors 1. It saves large amounts of time as developers are able to sniff out bugs much quicker and thus resolve them faster. 2. It allows developers to stress test their apps and understand how performance changes, as well as whether or not servers are able to handle a large influx of traffic. It’s important to thoroughly test an app, because once a build goes live, it is open season. When a bug appears, developers need to resolve it quickly before it leads to a bad user experience, and ultimately damages the efforts accomplished by ASO. With Genymotion, developers are able to weed out bugs before a build goes live, ensuring the user experience is kept safe. By using Genymotion, developers are able to focus on creating a great app, and not be tied down with constant bug fixes and repeated testing.

Android Development, Application Development, Dev Tips

4 Tips That Will Help You Create Your First Android App

There are many people out there with excellent app ideas. However they often encounter the same problem: they don’t know where to start! If you have found yourself in this situation, here is some good news: you’re not the only one. Even better, you’ve come to the right place! We’ve made this noob-friendly guide that can come in handy ? Tip 1: Learn the basics of coding The truth is hard to accept, but if you want to dive into Android app development you’ll have to learn the basics of coding . There is indeed a bunch of code-free mobile app development solutions around but you’ll quickly figure out that, sooner or later, you’ll have to get your hands dirty to make your app behave the way you want it to behave. Learn Java Java is a key pillar of Android and is used by the SDK (Software Development Kit) for every single application. You simply cannot miss that step (life ain’t easy) but there are many platforms that can help you get going! Codecademy or Sololearn are good places to start. Learn Android “Well… Obviously! Duh!” Hold on, we’re talking about Android core app concepts here: activities, services, providers, receivers, intents… Not so smart now huh? ? Take a look at “Application Fundamentals” from the official Android documentation to get started. Be a sponge The more you learn, the easier it becomes. Whether you’d like to know the basics of a new language or to dive into a very specific concept of Android, we recommend following this path: YouTube tutorials → books → conferences. Start with the Android Dev official channel, you won’t regret it. Tip 2: Thinking smart to make things smooth If you’re reading this guide, you probably already have an idea of what your Android app will be about. But don’t rush to creation too early! Be sure your idea is the right one and above all that it’s feasible considering you have few to no skills or experiences in Android app development. Start small A cool app doesn’t have to be complicated. Apps that get most of the downloads are not necessarily the most intricate. Also, going with a clean and simple user interface which requires very little input from your users will make things much easier when it comes to code. Start here or take a look Android’s official samples. Draw what you’d like to see Remember that thing called “pen”? Grab it! All along your Android app project you’ll quickly find that putting things on paper first will help, whether you go for wireframes or simple UI ideas. Draw every single step to remember it and to make sure each one makes sense overall. Tip 3: Success relies on good organization For more convenience, we recommend you tear down basic Android application development projects according to a pre-defined timeline. In this case, we’re talking about a 30-day project. But no matter how much time it is, it usually goes by these 5 steps: Ideation (Day 1 – 2) Remember “Tip 2” right above? This is where you put it to work ! Take as much time as necessary to find the perfect idea. We recommend 2 days. Don’t rush as it will define your whole project! Preparation (Day 3) This is where you choose your IDE (Integrated Development Environment), in other words the all-in-one software that will provide everything you need to develop your app. We recommend using Android Studio. This is where you’ll also gather what we call “media assets”. Simply put, they are all the files that will be found in your app: images, logos, audio files, video files… anything! The good news is you don’t necessary have to create these from scratch! There are already awesome ones existing at Android development resources. Creation (Day 4 – 21) We’re not going to lie. This step is the toughest, especially if you’re new to Android development. Here you have to build your app layout and most particularly write the code that will bring it to life. If you choose to implement specific design elements, make sure it is compliant with Google’s Material Design guidelines. Once you’re done, compile your source code into an APK file. Testing & adjustments (Day 22 – 28) Don’t consider your project over until you’ve personally tried and tested every single part of it! As a first step, install your APK file and run it on your own Android hardware device. Then include an Android emulator in your mobile testing strategy and perform advanced tests targeted on specific devices and Android versions. Publication (Day 29 – 30) After you are done, you can ship your app to Google’s Play Store! This step is optional but recommended: it allows you to deliver your app through a reliable source visited by a good amount of people. Head up to “Get Started with Publishing” from the official Android documentation for more info on this. Tip 4: Patience is the name of the game During your Android app development project, don’t be too harsh on yourself, whatever the problem is. Being an Android developer is a full-time job that requires a lot of hard and soft skills. By the way, patience and dedication are definitely part of them ? Don’t fear failure Failure is good. Failure is what will make you learn and evolve all along your project. Don’t reject it, embrace it and accept it to finally witness how much wiser you become when your app is done. Be patient Building an app is time-consuming. As explained above being an Android developer is a full-time job, so don’t expect it to happen overnight. If you’re looking for fast positive results then you might want to consider something else. Seek help There’s absolutely no shame in it! If nobody around is able to help, you might want to consider Stack Overflow. In any case there’s absolutely no problem in contacting us. We don’t bite! Be patient Again. Bottom line Android app

Android Development, Dev Tips, Genymotion, Gradle Plugin

The build.gradle ubiquity

How to manage your build configuration, from the developer platform to the CI Before starting this article, I want to thank Mark Vieira, Gradle core developer, and the publishing teams from Gradle and Genymobile for their review and assistance. TL;DR The syntax apply from: allows you to inject Gradle scripts from files. You can check the current defined environment variables to know the current build environment (developer platform or continuous integration server) and apply the corresponding files. All parameters you don’t want to write in clear can be defined outside your Gradle files using Gradle Properties (via gradle.properties files, environment variables or command line arguments) and used as variables into Gradle files. Some of these methods can be controlled directly from the continuous integration management interface.   Introduction Two years ago, at Genymobile, we were all very enthusiastic about one of Google I/O announcements: Gradle is going to be the future-new-official-but-still-young build system for Android. A few weeks later, when we measured its potential power, all Android app developers were waiting impatiently for a stable and fully usable duet “Android Studio & Gradle”. Our first observation after adopting Gradle was that we were living a real professionalization of the tools provided by Google. In short, Gradle was as powerful as the well-known Maven, with a very light boilerplate for the configuration and the customization of the build. It also had this very nice wrapper that really made the adoption enjoyable. Gradle led to a better industrialization of the Android development, with an official support by the Android SDK team. Now we all implement automated tests, don’t we? We take seriously into account static analysis tools, right? And we run all of them on our continuous integration server, sure! Thanks to the build.gradle files of our projects, we can now control all tasks we run automatically. But sometimes, some tasks must behave differently whether they are run on our development environment or on a continuous integration server (also named CI).   An example of the problem At Genymobile, we develop Genymotion, an Android emulator. We worked hard to make it the perfect emulator for Android developers and we recently released a Gradle plugin. This plugin allows us to declare, in the build.gradle script, the Genymotion devices to launch before running the tests. Let’s imagine that on our computer, we want to run tests on an emulated phone (Nexus 5) and an emulated tablet (Nexus 9). Then we add this block to the build.gradle file: genymotion {    devices {        Nexus5 {            template “Google Nexus 5 – 5.1.0 – API 22 – 1080×1920”        }        Nexus9 {            template “Google Nexus 9 – 5.1.0 – API 22 – 2048×1536”        }    } } On the CI server side, we want to test more devices. So we add a Galaxy S3, an S4, a Nexus 7 and a Nexus 10, with different Android versions: genymotion { devices {        Nexus5 {            template “Google Nexus 5 – 5.1.0 – API 22 – 1080×1920”        }        Nexus9 {            template “Google Nexus 9 – 5.1.0 – API 22 – 2048×1536”        }        S4 {            template “Samsung Galaxy S4 – 4.3 – API 18 – 1080×1920”        }        S3 {            template “Samsung Galaxy S3 – 4.2.2 – API 17 – 720×1280”        }        Nexus7 {            template “Google Nexus 7 – 4.1.1 – API 16 – 800×1280”        }        Nexus10 {            template “Google Nexus 10 – 4.4.4 – API 19 – 2560×1600”        }    } } Those additional configurations offer a better coverage for the instrumented tests and they will all be run automatically. Now, we have two pieces of script, supposed to be in the same file at the same time. Let’s see how we can handle this problem.   Apply From a File The best way to solve this is to put both scripts into separate files: genymotion-dev.gradle will be applied when the build will be running on the developer’s computer; genymotion-ci.gradle will run on the CI. They can be both be applied using the apply from: syntax, as shown below: build.gradle apply from: “$rootDir/genymotion-dev.gradle” But how can the build system decide what files to apply? For this, it needs to know whether the build is running on the CI or on a dev environment, and it is pretty simple. Each time your continuous integration server launches a job, it opens a worker and it injects some environment variables. These can be used by the running scripts to get information about the context of the build. They are also convenient to know whether the Gradle script is executed on a CI or not. You can get the list of these default values on each CI documentation. Here are examples for Jenkins and Teamcity. Some people would prefer to avoid the build system configuration to depend on the CI installed, allowing to switch easily from a server to another. To solve this, you can define an environment variable yourself for all your jobs instead of using the one from your server. On Jenkins, you can do this using EnvInject plugin. On TeamCity, you can use Build Parameters. We just need to test that this environment variable is set to determine whether the build is running on the CI and then apply the dedicated Gradle file: build.gradle def isCiServer = if(System.getenv().containsKey(“IS_CI_JOB”)) if(isCiServer) apply from: “$rootDir/genymotion-ci.gradle” else apply from: “$rootDir/genymotion-dev.gradle”   The path as a URL As a bonus, Gradle adds a nice feature to the  apply from  instruction: we can use a URL. Instead of storing the file in a specific place on the CI server or on the repository, we can put it behind a HTTP server like this: apply from: “http://ci.mycompagny/genymotion-ci.gradle”   Managing Local Parameters Now that the build setup is defined, we are almost done for the build system configuration. However, in most cases, you still need to configure settings related to the computer running the build. These settings can be related to a specific local path, credentials, or any other specificity of the

Dev Tips

The Art of “Clean Code”

In software development, source code is the core element. It contains all features of the software, its logic but also all its bugs. Developers work with code on a daily basis: they are led to modify it but above all, understand it.

Scroll to Top

Select Product Portal

SaaS Platform

Access to our SaaS solution and use virtual machines in the cloud on any web browsers.

Or

Or

Desktop Platform

Access to manage your Genymotion Desktop licenses, your invoices and account information.

Select a Cloud provider Marketplace

How to get a quote for multiple Business Licenses?

  1. You need a Genymotion Desktop account. If you haven’t one yet, you can create it here.
  2. After creation and activation, or if you already have an account, follow this link.
  3. Add the number of desired licenses to your shopping cart and click “Continue to Billing”
  4. Add a shipping address, or select one if you already created one.
  5.  In the next page, click “Get a quote”:
    Payment details
  6. A quote will be automatically generated in PDF format.

Genymotion Device Image for Cloud providers
- Private Offer -

Genymotion Device On-premise
- Contact Us -

Genymotion SaaS
- Increase Maximum Simultaneous devices -

Genymotion SaaS Enterprise Plan
- Get a Quote -

Genymotion SaaS Premium Plan
- Get a Quote -

Personal Use - Free

Genymotion Desktop for personal use is not suitable for trial or POC: you will not get any assistance and some features will be disabled. If you have already selected “personal use” and wish to get a trial license, please contact our Sales at [email protected].

Technical support is not available with Genymotion Desktop free edition for personal use. For more details, please refer to Genymotion conditions of use (Personal Use).

The following features are not available in personal use mode:

Follow these steps to get Genymotion Desktop and activate personal use mode:

  1. Go to the Download page and get the latest version for your system.
  2. Follow the instructions from Genymotion Desktop quickstart guide to install Genymotion Desktop.
  3. Launch Genymotion and click CREATE to create an account. You should receive an activation email within an hour. If not, make sure to check your spam.
  4. After activating your account, return to Genymotion and log in with your credentials.
  5. Select personal use when prompted.
  6. Read Genymotion Desktop quickstart guide carefully to setup Genymotion for your needs.

Indie Plan Application Form

This plan is strictly reserved to individual workers (freelancers, self-employed).

Contact Sales
- Premium Plan -

Educational Plan Application Form

The Educational plan is restricted to:

  • schools, teachers or students who wish to use Genymotion Desktop for tuition
  • students who wish to use Genymotion Desktop for a school project

It is subject to valid proof (student card, teacher card, etc.)