-1

I have a problem with an application that I try to publish on the platform the Play Store. When I uploaded the .apk file I have seen that it is only compatible with 1 device. I have reviewed the file AndroidManifest.xml and I have not found anything that restricts the use in other device. The application takes the same permissions as any other similar application that I have published, and this other is compatible with more than 8000 devices. The only thing that is different is that in this new app I've added the service GCM with their required permissions, and the bitcoinj-0.12.3 library. What is the reason for which is not compatible with more devices? These are all the permissions that I have declared in the file AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.my.app" >
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.READ_CONTACTS" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <!--
        The following two permissions are not required to use
        Google Maps Android API v2, but are recommended.
   -->
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
   <!-- GCM PERMISSIONS -->
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
   <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
   <permission android:name="com.my.app.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
   <uses-permission android:name="com.my.app.permission.C2D_MESSAGE" />

   <application android:name="com.activeandroid.app.Application"
       android:allowBackup="true"
       android:icon="@drawable/launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       <meta-data android:name="AA_DB_NAME"
           android:value="app.db" />
       <meta-data android:name="AA_DB_VERSION"
           android:value="1" />
       <meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version" />
       <meta-data android:name="com.google.android.maps.v2.API_KEY"
           android:value="myAPI_KEY" />
       <activity android:name=".ui.SplashActivity"
           android:label="@string/app_name"
           android:screenOrientation="portrait" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
       <activity android:name=".ui.PendingActivity"
           android:label="@string/pending_activity"
           android:screenOrientation="portrait" >
       </activity>
       <activity android:name=".ui.OKActivity"
           android:label="@string/ok_activity"
           android:screenOrientation="portrait" >
       </activity>
       <activity android:name=".ui.KOActivity"
           android:label="@string/ko_activity"
           android:screenOrientation="portrait" >
       </activity>
       <activity android:name=".ui.InputActivity"
           android:label="@string/input_activity"
           android:parentActivityName=".ui.LoggedHomeActivity"
           android:screenOrientation="portrait" >
           <!-- Parent activity meta-data to support 4.0 and lower -->
           <meta-data android:name="android.support.PARENT_ACTIVITY"
               android:value=".ui.LoggedHomeActivity" />
       </activity>
       <activity android:name=".ui.LoggedHomeActivity"
           android:label="@string/app_name"
           android:screenOrientation="portrait"
           android:theme="@style/MyMaterialOwnTheme"
           android:windowSoftInputMode="adjustPan" >
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <category android:name="android.intent.category.BROWSABLE" />
               <data android:scheme="myapp" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <category android:name="android.intent.category.BROWSABLE" />
               <data android:scheme="bitcoin" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.SEND" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="text/*" />
           </intent-filter>
       </activity>
       <!-- [START gcm_receiver] -->
       <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
           android:exported="true"
           android:permission="com.google.android.c2dm.permission.SEND" >
           <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
            <category android:name="gcm.play.android.samples.com.gcmquickstart"/>
           </intent-filter>
       </receiver>
       <!-- [END gcm_receiver] -->
       <!-- [START gcm_listener] -->
       <service android:name=".gcm.NotificationService"
           android:exported="false" >
           <intent-filter>
              <action android:name="com.google.android.c2dm.intent.RECEIVE" />
           </intent-filter>
       </service>
       <!-- [END gcm_listener] -->
       <!-- [START instanceId_listener] -->
       <service android:name=".gcm.GCMIdentificationService"
          android:exported="false" >
             <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
             </intent-filter>
       </service>
       <!-- [END instanceId_listener] -->
       <service android:name=".gcm.RegistrationIntentService"
           android:exported="false" >
       </service>
   </application>

This a scrrenshot of analisis from Google Play: Google Play analisis

EDIT: I have read the post Android app is supported by 0 devices, but I haven't managed to fix anything

EDIT 2: Posted the complete AndroidManifest.xml file.

Community
  • 1
  • 1
Ander Acosta
  • 1,060
  • 1
  • 12
  • 25
  • 1
    Post your complete manifest – Arsal Imam Sep 17 '15 at 10:30
  • 1
    if you provide the complete information then some one can help you.. This is the technical world no one have enough time to search the problem in your question, So just provide the full information. As per given link by you just check you don't use the any system package name. – Zala Janaksinh Sep 17 '15 at 10:37
  • I had the same problem - bitcoinj is the culprit: http://stackoverflow.com/questions/22730620/bad-apk-when-using-bitcoinj-from-maven-central – ligi Sep 17 '15 at 10:38
  • Posted the complete AndroidManifest.xml – Ander Acosta Sep 17 '15 at 11:17

1 Answers1

1

you can prevent the problem by doing this in your build.gradle

compile 'com.google:bitcoinj:0.11.3@jar'
// the above @jar is important
// context: https://stackoverflow.com/questions/22730620/bad-apk-when- using-bitcoinj-from-maven-central

had the same with https://github.com/ligi/satoshiproof

Cause: View this answer

Community
  • 1
  • 1
ligi
  • 39,001
  • 44
  • 144
  • 244
  • You're right, bitcoinj uses native libraries, but the library that I intend to use is not very up-to-date. I downloaded the bitcoinj-13.1 library and I have modified the class where it uses the native libraries. – Ander Acosta Sep 18 '15 at 12:19