Search code examples
androidgoogle-playapportable

After apportable conversion: This item is not compatible with your device


I'm used www.apportable.com tool(Free version) to convert my Cocos2d IOS project to Android APK file. Conversion was successful after little tweak in code. Tested on my Nexus 7 - works. Uploaded on Google Play(in APK section is compatible with Nexus 7), now can't install it from Google Play receiving following message:

Asus Nexus 7 This item is not compatible with your device.

Any suggestions?

<?xml version="1.0" encoding="utf-8"?>
<manifest android:sharedUserId="com.estoty.SpaceThimblesHD" android:versionCode="1370237775" android:versionName="1.9" android:installLocation="auto" package="com.estoty.SpaceThimblesHD"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-gl-texture android:name="GL_IMG_texture_compression_pvrtc" />
    <uses-permission android:name="android.permission.INTERNET" />
    <supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" />
    <application android:theme="@style/FullScreenActivity" android:label="@string/app_name" android:icon="@drawable/icon" android:name="com.apportable.app.VerdeApplication" android:hasCode="true" android:debuggable="false" android:hardwareAccelerated="true" android:largeHeap="false">
        <meta-data android:name="android.app.libs" android:value="v cxx System objc ffi pthread_workqueue dispatch Foundation BridgeKit OpenAL verde" />
        <meta-data android:name="android.app.lib_name" android:value="verde" />
        <meta-data android:name="android.app_name" android:value="Space Cups HD" />       
        <meta-data android:name="apportable.splash_screen_type" android:value="letterbox" />
        <meta-data android:name="apportable.orientation" android:value="landscape" />
        <meta-data android:name="apportable.opengles.fast_color" android:value="true" />
        <activity android:label="@string/app_name" android:name="com.apportable.activity.VerdeActivity" android:launchMode="singleTask" android:screenOrientation="landscape" android:configChanges="locale|mcc|mnc|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:windowSoftInputMode="adjustPan">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="com.apportable.iap.BillingService" />
        <receiver android:name="com.apportable.iap.BillingReceiver">
            <intent-filter>
                <action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
                <action android:name="com.android.vending.billing.RESPONSE_CODE" />
                <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

Solution

  • The problem is caused by the line:

        <supports-gl-texture android:name="GL_IMG_texture_compression_pvrtc" />
    

    caused by regression in the SDK when we recently added software pvr support. It will be fixed in the next SDK revision.

    In the meantime, you can build a correct AndroidManifest.xml by editing .apportable/SDK/site_scons/android/mainifest.py as follows:

        diff --git a/site_scons/android/manifest.py b/site_scons/android/manifest.py
    index 7b87747..2731546 100644
    --- a/site_scons/android/manifest.py
    +++ b/site_scons/android/manifest.py
    @@ -68,9 +68,7 @@ def GenerateManifest(env, target):
         manifest += '          android:versionCode="' + Option(env, 'VERSION_CODE') + '"\n'
         manifest += '          android:versionName="' + Option(env, 'SHORT_VERSION') + '">\n'
    
    -    if env['TARGET_TEXTURE_FMT'] == 'pvr':
    -        manifest += '    <supports-gl-texture android:name="GL_IMG_texture_compression_pvrtc" />\n'
    -    elif env['TARGET_TEXTURE_FMT'] == 'atc':
    +    if env['TARGET_TEXTURE_FMT'] == 'atc':
             manifest += '    <supports-gl-texture android:name="GL_AMD_compressed_ATC_texture" />\n'
         elif env['TARGET_TEXTURE_FMT'] == 's3tc':
             manifest += '    <supports-gl-texture android:name="GL_EXT_texture_compression_s3tc" />\n'
    

    and then rebuilding the app to regenerate AndroidManifest.xml