Is it possible to disable in-app billing/purchase and test my application on an Android Emulator? I want to do some functional testing of my application on multiple emulators.
Later on I would test the 'in-app billing' on a real device.
Anyone have experience?
How should I do this?
From Google:
http://developer.android.com/guide/market/billing/billing_testing.html
To test in-app billing in an application you must install the
application on an Android-powered device. You cannot use the Android
emulator to test in-app billing. The device you use for testing must
run a standard version of the Android 1.6 or later platform (API level
4 or higher), and have the most current version of the Android Market
application installed.
Update 2022
Recently re-checked:
Even if we Emulate a system-image which targets Google-Play (instead of Google APIs),
update Google-play services to latest,
and follow the "Goole Wallet" app's and/or "Google Pay" app's add-credit-card form till end successfully.
Said App instead of adding credit-card as payment-method, just shows message:
Note that the message is confusing, as we were trying to add credit-card, and did not try to use "Tap to Pay".
Install an emulator that has already google playstore installed, on a system image that supports google service api
My emulator spec:
Pixel 3a API 31
ABI: x86_64
System image: Android API 31 (Google Play)
Create a closed testing track in google playstore console
Add your gmail to license testing and closed testing email list
Wait for your closed testing to be approved and available for testers.
If you're using an existing emulator, please wipe data and cold boot
Login as a tester account in gmail app as the first thing when you launch the emulator
Browse closed testing invitation url, and accept invitation to take part in closed testing track
IMPORTANT Make sure you're using the same application id (e.g. com.your.company.app), version code (e.g. 1.3.0) and version name(a.k.a build number) as the closed testing binary.
That's all. Test payments in the emulator.
For step 2 ~ 4 you can refer to this wonderful doc from revenue cat: https://docs.revenuecat.com/docs/google-play-store
Related
What steps do I need to take when I have troubles trying to use an app I created and try to run it on the latest Samsung Tab A 10.1? I tried to start the app, the message displayed is :
This application requires the latest version of ARCore
So I tapped the continue button. I was taken to Google Play. The title says "Google Play Services for AR". Then below that it says:
Your device isn't compatible with this version
Does anyone have a solution, please?
Firstly check whether the device you are using has the ARCore support:
It was indeed an easy experience in terms of building and running the app on the IOS device, iPhone 10. There were no complications in activating the ARkit in the devices since they were built in like the documentation mentioned. It was particularly gruesome in building the AR app on an Android device. As per the documentation the Android devices such as Samsung Galaxy A70S is compatible with ARCore.
Firstly the app simply crashed on installing into the device
As a part of the workaround, I looked for installing, "Google Play Services for AR" on my play store which simply didn't show up
I directly tried to install the app "Google Play Services for AR" through google but it failed with the message, the app is not compatible with my device.
I did a trial and error with installing the "Google Play Services for AR" apk directly from https://www.apkmirror.com/apk/google-inc/arcore/, specifically https://www.apkmirror.com/apk/google-inc/arcore/arcore-1-13-19100710-release/google-play-services-for-ar-1-13-191007106-android-apk-download/ to my Android device to enable ARCore which supported 64-bit processor
The app was however still crashing due to the 403 forbidden IP error on persisting the data
The issue got resolved on adding my public IP to azure rules
For the emulator I have below, I am getting the error message that "Google Play Services not installed on the device".
As per the developer site, it says that 'The Android emulator with an AVD that runs the Google APIs platform based on Android 4.2.2 or higher.
Not able to understand if the emulator is running 4.4.2 then why is google play services not present?
Some related threads, but no resolution. (adding these just to point out this issue is not a duplicate):
Related Thread
Related Thread
http://developer.android.com/google/play-services/setup.html
Quoting docs
If you want to test your app on the emulator, expand the directory for
Android 4.2.2 (API 17) or a higher version, select Google APIs, and
install it. Then create a new AVD with Google APIs as the platform
target.
Needs Emulator of Google API"S
See the target in the snap
Snap
I prefer testing on a real device which has google play services installed
You will not able to test the app using the Google-Play-Service library in emulator. In order to test that app in emulator you need to install some system framework in your emulator to make it work.
https://stackoverflow.com/a/11213598/1405008
Refer the above answer to install Google play service on your emulator.
If you happen to not have the image, download it via the SDK manager:
If you're using Xamarin, I found a guide on their official forum explaining how to do this:
Download the package from the internet. There are many sources for this, one possible source is the CyanogenMod web site.
Start up the Android Player and unlock it.
Drag and drop the zip file that you downloaded onto the Android Player.
Restart the Android Player.
Hereafter, you might also need to update the Google Play Services from the Google Play Store.
Hope this helps for anyone else who has troubles finding the documentation.
Setp 1 :
Download the following apk files.
1)com.google.android.gms.apk (https://androidfilehost.com/?fid=95916177934534438)
2)com.android.vending-4.4.22.apk (https://androidfilehost.com/?fid=23203820527945795)
Step 2 : Create a new AVD without the google API's
Step 3 : Run the AVD (Start the emulator)
Step 4 : Install the downloaded apks using adb .
1)adb install com.google.android.gms-6.7.76_\(1745988-038\)-6776038-minAPI9.apk
2)adb install com.android.vending-4.4.22.apk
adb come up with android sdks/studio
Step 5 : Create the application in google developer console
Step 6 : Configure the api key in your Androidmanifest.xml and google api version.
Note :
In step1 you need to download the apk based on your Android API level(..18,19,21..) and google play services version (5,5.1,6,6.5......)
This will work 100%.
google play service is just a library to create application but in order to use application that use google play service library , you need to install google play in your emulator.and for that it need the unique device id. and device id is only on the real device not have on emulator. so for testing it , you need real android device.
My app is not compatible for my device through Play Store.
I am constantly testing on my device and it works properly.
How can I learn what is not compatible?
1.1 I have only 1 'uses-feature', for 'android.hardware.telephony' and it is 'required="false"'
1.2 My 'compileSdkVersion' = 23, 'minSdkVersion' = 16, 'targetSdkVersion' = 23
1.3 My device is Nexus 5 with Android 6.0
How can I test if a fix works without uploading to the store? Currently I can install and run the app on my device through Android Studio but not through the Play Store.
You can write unit tests that run on your device/emulator to get the features available on the device/emulator and compare them with your app's required features.
The PackageManager.getSystemAvailableFeatures() method will be helpful in that case.
Another approach is to check the output of the aapt tool by the SDK to see the permissions and features defined by your app, these permissions and features dumped by the tool are those who GooglePlay will use to filter your app.
https://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing
The aapt tool may be useful in some cases, but the easiest way I've found to test device support is to upload an APK to a closed track in the Play Store Console (under Release management > App releases > Create closed track > Manage):
Then check the device catalog (under Release management > Device catalog):
I had previously excluded a ton of devices from the compatible-screens part of my manifest. I was able to test that the new APK corrected this by clicking on one of the devices in the catalog and expanding the "Track-level status" section on the next page:
I have gone through many questions like this on Google Play, I am using Android 4.2.2 API 17.
My app requires Google play services 8.1 , It compiles fine and when it runs on emulator it shows message that 'You need to update your Google play services ' ,
When I click on update nothing happens,
How can I update the Google Play services without downloading any latest API version ?
Update On 18-Dec-2017
You can update Google Play Services via the Play Store app in your emulator just as you would on a physical Android device from API 24.
check Emulator new features added with stable update from Android Studio v 3.0
Google Play Support - From Google : We know that many app developers use Google Play
Services, and it can be difficult to keep the service up to date in
the Android Emulator system images. To solve this problem, we now
offer versions of Android System Images that include the Play Store
app. The Google Play images are available starting with Android Nougat
(API 24). With these new emulator images, you can update Google Play
Services via the Play Store app in your emulator just as you would on
a physical Android device. Plus, you can now test end-to-end install,
update, and purchase flows with the Google Play Store.
Quick Boot - Quick Boot allows you to resume your Android Emulator
session in under 6 seconds
Android CTS Compatibility
Performance Improvements - With the latest versions of the Android
Emulator, we now allocate RAM on demand, instead of allocating and
pinning the memory to the max RAM size defined in your AVD.
Virtual sensors
Wi-Fi support
GPS location and Many more...
OR
Update this SDK Build-Tools and Android Emulator to latest and this alert message will not come again,
Settings --> Android SDK --> SDK Tools(tab) --> Android SDK
Build-Tools
Use/ emulate a system-image that has "Play Store" pre-installed, those with "Google Play" in targets column (instead of Google APIs). Updating play services would be as easy as in real device.
Since Google introduced Google Play Store images in Android SDK Tools 26.0.0 now emulators comes with installed Google Play Store.
From 26.0.3
Adds a new tab in the extended window for Google Play Store images that displays the Play Services version and a button to check for updates to Play Services.
But even with all above (last checked 2022), you can NOT use the Emulator to test Google Play Billing:
You must install your application on a real device to test Google Play Billing,
Or, ask Google for "closed testing" permission.
see How to test In-app Billing on an emulator?
You need install Google play image,
Android SDK -> SDK platforms --> check show Package details --> install Google play.
Based from Google documentation,
If you want to test your app on the emulator, expand the directory for Android 4.2.2 (API 17) or a higher version, select Google APIs, and install it. Then create a new AVD with Google APIs as the platform target.
Try to navigate to settings--> apps in your emulator and then find Google Play Services. Check the version number and use it in you build.gradle. To update it with the latest version, you can see it in these documentation and SO question.
Running the app on a virtual device with system image, 'Google Play API' instead of 'Google API' will solve your issue smoothly..
Virtual devices Nexus 5x and Nexus 5 supports 'Google Play API' image.
Google Play API comes with Nougat 7.1.1 and O 8.0.
Just follow the below simple steps and make sure your pc is connected to internet.
Create a new virtual device by selecting Create Virtual Device(left-bottom corner) from Android Virtual Devices Manager.
Select the Hardware 'Nexus 5x' or 'Nexus 5'.
Download the system image 'Nougat' with Google Play or 'O' with Google Play. 'O' is the latest Android 8.0 version.
Click on Next and Finish.
Run your app again on the new virtual device and click on the 'Upgrade now ' option that shows along with the warning message.
You will be directed to the Play Store and you can update your Google Play services easily.
See your app runs smoothly!
Note: If you plan to use APIs from Google Play services, you must use the Google APIs System Image.
the answers on this page eluded me until i found the show package details option
My answer is not to update the Google play service but work around.
Get the play service version of the emulator by using the following code
getPackageManager().getPackageInfo("com.google.android.gms", 0 ).versionName);
For example if the value is "9.8.79" then use the nearest lesser version available com.google.android.gms:play-services:9.8.0'
This will resolve your problem. Get the release history from https://developers.google.com/android/guides/releases#november_2016_-_v100
I know it's late answer but I had same problem for last two days, and none of the above solutions worked for me. My app supports min sdk 16, Jelly Bean 4.1.x, so I wanted to test my app on emulator with 16 android api version and I needed Google Play Services.
In short, solution that worked for me is:
make new emulator Nexus 5X (with Play Store support) - Jelly Bean 4.1.x, 16 API level (WITHOUT Google APIs)
manually download apks of Google Play Store and Google Play Services (it is necessary that both apks have similar version, they
need to start with same number, for example 17.x)
drag and drop those apks into new emulator
congratulations you have updated Google Play Services on your 4.1.x emulator
Here are the steps and errors I have encountered during the problem.
So I have made new emulator in my AVD. I picked Nexus 5X (with Play Store support). After that I picked Jelly Bean 16 api level (with Google APIs). When I opened my app dialog pop up with message You need to update your Google play services. When I clicked on Update button, nothing happened. I did update everything necessary in SDK manager, but nothing worked. I didn't have installed Google Play Store on my emulator, even tho I picked Nexus 5X which comes with preinstalled Play Store. So I couldn't find Google Play Store tab in Extended Controls (tree dots next to my emulator).
Because nothings worked, I decided to try to install Google Play Services manually, by downloading APK and dragging it into emulator. When I tried this, I encountered problem The APK failed to install. Error: INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES. I figured that this was the problem because I picked Jelly Bean 16 api level (with Google APIs). So I made new emulator
Nexus 5X (with Play Store support) - Jelly Bean 16 api level (WITHOUT
Google APIs)
This allowed me to install my Google Play Service manually. But when I run my app, it still didn't want to open it. Problem was that my emulator was missing Google Play Store. So I installed it manually like Google Play Service. But when it was successfully installed, dialog started popping out every second with message Unfortunately Google Play Services has stopped. Problem was that version of my Google Play Store was 17.x and Google Play Service was 19.x. So at the end I installed Google Play Service with version 17.x, and everything worked.
I faced the same issue. I updated my Android studio and used API 25 target as Android 7.1.1 and X86 and everything worked fine. I use Google play services and firebase for my project
I was having the same issue. Just avoid using an emulator with SDK 27. SDK 26 works fine!
2020 , the error
Google Play services out of date. Requires 12451000 but found 11743470
just update Google Play services from the Google Play after you sing-in with a valid account.
PS: I've tried different Emulator versions, but all required to update google play services.
Update your google play services or just create the new emulator.
When you install the new emulator this problem will automatically be solved.
Happy coding :)
For the emulator I have below, I am getting the error message that "Google Play Services not installed on the device".
As per the developer site, it says that 'The Android emulator with an AVD that runs the Google APIs platform based on Android 4.2.2 or higher.
Not able to understand if the emulator is running 4.4.2 then why is google play services not present?
Some related threads, but no resolution. (adding these just to point out this issue is not a duplicate):
Related Thread
Related Thread
http://developer.android.com/google/play-services/setup.html
Quoting docs
If you want to test your app on the emulator, expand the directory for
Android 4.2.2 (API 17) or a higher version, select Google APIs, and
install it. Then create a new AVD with Google APIs as the platform
target.
Needs Emulator of Google API"S
See the target in the snap
Snap
I prefer testing on a real device which has google play services installed
You will not able to test the app using the Google-Play-Service library in emulator. In order to test that app in emulator you need to install some system framework in your emulator to make it work.
https://stackoverflow.com/a/11213598/1405008
Refer the above answer to install Google play service on your emulator.
If you happen to not have the image, download it via the SDK manager:
If you're using Xamarin, I found a guide on their official forum explaining how to do this:
Download the package from the internet. There are many sources for this, one possible source is the CyanogenMod web site.
Start up the Android Player and unlock it.
Drag and drop the zip file that you downloaded onto the Android Player.
Restart the Android Player.
Hereafter, you might also need to update the Google Play Services from the Google Play Store.
Hope this helps for anyone else who has troubles finding the documentation.
Setp 1 :
Download the following apk files.
1)com.google.android.gms.apk (https://androidfilehost.com/?fid=95916177934534438)
2)com.android.vending-4.4.22.apk (https://androidfilehost.com/?fid=23203820527945795)
Step 2 : Create a new AVD without the google API's
Step 3 : Run the AVD (Start the emulator)
Step 4 : Install the downloaded apks using adb .
1)adb install com.google.android.gms-6.7.76_\(1745988-038\)-6776038-minAPI9.apk
2)adb install com.android.vending-4.4.22.apk
adb come up with android sdks/studio
Step 5 : Create the application in google developer console
Step 6 : Configure the api key in your Androidmanifest.xml and google api version.
Note :
In step1 you need to download the apk based on your Android API level(..18,19,21..) and google play services version (5,5.1,6,6.5......)
This will work 100%.
google play service is just a library to create application but in order to use application that use google play service library , you need to install google play in your emulator.and for that it need the unique device id. and device id is only on the real device not have on emulator. so for testing it , you need real android device.