2016-03-19 10 views
0

Ich habe eine App im Play Store Build mit Titanium veröffentlicht, aber zeigt eine wirklich geringe Anzahl von kompatiblen Geräten und ich kann den Grund nicht herausfinden.Titanium App geringe Anzahl von unterstützten Geräten im Play Store

Die App ist für eine minimale Version von SDK 14 gebaut und ich habe keine seltsamen Anforderungen an Berechtigungen. Hier wird die AndroidManifest.xml von Titan erzeugt:

<?xml version="1.0" encoding="UTF-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.proximityaware.montrose" android:versionCode="23" android:versionName="2.0.30"> 
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23"/> 
    <application android:icon="@drawable/appicon" android:label="GoMontrose" android:name="GomontroseApplication" android:debuggable="false" android:theme="@style/Theme.AppBlue"> 
     <activity android:name=".GomontroseActivity" android:label="@string/app_name" android:theme="@style/Theme.Titanium" android:configChanges="keyboardHidden|orientation|screenSize"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="org.appcelerator.titanium.TiActivity" android:screenOrientation="portrait"/> 
     <activity android:name="org.appcelerator.titanium.TiTranslucentActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@style/Theme.AppCompat.Translucent"/> 
     <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity" android:configChanges="screenSize"/> 
     <activity android:name="ti.modules.titanium.media.TiCameraActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@style/Theme.AppCompat.Translucent.NoTitleBar.Fullscreen"/> 
     <service android:enabled="true" android:exported="true" android:isolatedProcess="false" android:label="iBeacon" android:name="com.radiusnetworks.ibeacon.service.IBeaconService"/> 
     <service android:enabled="true" android:name="com.radiusnetworks.ibeacon.IBeaconIntentProcessor"> 
      <meta-data android:name="background" android:value="true"/> 
      <intent-filter android:priority="1"> 
       <action android:name="com.proximityaware.montrose.DID_RANGING"/> 
       <action android:name="com.proximityaware.montrose.DID_MONITORING"/> 
      </intent-filter> 
     </service> 
     <service android:name="nl.vanvianen.android.gcm.GCMIntentService"/> 
     <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="HIDDEN"/> 
     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/> 
     <receiver android:name="nl.vanvianen.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
       <category android:name="android.intent.category.HOME"/> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE"/> 
       <category android:name="com.proximityaware.montrose"/> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION"/> 
       <category android:name="com.proximityaware.montrose"/> 
      </intent-filter> 
     </receiver> 
    </application> 
    <uses-permission android:name="android.permission.BLUETOOTH"/> 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.VIBRATE"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.READ_CALENDAR"/> 
    <uses-permission android:name="android.permission.WRITE_CALENDAR"/> 
    <uses-permission android:name="com.proximityaware.montrose.permission.MAPS_RECEIVE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> 
    <uses-permission android:name="com.proximityaware.montrose.permission.C2D_MESSAGE"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 
    <uses-permission android:name="android.permission.READ_CONTACTS"/> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
    <uses-feature android:name="android.hardware.camera"/> 
    <uses-feature android:name="android.hardware.camera.autofocus"/> 
    <uses-feature android:name="android.hardware.camera.flash"/> 
    <permission android:name="com.proximityaware.montrose.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> 
    <permission android:name="com.proximityaware.montrose.permission.C2D_MESSAGE" android:protectionLevel="signature"/> 
</manifest> 

ich die app in mehreren Geräten getestet, in dem Play Store sagt nicht kompatibel ist, aber wenn Sie die App herunterladen, es funktioniert mit allen Funktionen.

Antwort

1

Der Standardwert für <uses-permission> ist required. Sehen Sie also, ob Sie einige mit required="false" überschreiben können, die Sie nicht unbedingt benötigen. Dann in Ihrem Code stellen Sie sicher, dass Sie für die Funktion mit Methoden wie hasCompas testen.

+0

Ich habe versucht mit '' und ' 'aber es wird ignoriert und die AndroidManifest.xml zeigt nicht die Option ignore an. – ulizama

+0

Bitte stellen Sie sicher, dass Sie zuerst 'ti clean', dann Build und überprüfen Sie, ob die' 'tatsächlich nicht das Attribut' required' enthält, das Sie in 'tiapp.xml' hinzugefügt haben. Wenn dies der Fall ist, dann sieht das für mich wie eine Verbesserung aus. Bitte prüfen Sie, ob es bereits beim [Appcelerator JIRA] angefordert wurde (https://jira.appcelerator.org/). Wenn dies nicht der Fall ist, erstellen Sie ein Ticket, verlinken Sie auf diese Frage, geben Sie aber auch eine vollständige Beschreibung im Ticket an. Vergessen Sie nicht, hier einen Link zum Ticket zu setzen, damit andere es mit ansehen können. –

1

Als Antwort auf meine eigene Frage. Per Android-Dokumentation zur Filterung von Berechtigungen: http://developer.android.com/google/play/filters.html

Wenn Sie eine <uses-permission> verwenden, wird automatisch die richtige <uses-feature> festgelegt. Sie müssen also die richtige <uses-feature> NICHT erforderlich machen. Das hat mein Problem gelöst.

+0

Dies wäre eine gute Abhilfe, aber ich möchte immer noch das Attribut 'required' von' uses-permissions' konfigurieren. –