Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

"Your Device is not Compatible" message

Discussion in 'Android' started by Starsman Games, May 18, 2012.

Thread Status:
Not open for further replies.
  1. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    *************************************
    UPDATED, see last post in the thread
    *************************************

    OK I just published my game to Google Play, looking at my Developer Console, my Samsung Galaxy Player is listed in the compatible device list.

    However, going to the Google Play and searching for my game, it says I have no devices that are compatible. Opening that link in my Galaxy Player gives me the "Your device isn't compatible with this version." banner.

    So... given this is my first publishing to Google Play I am entirely lost. Is this expected? Will it clear in a while?

    Here is a link if some one can check and let me know if it shows to be compatible with your device.
    https://play.google.com/store/apps/details?id=com.starsmangamesllc.misumisukaboomisgoogle
     
    Last edited: May 25, 2012
    MrMattyMoses likes this.
  2. nikolic

    nikolic

    Joined:
    Oct 15, 2011
    Posts:
    162
    The url you provided doesn't work for me. Searching Google Play for "Misu Misu Kaboom" gives no results.

    I have 3 devices to test for you if I manage to reach the game url.
     
    MrMattyMoses likes this.
  3. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    Sorry I temporarily took the version offline to fix another issue I had with my ads settup.

    Link should be working now.
     
    MrMattyMoses likes this.
  4. nikolic

    nikolic

    Joined:
    Oct 15, 2011
    Posts:
    162
    I can find the game using search now but the link still doesn't work. The link from search result is the same and doesn't work too.
    I'll try again later and let you know the results.
     
    MrMattyMoses likes this.
  5. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    Odd, its working for me... maybe I can see it early because I'm logged with my developers account.
     
    MrMattyMoses likes this.
  6. nikolic

    nikolic

    Joined:
    Oct 15, 2011
    Posts:
    162
    It works now.



    It's compatible with Samsung Galaxy Ace Plus and Samsung Galaxy Note.
    ZTE Skate is ARMv6 based device.

    I successfully installed and ran the game on both compatible devices.
     
    Last edited: May 18, 2012
    MrMattyMoses likes this.
  7. Swearsoft

    Swearsoft

    Joined:
    Mar 19, 2009
    Posts:
    1,632
    Downloaded installed and started on Nexus S.
     
    MrMattyMoses likes this.
  8. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    Thanks for checking, at least I know others can actually see it.

    Here is how I see it:

    $1.png

    But looking at what I understand is the list of devices the app should run on, I see that listed:
    $2.png

    A bug with Google Play I may have to contact google for?

    I find this confusing... just for reference here is my manifest code (there are references for Billing in there for a future feature to allow the user to "upgrade" out of ads):

    Code (csharp):
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest
    3.     xmlns:android="http://schemas.android.com/apk/res/android"
    4.     package="com.unity3d.player"
    5.     android:installLocation="preferExternal"
    6.     android:versionCode="1"
    7.     android:versionName="1.0">
    8.     <supports-screens
    9.         android:smallScreens="true"
    10.         android:normalScreens="true"
    11.         android:largeScreens="true"
    12.         android:xlargeScreens="true"
    13.         android:anyDensity="true"/>
    14.  
    15.     <application
    16.         android:icon="@drawable/app_icon"
    17.         android:label="@string/app_name"
    18.         android:debuggable="true">
    19.         <activity android:name="com.unity3d.player.UnityPlayerProxyActivity"
    20.                   android:label="@string/app_name"
    21.                   android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    22.             <intent-filter>
    23.                 <action android:name="android.intent.action.MAIN" />
    24.                 <category android:name="android.intent.category.LAUNCHER" />
    25.             </intent-filter>
    26.         </activity>
    27.         <activity android:name="com.unity3d.player.UnityPlayerActivity"
    28.                   android:label="@string/app_name"
    29.                   android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    30.         </activity>
    31.         <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
    32.                   android:label="@string/app_name"
    33.                   android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    34.             <meta-data android:name="android.app.lib_name" android:value="unity" />
    35.             <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    36.         </activity>
    37.         <activity android:name="com.unity3d.player.VideoPlayer"
    38.                   android:label="@string/app_name"
    39.                   android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    40.         </activity>
    41.        
    42.         <!-- ACTIVITIES -->
    43.         <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    44.  
    45.         <!-- META-DATA -->
    46.         <service android:name="com.prime31.billing.BillingService" />
    47.         <receiver android:name="com.prime31.billing.BillingReceiver">
    48.         <intent-filter>
    49.         <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
    50.         <action android:name="com.android.vending.billing.RESPONSE_CODE" />
    51.         <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
    52.         </intent-filter>
    53.         </receiver>
    54.  
    55.        
    56.        
    57.     </application>
    58.  
    59.  
    60.    
    61.    
    62.    
    63.     <!-- PERMISSIONS -->
    64.         <uses-permission android:name="android.permission.INTERNET" />
    65.         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    66.         <receiver android:name="com.google.ads.InstallReceiver" android:exported="true">
    67.         <intent-filter>
    68.         <action android:name="com.android.vending.INSTALL_REFERRER" />
    69.         </intent-filter>
    70.         </receiver>
    71.        
    72.         <uses-permission android:name="com.android.vending.BILLING" />
    73.    
    74. </manifest>
    75.  
     
  9. Luke-Houlihan

    Luke-Houlihan

    Joined:
    Jun 26, 2007
    Posts:
    303
    It says it's compatible with my Droid X.
     
    MrMattyMoses likes this.
  10. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    I'm starting to think it's just an error in how the device is registered at Google. Looking at the message I get to buy, it says the device is called "Samsung YP-G1", but the list of "supported devices" calls it "Galaxy Player (YP-G1)"

    Sent a support request to Google and see what they say.

    Edit: although then again... I can download a lot of other apps that also require the sam permissions, I think.... /shrug
     
  11. henry96

    henry96

    Joined:
    Sep 28, 2011
    Posts:
    582
    It can be downloaded on HTC Desire. I didn't download it because the file size is way too high for HTC Desire.
     
  12. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    OK, I got finally a reply from Google! Seems the issue is with me having enabled Copy Protection, in conjunction with some issues with the rom version (they seem to think I'm running a custom Rom but I think this is more of an issue to deal with Samsung.)

    Now, this is a free app, so I may as well go in there and turn off the copy protection, but they tell me that copy protection is going away anyways. What if i was selling my game? They recommend I use the new licensing service... does Unity automatically handles this or it's something I have to code myself?

    Actually, is the licensing thing even about piracy? Or is it just a way to prevent copying from one autorized device to another authorized device?
     
    MrMattyMoses likes this.
  13. Dipsilala

    Dipsilala

    Joined:
    Jun 6, 2012
    Posts:
    2
    I've got the same problem.

    I can't find my own app in Google Play on the Samsung Galaxy SII (Android 4.0.3) which I've used as a Developer Console so I KNOW it should be compatible.



    On my wife's Galaxy S (Android 3+) there's no problem.:confused: and I've never even touched the Copy Protection.

    The link to Google Play: https://play.google.com/store/apps/details?id=com.Dipsilala.Ztampah
     
    Last edited: Jun 7, 2012
  14. shaderbytes

    shaderbytes

    Joined:
    Nov 11, 2010
    Posts:
    900
    Dipsilala I see the same thing for my device on your link "This app is incompatible with your Samsung GT-I9100." .. same thing as with Tharsman's game .. I am running a custom ROM on my device , but outside of these two games ive never had a problem with compatibility on any other games ive previewed or downloaded. I hope there is a simple solution to the problem.
     
  15. Dipsilala

    Dipsilala

    Joined:
    Jun 6, 2012
    Posts:
    2
    Thank you Tictox for trying.

    My wife's Galaxy S seems to be the only device that is compatible with the app.

    printscreen Google.Play:


    It is my first upload so it might as well be something stupid. Anyway, I've waisted two whole days on this issue and I'm on the verge of simply giving up.

    Is there a Unity AndroidManifest.xml somewhere that's guaranteed to work?

    ------------------
    Update:
    In my case it was just the wrong texture compression. Galaxy S (and tab) need a pvrtc compression while the Galaxy S II needs a ETC1 compression... At least, that's what I make of it.
     
    Last edited: Jun 12, 2012
    MrMattyMoses likes this.
  16. Tseng

    Tseng

    Joined:
    Nov 29, 2010
    Posts:
    1,217
    That happens when you don't read the the text in red -_-

    Google warns developers for years now NOT to use the copy protection because it's deprecated and not effective. That "copy protection" just installs the games in a different folder (/data/app-private/ instead of /data/app) this prevents non-rooted user to access it, but nothing else. Root users have access to everything and the feature is causing issues.

    By failing to read, you caused some problems to the users of your app, i.e. after chaning copy protection, the App can not be updated anymore until the user uninstalls the game and downloads it again. That's because chaning of the copy protection option forces the game to be installed with a different user id, but the already existing folder exists with the old user and the new one attempts to access it which it can't (new app has new user).

    Yes it is, but you must implement it yourself. Dunno what and what not Unity3D does there, but usually (in traditional Android Apps) you implement an LVL service where you can also decide what happens when the verification fails.

    a) You show a message and close the game (bad)
    b) You can cache the license so the user can play it even when offline
    c) You can run the game with limited features when the verification fails
    d) You can slowly degenerate (make it slowly unplayable) the game on a failed verification - Which is popular method to reduce piracy

    LVL us ised for three thing
    a) check if a user has purchased your game (only with paid apps of course)
    b) in-app purchase
    c) requesting download files (the 2x2 GB files you can attach to your game)
     
  17. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    I read the text. But there was no date-stamp on that message and I assumed it was a new thing (who on earth would leave such a disclaimer for years there and not act on it or let people know the date of the message? Anyone that sees it for the first time will think it's new because it is what you quickly learn to expect from Google's dev console: new changes show up for a limited time or until dismissed in attention grabbing colors)

    They also didn't clarify or provide a link to how it works (other than offering a link to the alternative). As far as I knew as a new developer, unchecking it meant I would have no DRM and people were able to redistribute the app (I was originally going to charge for the app.)

    If this was implemented that far ago, they should not even be offering the option for new apps.
     
    MrMattyMoses likes this.
  18. Tseng

    Tseng

    Joined:
    Nov 29, 2010
    Posts:
    1,217
    Because it's always valid. It tells you that the feature is deprecated. Deprecated means, don't use it, it will be removed in the future and then your stuff won't work anymore.

    Unity has many deprecated APIs too. It is just a hint for the developer to remove/replace them as soon as possible or a future update may break your game.

    No, that's why they link to LVL, which is the new way to implement copy protection (and in-app purchases). Googleing for "Android LVL" gives you tons of links for it and first of all the links leads to the Android Developer Reference at http://developer.android.com/guide/market/licensing/index.html explaining the system in detail.

    It's there for historical reasons. There are still popular Apps which were released before copy protection was deprecated. As I've stated above, it's impossible to simply switch from copy protected to non-copy protected without uninstalling the app. Most users don't know that they have to do this and after an update where the copy protection option was changed, their Apps will crash.

    This in turn would lead most users to give the App in question bad ratings, which is the reason why many developers still haven't turned it off, despite the fact that it as been deprecated over 2 years ago. For this reason the feature must be there until >=99% of all developers have slowly mitigated their old "Copy protected" Apps to "non-copy protected" Apps and this is a lengthly progress.

    Developers have to update their copy protected Apps, give users a warning about the upcoming breaking change, give them a few months time so 99% of the users get this version and understand the warning. Then you can update a non-copy protected version (or upload it with a different package name, though it's difficult with paid Apps because you have to repurchase them) and again wait for months until 99% of the users have switched to the new version.

    This needs to be repeated for all of the 100.000s of Apps who had that enabled before it was deprecated.

    You just obviously have no idea about programming APIs.

    When S*** happens and you have some very bad stuff in your API, it's very hard and lengthly process (which can take years) before you can actually remove a bad API call. And during that time you have to support it, because there may be 100.000s of users who use it and simply removing would break 100.000s of Apps. Removing such stuff only works in Beta, but in a released and wide spread APIs you can't do that.

    The copy protection was a joke to begin with and it would have been better to have no copy protection at all at the beginning, then such a broken/useless system. Google did a mistake, now they have to "carry it" with them until a majority of the Apps is mitigated to LVL or w/o copy protection. Nothing you or Google can change.

    Same for Unity, Unity will have to carry out bad designed API because of UnityScript paradigm/"simplicity" and they can't remove UnityScript even if they wanted. It's here, it's used. Removing it breaks half of peoples projects
     
    MrMattyMoses likes this.
  19. Starsman Games

    Starsman Games

    Joined:
    Jan 30, 2011
    Posts:
    2,152
    I think you are taking this way too personal. Google did not make this clear for anyone that just joins the party. They may had made press releases when it came out, may have sent out emails, but anyone that joins in just sees a message that does not warn about all the negatives you listed here.

    You did a good job at listing the issues, and I thank you for that, but fact is Google didn't.

    I said: for new apps. It should not be an option for new apps.

    Would be appreciated if you didn't jump into insulting me. To tell a programmer that he does not have any idea about APIs IS an insult.

    I never asked for the API to be entirely removed, just for the checkbox not to be visible in the Dev Control panel while registering new apps. Retaining it just makes it harder to eventually remove the API (as they say they will.)



    I cant, but Google can stop offering it. They can also document it more clearly for new developers.
     
    Last edited: Jun 9, 2012
  20. Tseng

    Tseng

    Joined:
    Nov 29, 2010
    Posts:
    1,217
    A deprecation hint is enough tot ell you not to use it unless you know what you are doing and the consequences of it.

    How comes 100.000 other developers read and understood it and you didn't? If you don't understand something, you do research instead of blindly checking or unchecking a certain options you don't understand.

    Another issue with it is, it was introduced at a time before Android had an A2SD (App2SD) feature, which allowed Apps to be installed on the SD card. Since the old "copy protection" word by placing the app file in an folder where only the OS it self has access (and required an ExtFS partition) it also made it impossible to install such Apps to SD Card (the SD card is formated in FAT32 which doesn't support the Linux access permissions).

    For that reason your Game took for example around 50 MB of the internal HTC Desire memory and Smartphones of this "age" usually have less than 100 MB internal memory available for apps (iirc a factory ready HTC Desire with no apps downloaded as something around 60-80 MB free. When you install 5-10 apps this goes down pretty fast).

    It's no insult (maybe you may want to re-read or learn what insult actually means), it's a conclusion.

    A prime example is .NET's Delegate and MulticastDelegate. Delegates were originally meant to just hold one single delegate/event while MulticastDelegate could register multiple delegates/events in .NET 1.0. After the release they realized that makes no sense, but Delegate wasn't deprecated but both of them actually do the same now (both are multicast)
     
  21. amit-chai

    amit-chai

    Joined:
    Jul 2, 2012
    Posts:
    80
    Hi, well this is an old thread but ive got the same problem with my app. it is shown on some devices and invisible to other. did u found a solution for this?
     
  22. JoniD89

    JoniD89

    Joined:
    Mar 22, 2020
    Posts:
    4
    I had this same problem and for me the issue was the Minimum API Level. I had the minimum API too high, which means some devices were not able to use the app. In Unity go to: Player Settings > Other Settings > Identification >

    Minimum API Level: This should be set to the minimum which for me Android 4.4 'KitKat' (API level 19)
    Maximum API Level: This should be set to the maximum according to Google, see link https://developer.android.com/distribute/best-practices/develop/target-sdk
     
Thread Status:
Not open for further replies.