I recently posted about the Play store not letting me publish my app without a minSdkVersion, but whenever I set it to anything above "1" my app just doesn't work (minSdkVersion breaking program).
So this guy suggested to just set my minSdkVersion to 1, which worked. But now when I submitted my app even though the developer site says:
API level: 1-16+
Supported screens: normal-xlarge
OpenGL textures: all
But the app only shows it supports Android under 4.x, I developed it on my 4.0.4 device. I tried searching around and I found that some people have problems with services messing up the phones it supports, so I deleted all of my services, because I don't really need any for this version of the app to submit. And it still didn't work. So I don't know what else to do, here is my AndroidManifest.xml if it helps... I've been trying to figure out why my application isn't working for a week now, still nothing. I have tried setting a targetSdkVersion to something like 14, my application still breaks. I cleaned out my code, taking everything out of the already short, 200 lines, application, and it still isn't working. Is there something I can't use in an android application 4.0 that I am using in my application? or is it just my AndroidManifest? Thank you so much!
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unparalleledsoftware.app.list"
android:versionCode="5"
android:versionName="2.02" >
<uses-sdk
android:minSdkVersion="1" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="#string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
I should note,I am using the Theme.Holo.Light, but even if I change it to DeviceDefault it doesn't work.
Edit:
I googled the app on my friends Samsung Galaxy S3 (it didn't show up in the Play Store on his phone), when I installed by googling the app and hitting the "install" button on google and it opened in the Google Play store and was able to install. When I did the same on my phone, Galaxy Note, it opened in the Google Play Store, but then said "Not compatible." Why? They are both on the same version of OS. Why is mine not compatible, nor the One X compatible, but the Samsung Galaxy S3 worked...?
Edit: I get these errors/problems when compiling with a targetSdkVersion, http://pastebin.com/mxgWNLdM
It's showing up as "Requires Android 1.0 and up" on my end, and there's nothing wrong with your manifest either. It'll show up on all devices.
You should, however, avoid using Holo themes if you're targeting devices running versions of Android prior to 3.0. The best practice is to create two themes - one for API levels 1-10 and one for API level 11+, and make sure that the v11 one is using a Holo theme as the parent style.
Your Manifest file only has a minSdk setting which is odd/bad since according to the documentation if you don't set a targetSdk, it will default to the minSdk level.Android Manifest - Uses SDK element. The thing is that an API setting of 1 is really old and I wouldn't be surprised that Market/Play has issues. If you developed this on ICS, you should really have a targetSdk. Also if it was developed for API level 14, you should have a supports-screen element as well.
At worst, I would create a new project and copy over that manfest file for any missing elements. If you are still having issues with a targetSdk and supports-screens, turn on verbose build messages and see if anything looks wrong.
I you posted your complete Manifest file above, then I suggest adding <supports-screen> entry (above <applicaion>) to it, like this:
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
Lack of it (if not intentional) causes application to be not available for any device it should, due to Play's filtering mechanism.
Related
I realise that this question has been asked (and solved) here before, however the most frequent and obvious solution, which is to place
<uses-permission android:name="android.permission.INTERNET"/>
in the Android.Manifest.xml file, does not work for me.
I have double checked that I have not placed this within the manifest's
<application />
tag, yet it still doesn't work.
I'm running Android 9 (Pie) as the target version, but I can't find any breaking changes with that API which may give this error. I have also cleared the cache on my Google Chrome app, which the app is using as it's default Webview.
Solved
In the end this was nothing to do with Android. I eventually just disabled the Chrome app on my test phone (Samsung S8) and it now works.
I know this question has been asked many times, I tried to apply all the fixes from the other similar questions, still cant seem to make the app work in the Nexus 7 Tab and works only on phones. Here is the Manifest I use for the free app.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.&&&&%%$%#.*****"
android:versionCode="8"
android:versionName="1.7">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<!-- android:debuggable should be set false for the google store apk -->
<application
android:name="com.$%#$%#$%#$%.app.##$##$#"
android:allowBackup="true"
android:icon="#drawable/icon"
android:label="#!##$###"
android:debuggable="false"
android:theme="#style/Theme.##$##$##$" >
<activity
android:uiOptions="splitActionBarWhenNarrow"
android:name="com.*#$#*$.app.activities.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="##$##$##$##$"
android:screenOrientation="portrait" >
<!-- this needs to be set 1 if this is a new app, otherwise set it to the db version that was in CopyDatabaseHelper or increase it by one if you want to update the DB -->
<meta-data android:name="dbVersion" android:value="4" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="landscape"
android:theme="#android:style/Theme.Black.NoTitleBar.Fullscreen" />
</application>
As you can see, I added the compatible screens, also for Nexus 7, changed permission for camera to as Feature. Although one small thing is that, whether my app got screened through the playstore because the permissions were not removed but commented out.
EDIT - I do not have a screenshot for 7 inch or 10 inch Tablet in the developer console, would that be an issue?
EDIT 2 - Clearly adding the screenshots dint help.
EDIT 3 - Edited the Manifest with the current I deployed for testing reasons. I found out that this app doesnt support "Nexus 7 - tilapia" and "Nexus 7 - grouper". I am now trying to figure out why it doesnt support these. Even specifying that camera as a feature is a problem when I dont exclude other camera related stuffs like autofocus and front camera?
Its blatantly because you have compatible-screens and the Nexus 7, although you have "defined" it , is not registering.
Is it neccessary for this section at all? And if so, triple check, you have valid parameters for the nexus 7.
I can guarantee removing that section will fix the issue.
According to the docs, xxhdpi doesnt exist, so you type in 480 instead. But ive no idea why you have typed in 213 for the nexus.
Reading the android Docs here
Caution: Normally, you should not use this manifest element. Using
this element can dramatically reduce the potential user base for your
application, by not allowing users to install your application if they
have a device with a screen configuration that you have not listed.
You should use it only as a last resort, when the application
absolutely does not work with specific screen configurations. Instead
of using this element, you should follow the guide to Supporting
Multiple Screens to provide scalable support for multiple screens
using alternative layouts and bitmaps for different screen sizes and
densities.
Is it really manditory to stop small screens installing your app..
Yes screenshot is the only issue. You need 2 min screenshot to be added on Developer console to visible for respective inch devices.
This could be because the Nexus 7 is an xxhdpi device and so could it be because you have not supported your drawables in xxhdpi? I can't imagine why this would prevent it from showing up in the Play store, but it could cause problems.
Also how long ago did you publish the app? It can take several hours for it to show across all devices.
I uploaded my application on Google Play Store. I could search for it and install on almost every device. Except on Samsung Galaxy Y Duos s6102
After searching for a solution, few things i found out:
Problem with uses-features in the Manifest:
I am having only 2 features in the Manifest
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
But the device has a Camera, so this might not be the case.
Problem with support-screens in the Manifest:
I haven't added any such tag in my Manifest, assuming that by default all Screens are supported. And confirmed that from the developer's console
I found out that QVGA Screens are not supported by default, you have to explicitly declare them.
But QVGA screens come under Small Screen as stated here:
Then thought density might be the reason, but from the docs:
For applications that support Android 1.6 (API level 4) and higher, this is "true" by default and you should not set it "false"
So, are there any other reasons for this Issue? Or should i try adding them all to my Manifest file.
In the link provided to the device specifications, it states that the camera is 'fixed focus'.
When you add a uses-feature entry in your manifest, that feature is required and will block devices on Google Play which don't have it. As long as it doesn't break anything or make features non-functional like a barcode scanner in the case of 'autofocus', adding required=false should be fine.
I've developed an android application whose GUI is designed for small screens. When run on a tablet it looks rubbish because I've assumed 320dp width to make my life easier - I don't have the resources to test on tablets.
People using android 3.2 were able to zoom into the app so it looks like it's running on a big phone. But after my last update that option is not available, and I don't understand why.
The change is related to the Manifest file. Here's what my orignal app had (there's nothing to do with screens in my Manifest):
<uses-sdk android:minSdkVersion="7" />
After updating my development environment, I got a warning saying I should specify a target sdk, so I did this:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10" />
Using a painfully slow Android 3.2 emulator I have confirmed that this has caused the problem. I thought any target SDK below 11 wouldn't affect the zooming option?
Using the following also removed the zoom option:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="9" />
But this didn't:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="8" />
So setting my target SDK to 8 is a workaround, but it's also wrong because I use version 2.3.3 for testing.
Am I missing something here? Is there a better solution?
Thanks.
Try setting targetSdkVersion to 9 (or 10) and adding <supports-screens android:xlargeScreens="false" /> to your AndroidManifest.xml (docs for supports-screens). This tells the system that your application does not explicitly support xlarge screens and that it should offer the compatibility zoom/scale option for users that use the app on xlarge devices. Note that this will not cause the app to be hidden from xlarge devices on the Play Store (supports-screens only causes Play Store to filter apps from smaller screens if they are designed to run on larger screens, not the other way around).
The reason I think this is happening once you set targetSdkVersion to 9+ is because supports-screens xlargeScreens was added in API Level 9 and (I believe) defaults to true (for API Level 9+ at least). Once xlargeScreens is true the system will disable the compatibility zoom/scale mode.
Supporting docs (where it does say this but is fairly convoluted):
http://developer.android.com/guide/practices/screen-compat-mode.html
http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-screens.html
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
The app is Flash Cards Max on the Android market. I recently updated my app with a 1.6 only feature. However, I still want the app to work with those that have Android 1.5. I built it using Android 1.6 in Eclipse and I have the correct strings in the Android manifest file.
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="4"
/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Everything works in the emulator fine on 1.5 just want to be sure it shows up on the Android Market for those with 1.5. It does not. This is a market filtering question.
Please see this thread for info on what I changed and how I went about it thanks to several of your suggestions.
tl;dr
Why doesn't my app show up for 1.5 users?
Answer by a helpful user on Reddit.
"I had the same problem, solution was <supports-screens/>
Why?
Because
android:anyDensity
Indicates whether the application can accommodate any screen density. Older applications (pre API Level 4) are assumed unable to accomodate all densities and this is "false" by default. Applications using API Level 4 or higher are assumed able to and this is "true" by default. You can explicitly supply your abilities here."