Unable to distribute app on Android Wear in Google Play Developer console - android

Im trying to submit my newly created Android Wear watch face through Google Play Developer Console. The problem is checkbox "Distribute your app on Android Wear" in pricing and distribution section is disabled. I cant understand why.
What I did:
1) Uploaded screenshot for Android Wear
2) Uploaded 2 APK files in closed Beta releases. Both files are signed with one key, have different version names. First is phone apk with embedded wear apk (minSdkVersion 23), second - standalone wear apk (minSdkVersion 25) has meta-data android:name="com.google.android.wearable.standalone" android:value="true" in manifest file.
Everythings seems fine and app is ready to publish in production, except the "Distribute your app on Android Wear" checkbox which remains disabled.
What Im missing?

I stumbled upon the exact same issue.
I had <uses-feature android:name="android.hardware.type.watch" /> in my manifest
I had <meta-data
android:name="com.google.android.wearable.standalone"
android:value="true" /> in my manifest
minSdk was set to 25
But still the checkbox for Wear distribution was disabled.
For fun I tried editing the HTML with Chrome's inspection tools, and removed the "disabled" attribute from the checkbox. Sure enough, the setting stuck after enabling the checkbox, and now Wear distribution is enabled. Give it a try!

You may want to check Packaging and Distributing Wear Apps and see if you've missed something.
As discussed, aside from specifying APK's version code (standalone Wear and embedded Wear), also check if you've updated your Wear module's build.gradle file to include the following if an existing embedded app has a minimum SDK version of 23:
android {
// Allows you to reference product flavors in your
// phone module's build.gradle file
publishNonDefault true
...
defaultConfig
{
// This is the minSdkVersion of the Wear 1.x embedded app
minSdkVersion 23
...
}
buildTypes {...}
productFlavors {
wear1 {
// Use the defaultConfig value
}
wear2 {
minSdkVersion 25
}
}
}
Also, check Distribute to Android Wear for more information.

I've received the email from Google support saying that they worked on the issue and changed something. They noted that my manifest file for mobile was missing line <uses-feature android:name="android.hardware.type.watch"/>
I only had this line in Wear module manifest.
I've added this line, uploaded a new version with 2 apk files for wear 2.0 and 1.0 and after that checkbox became enabled.
Currently, the official docks for Wear 2.0 don't clearly say that this line should be added to both manifest files.
Also strange that before the problem with this project I managed to successfully upload another Wear 2.0 project to Developer Console (with checkbox enabled), and the line was only in Wear module manifest.

I actually emailed Google about this - it was an issue on their side and they have now fixed it...

If you add <uses-feature android:name="android.hardware.type.watch"/> to your mobile manifest (not wearable manifest) your apk will be distributed only for WEARABLE devices! Don't do it if you want to distribute also for mobile phones.
I have the same problem. Checkbox "Distribute your app on Android Wear" is grey out. I have followed all instructions in App Distribution, added all wearable screenshots and still cannot check the box.
I have contacted support. First they said, that in my wearable manifest in need to replace:
android.hardware.type.watch
with:
android.hardware.type.WATCH
That didn't help. Next they told me, that there is a bug in developer console and it should be resolved by Tuesday May 9th. Unfortunately, they didn't fix anything or they didn't do anything at all.
Next they told me, that I need to add <uses-feature android:name="android.hardware.type.watch"/> to my mobile manifest file. I cannot do it, because apk would then be distributed only for wearable devices.
I have send them my manifest.xml and build.xml for mobile and wearable and waiting for the response.
Before april I have added about 10 wearable apps (also with 2.0 support) and there was no problem.
In my point of view they doesn't know what the problem is and cannot help us. Moreover they instructions App Distribution are out of date and In one place there is info, that minimum SDK should be 23, and few pages below there is sample code with minimum SDK 21.

Your APK requires both tags below as called out in other answers.
However, you still won't be able to check the box if the original APK (without the tags) was uploaded for the release. You must delete that APK and make sure only the APK with all those fields is left.
I made this mistake and had to hack the solution above but couldn't publish afterwards until I deleted the original APK I uploaded without the standalone tag. I asked support and they seemed to verify this.
Anyway, try that before hacking, hope that helps.
Required in your Wear manifest:
Requirement 1:
<uses-feature android:name="android.hardware.type.watch" />
Requirement 2:
<meta-data
android:name="com.google.android.wearable.standalone"
android:value="true" />

Related

Migrate a WearOS APK from embedded to Multi-APK - What version code to use to retain mobile APK?

The app has used the embedded wear APK distribution model, but since this distribution method is no longer supported since January, the app has been migrated to use a separate Wear APK.
Followed the guides to set the wearAppUnbundled true flag in the mobile APK and set the <uses-feature android:name="android.hardware.type.watch"/> along with <meta-data android:name="com.google.android.wearable.standalone" android:value="false" /> in the Wear APK.
The only question is what app version code to use when uploading the Google Play?
Let's say version 100 is the legacy version with the embedded wear APK. (minsdk 19)
Version 300 is the new mobile APK without the wear APK, this has been uploaded to the Play Store. (minsdk19)
Now, what version code to use for the Wear APK? (minsdk 25)
If it's set to version code 200 then when preparing the release the Play Console accepts it. However, it says that 300 will not be included in this release. And this is what is scary as one might think that the mobile APK will not be visible on the Play Store if it's released as is based on this message.
Should the "Include" option next to the 300 version APK in the "Not Included" section be used to force the Play Console to keep that one active?
Based on the Multi-APK versioning guide:
This scenario might be "shrinking" since the Wear APK is more restricted (due to the min SDK level and the uses-feature declaration).
However, since the Wear APK uses a lower version code, the capable devices should still receive 300 by default? This is what is confusing, as based on this I'd assume that the 300 version should not be affected at all by uploading a more restricted lower code APK.
The most important thing is to have the new mobile APK as is, and it shouldn't disappear from the Play Store.
As it turns out, it's easy to solve this. In this case, the Wear OS APK had to be uploaded with a higher version code, version code 400, for instance. On the release page, the Include button had to be used to include the 300 version (phone APK).
It kind of make sense, but if one is new to Multi-APK release the messaging is not straightforward and if the app has many installs one thinks twice before taking such actions.
(Probably should have uploaded both APKs in the first place when released the new phone APK)

You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added APKs

I am new to android development. recently i have uploaded my app to playstore and couldnt download it from there because i faced this issue "your device isnt compatible with this version". on further analysis I could found out that I have used feature "android.hardware.type.watch" along with android.hardware.faketouch, android.hardware.telephony. which is why i could see only watch devices in supported devices list on console (this was mistakenly ignored during rollout).
now to correct this mistake, I have removed watch feature, built apk with incremented version code. I need to replace live app on playstore with newly built apk. I have used 2 methods ( creating release in production and creating beta release )but everytime I am facing below issue "You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added APKs.
i tried many time by increasing version code from 3 to 40 but same error is occur please help me
In my case, it happened because I accidently added android wear support.
Removing the following line in the manifest solved my problem
<uses-feature android:name="android.hardware.type.watch" />
Lets go in detail, Firstly as new developer i confused between Empty
Activity and Blank Activity in android while creating Activity.
Well
in my case i choose blank activity instead empty activity, then in
blank activity i get some watch and wear dependency in gradle file as
implementation 'androidx.wear:wear:1.0.0' and in manifest file
<meta-dataandroid:name="com.google.android.wearable.standalon android:value="true"/>
<uses-feature android:name="android.hardware.type.watch" />
If you publish this apk file or app bundle then you will get error as
Your device is not compatible with this version
Then i read it some where..
Your android project you have 2 apps:
1.Mobile 2.Wearable
Mobile app should be installed on mobile device (phone/tablet) and Wearable app should be installed on Android Wear device.
This message No, missing feature: WATCH means that you're trying to install Wearable app on mobile phone - you shouldn't do that, your mobile device is not a WATCH. So once again: just launch Mobile app on mobile and Wearable app on Android Wear.
After this i remove the line from manifest
<uses-feature android:name="android.hardware.type.watch" />
And upload again to the google play console then i got new error as
You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added APKs
if i add this line again in manifest file then this error is gone and old error is come
Your device is not compatible with this version
Solution:
Create new application in google play console with different package name and make your change your package name in gradle file and all over.
and remove all dependencies related to watch n wear and remove line from manifest file
<meta-dataandroid:name="com.google.android.wearable.standalon android:value="true"/
<uses-feature android:name="android.hardware.type.watch" />
And publish again and check compatible device that your app is support before rollout , after publish you will get mail from google as report of tested application.

Will android app crash if manifest use class not defined?

If we need to use a service say tvinputservice in Manifest but the service is available with android.software.live_tv. If a device doesn't have android.software.live_tv and we put tvinputservice in Manifest. Will the app crash on that device?
That will not allow to install the app on such devices (without the feature) through Google Play. That does not prevent you from installing the apk manually on such devices though, and the app will not crash until it actually try to use the functionality which is not present.
To allow installing the app on such devices via Google Play, you can use android:required="false" inside uses-feature tag.
You can choose Min SDk and Max SDK in Gradle file in Android Studio
and Manifest in Eclipse .
Min SDK and Max SDK is configure that your application run on which devices.

Android Wear App not installed

we release our first Wearable Application today but sadly this one isn't get installed automatically as it should.
We double checked the APK and the wearable apk is present but never hits the watch. Manually packaging the APK as suggested here http://android-developers.blogspot.de/2014/07/update-on-android-wear-paid-apps.html doesn't helped either. (We know this should only affect paid apps but just to be sure)
Is anybody else facing this issue? The app works if we install the APKs over adb.
Check your permissions. The Smartphone part needs to have all the permissions the Wear component has.
use the same package id for both apps (wear and mobile)
I spend ages on this. The wearApp gradle rule worked fine for me. But then for the Paid version of the app, following the guide on the blog to manually package the wear app, it wouldn't auto-load on the wearable. After lots of checking, I found that the wearApp gradle rule (on Android Studio 0.8.2), did actually place the wearable APK in the raw folder as per the blog post fix. So seems to be fixed in latest Android Studio (without being told?). And for some reason, manually packaging the APKs didn't work.
So use the wearApp gradle rule.
Also, if you need to reference a different version of the wear APK for different handheld APK versions (for free and pro versions to have applicationId that matches the wearable version), use the productFlavors in the wear gradle config:
productFlavors {
freeapp {
applicationId "com.barkside.appfree"
}
proapp {
applicationId "com.barkside.apppro"
}
}
Then in your Pro version gradle (for example), have the wearApp dependency target a particular configuration:
wearApp project(path: ':wear', configuration: 'proappRelease')
You will also need publishNonDefault true in the android block of the wear gradle.
Had the same problem, what helped me was adding
<uses-feature android:name="android.hardware.type.watch" android:required="false"/>
To the mobiles manifest.
What worked for me was removing product flavors. Sucks that I can't have flavor-specific code now, but Android refuses to package the wear app in release otherwise.
See: Android Wear app not installing through handset
You should check adb logcat on both devices to see what is going on. It will give error messages to indicate what problem might be happening.
Also, when you are testing locally, you should only adb install the phone APK to the phone, and let it install the embedded APK to the wearable device. Then you don't need to go all the way through the play store for testing. Make sure you do release builds, because those are the only ones that do the embedded APK with the wearApp() gradle rule.
I had a problem with installing an app, i think because my watch reset when it was installing. I had to desvinculate the watch, after reinstall everything it works. Maybe help someone
This is going to sound like such a basic and silly answer. But when I did my tests, I forgot that in Android Studios where you click on the play button to run your app, you can change it from mobile to wear. I was only ever installing the mobile app and not the wear app on the wear device.
Hope this helps someone.

Published unity android app has lower android version requirements than manifest

I built a game in Unity and I'm trying to export to to Android. I've set the min API in Android player settings to 14. I've confirmed with the AndroidManifest.xml file in both temp/staging and assets/plugins/android that it reflects this. It shows:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
I then exported directly into an APK file right from unity (not through eclipse). I uploaded the APK to the google play store in beta mode. However, when I look at the app screen on the play store I see: Requires Android: 1.6 and up. Why is it doing this?
I'm thinking there might be a problem with the Manifest file but I'm not sure. For example, I'm using AdMob so I have these permissions in the file:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
But when I install the app through the beta link it tells me that no extra permissions are necessary. AdMob is working though, I can see the banner ads and the impressions are showing up on my AdMob account. I'm not sure if the no permissions needed thing is related to a bad manifest file or a beta store account. EDIT: Actually if I install the APK manually then it does show the permissions, so I'm guessing it's just a beta thing and my permissions are fine.
To test, I've tried exporting the file as an Android Project, then importing into Eclipse. When I try to do that, it successfully recognizes the project but even though the Finish button isn't greyed out it doesn't do anything...
Decompile your APK file to read AndroidManifest.xml.
Look at this: How to parse the AndroidManifest.xml file inside an .apk package
Apparently this is a known bug, and it doesn't seem to affect published apps, so don't worry about it:
https://gamedev.stackexchange.com/questions/67234/why-does-my-game-display-the-wrong-required-android-version-on-google-play

Categories

Resources