1

I am using adb (latest one) from Android SDK Platform Tools. I also installed the adb driver from Intel USB Drivers for Android Devices. All installation done on two computer, one with Windows 8.1, another with Windows 10. The phone being tested for this backup experiment is TP-Link Neffos X1 Lite.

I am using the commands given by Izzy as described in Is it possible to backup and restore an app with data via ADB? to backup the game Jetpack Joyride.

adb backup -f myapp.ab -apk com.myapp # backup on one device

But, I end up with a 1KB backup file (not 0 KB or 41 bytes that Izzy mentioned there).

I tested with different modes (charging, MIDI, MTP and PTP) with same result of 1KB backup file.

Here is the manifest of the app:

<?xml version="1.0" encoding="UTF-8"?>
<manifest
    versionCode='50199503'
    versionName='1.14.2'
    installLocation='0'
    compileSdkVersion='28'
    compileSdkVersionCodename='9'
    package='com.halfbrick.jetpackjoyride'
    platformBuildVersionCode='28'
    platformBuildVersionName='9'>
  <uses-sdk
      minSdkVersion='16'
      targetSdkVersion='26'
      xlargeScreens='true'>
  </uses-sdk>
  <uses-feature
      glEsVersion='0x00020000'>
  </uses-feature>
  <uses-feature
      name='android.hardware.touchscreen'
      required='true'>
  </uses-feature>
  <uses-permission
      name='android.permission.INTERNET'>
  </uses-permission>
  <uses-permission
      name='android.permission.ACCESS_NETWORK_STATE'>
  </uses-permission>
  <uses-permission
      name='android.permission.WAKE_LOCK'>
  </uses-permission>
  <uses-permission
      name='com.android.vending.BILLING'>
  </uses-permission>
  <uses-permission
      name='android.permission.ACCESS_WIFI_STATE'>
  </uses-permission>
  <uses-permission
      name='com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE'>
  </uses-permission>
  <uses-permission
      name='com.google.android.c2dm.permission.RECEIVE'>
  </uses-permission>
  <application
      theme='@res/0x7F0D0165'
      label='@res/0x7F0A00DB'
      icon='@res/0x7F030001'
      name='com.halfbrick.mortar.MortarApplication'
      backupAgent='com.halfbrick.mortar.SharedPrefBackupAgent'
      hardwareAccelerated='true'
      supportsRtl='true'
      resizeableActivity='false'
      appComponentFactory='android.support.v4.app.CoreComponentFactory'>
    <meta-data
        name='io.fabric.ApiKey'
        value='3c59abf6040024f2e259d458cc26f0e7f1e305b7'>
    </meta-data>
    <meta-data
        name='com.google.firebase.messaging.default_notification_icon'
        resource='@res/0x7F0200C8'>
    </meta-data>
    <meta-data
        name='com.google.firebase.messaging.default_notification_channel_id'
        value='@res/0x7F0A00F8'>
    </meta-data>
    <activity
        theme='@res/0x7F0D0172'
        name='com.halfbrick.mortar.MortarGameActivity'
        launchMode='2'
        screenOrientation='6'
        configChanges='0x40000FFF'
        windowSoftInputMode='0x00000003'>
      <intent-filter>
        <action
            name='android.intent.action.VIEW'>
        </action>
        <category
            name='android.intent.category.DEFAULT'>
        </category>
        <category
            name='android.intent.category.BROWSABLE'>
        </category>
        <data
            scheme='jetpack'>
        </data>
      </intent-filter>
      <intent-filter
          autoVerify='true'>
        <action
            name='android.intent.action.VIEW'>
        </action>
        <category
            name='android.intent.category.DEFAULT'>
        </category>
        <category
            name='android.intent.category.BROWSABLE'>
        </category>
        <data
            scheme='http'
            host='jetpackjoyride.page.link'>
        </data>
        <data
            scheme='https'
            host='jetpackjoyride.page.link'>
        </data>
      </intent-filter>
      <meta-data
          name='com.halfbrick.mortar.GCMSenderId'
          value='id=897786220322'>
      </meta-data>
      <intent-filter>
        <action
            name='android.intent.action.MAIN'>
        </action>
      </intent-filter>
    </activity>
    <receiver
        name='com.appsflyer.MultipleInstallBroadcastReceiver'
        exported='true'>
      <intent-filter>
        <action
            name='com.android.vending.INSTALL_REFERRER'>
        </action>
      </intent-filter>
    </receiver>
    <meta-data
        name='com.google.android.gms.version'
        value='@res/0x7F0F0008'>
    </meta-data>
    <receiver
        name='com.google.android.gms.measurement.AppMeasurementReceiver'
        enabled='true'
        exported='false'>
    </receiver>
    <receiver
        name='com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver'
        permission='android.permission.INSTALL_PACKAGES'
        enabled='true'
        exported='true'>
      <intent-filter>
        <action
            name='com.android.vending.INSTALL_REFERRER'>
        </action>
      </intent-filter>
    </receiver>
    <service
        name='com.google.android.gms.measurement.AppMeasurementService'
        enabled='true'
        exported='false'>
    </service>
    <service
        name='com.google.android.gms.measurement.AppMeasurementJobService'
        permission='android.permission.BIND_JOB_SERVICE'
        enabled='true'
        exported='false'>
    </service>
    <activity
        theme='@res/0x01030010'
        name='com.google.android.gms.common.api.GoogleApiActivity'
        exported='false'>
    </activity>
    <activity
        theme='@res/0x01030010'
        name='com.google.android.gms.auth.api.signin.internal.SignInHubActivity'
        exported='false'
        excludeFromRecents='true'>
    </activity>
    <service
        name='com.google.android.gms.auth.api.signin.RevocationBoundService'
        permission='com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION'
        exported='true'>
    </service>
    <activity
        theme='@res/0x0103000F'
        name='com.google.android.gms.ads.AdActivity'
        exported='false'
        configChanges='0x00000FB0'>
    </activity>
    <provider
        name='android.support.v4.content.FileProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.AndroidShareFileProvider'
        grantUriPermissions='true'>
      <meta-data
          name='android.support.FILE_PROVIDER_PATHS'
          resource='@res/0x7F080001'>
      </meta-data>
    </provider>
    <meta-data
        name='com.facebook.sdk.ApplicationId'
        value='@res/0x7F0A00FC'>
    </meta-data>
    <meta-data
        name='com.facebook.sdk.AutoLogAppEventsEnabled'
        value='false'>
    </meta-data>
    <meta-data
        name='com.google.android.gms.games.APP_ID'
        value='@res/0x7F0A0103'>
    </meta-data>
    <activity
        name='com.ironsource.sdk.controller.ControllerActivity'
        configChanges='0x00000480'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x0103000F'
        name='com.ironsource.sdk.controller.InterstitialActivity'
        configChanges='0x00000480'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x0103000F'
        name='com.ironsource.sdk.controller.OpenUrlActivity'
        configChanges='0x00000480'
        hardwareAccelerated='true'>
    </activity>
    <activity
        name='com.adcolony.sdk.AdColonyInterstitialActivity'
        configChanges='0x000004A0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        name='com.adcolony.sdk.AdColonyAdViewActivity'
        configChanges='0x000004A0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        name='com.applovin.adview.AppLovinInterstitialActivity'>
    </activity>
    <activity
        name='com.applovin.adview.AppLovinConfirmationActivity'>
    </activity>
    <activity
        theme='@res/0x01030011'
        name='com.chartboost.sdk.CBImpressionActivity'
        excludeFromRecents='true'
        configChanges='0x000004A0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x01030007'
        name='com.unity3d.services.ads.adunit.AdUnitActivity'
        configChanges='0x40000FFF'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x01030011'
        name='com.unity3d.services.ads.adunit.AdUnitTransparentActivity'
        configChanges='0x40000FFF'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x01030011'
        name='com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity'
        configChanges='0x40000FFF'
        hardwareAccelerated='false'>
    </activity>
    <activity
        theme='@res/0x01030007'
        name='com.unity3d.services.ads.adunit.AdUnitSoftwareActivity'
        configChanges='0x40000FFF'
        hardwareAccelerated='false'>
    </activity>
    <activity
        name='com.facebook.ads.AudienceNetworkActivity'
        configChanges='0x000004A0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x01030007'
        label='HyprMX SDK'
        name='com.hyprmx.android.sdk.activity.HyprMXOfferViewerActivity'
        launchMode='1'
        configChanges='0x00000DA0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        theme='@res/0x01030007'
        name='com.hyprmx.android.sdk.activity.HyprMXRequiredInformationActivity'
        configChanges='0x00000DA0'>
    </activity>
    <activity
        theme='@res/0x01030007'
        name='com.hyprmx.android.sdk.activity.HyprMXNoOffersActivity'
        configChanges='0x00000DA0'>
    </activity>
    <activity
        theme='@res/0x01030007'
        name='com.hyprmx.android.sdk.videoplayer.HyprMXVideoPlayerActivity'
        configChanges='0x00000DA0'
        hardwareAccelerated='true'>
    </activity>
    <activity
        name='com.ironsource.adapters.hyprmx.MediationHMXActivity'
        configChanges='0x40000FB4'>
    </activity>
    <receiver
        name='com.halfbrick.mortar.StoreIntentReceiver'
        exported='true'>
      <intent-filter>
        <action
            name='com.android.vending.INSTALL_REFERRER'>
        </action>
      </intent-filter>
    </receiver>
    <receiver
        name='com.halfbrick.mortar.LocalNotificationReceiver'
        process=':remote'>
    </receiver>
    <service
        name='com.halfbrick.mortar.FirebaseMessagingService'>
      <intent-filter>
        <action
            name='com.google.firebase.MESSAGING_EVENT'>
        </action>
      </intent-filter>
    </service>
    <activity
        name='com.halfbrick.mortar.MortarGameLauncherActivity'>
      <intent-filter>
        <action
            name='android.intent.action.MAIN'>
        </action>
        <category
            name='android.intent.category.LAUNCHER'>
        </category>
      </intent-filter>
    </activity>
    <activity
        name='com.halfbrick.mortar.UserDataConsentActivity'
        launchMode='2'
        screenOrientation='6'>
    </activity>
    <activity
        theme='@res/0x01030010'
        name='com.android.billingclient.api.ProxyBillingActivity'
        configChanges='0x000005B0'>
    </activity>
    <service
        name='com.google.firebase.components.ComponentDiscoveryService'
        exported='false'>
      <meta-data
          name='com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar'
          value='com.google.firebase.components.ComponentRegistrar'>
      </meta-data>
      <meta-data
          name='com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar'
          value='com.google.firebase.components.ComponentRegistrar'>
      </meta-data>
      <meta-data
          name='com.google.firebase.components:com.google.firebase.firestore.FirestoreRegistrar'
          value='com.google.firebase.components.ComponentRegistrar'>
      </meta-data>
      <meta-data
          name='com.google.firebase.components:com.google.firebase.functions.FunctionsRegistrar'
          value='com.google.firebase.components.ComponentRegistrar'>
      </meta-data>
      <meta-data
          name='com.google.firebase.components:com.google.firebase.iid.Registrar'
          value='com.google.firebase.components.ComponentRegistrar'>
      </meta-data>
    </service>
    <activity
        theme='@res/0x01030010'
        name='com.google.firebase.auth.internal.FederatedSignInActivity'
        permission='com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN'
        exported='true'
        excludeFromRecents='true'
        launchMode='2'>
    </activity>
    <service
        name='com.google.firebase.messaging.FirebaseMessagingService'
        exported='true'>
      <intent-filter
          priority='-500'>
        <action
            name='com.google.firebase.MESSAGING_EVENT'>
        </action>
      </intent-filter>
    </service>
    <receiver
        name='com.google.firebase.iid.FirebaseInstanceIdReceiver'
        permission='com.google.android.c2dm.permission.SEND'
        exported='true'>
      <intent-filter>
        <action
            name='com.google.android.c2dm.intent.RECEIVE'>
        </action>
      </intent-filter>
    </receiver>
    <service
        name='com.google.firebase.iid.FirebaseInstanceIdService'
        exported='true'>
      <intent-filter
          priority='-500'>
        <action
            name='com.google.firebase.INSTANCE_ID_EVENT'>
        </action>
      </intent-filter>
    </service>
    <provider
        name='com.google.firebase.provider.FirebaseInitProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.firebaseinitprovider'
        initOrder='100'>
    </provider>
    <provider
        name='com.crashlytics.android.CrashlyticsInitProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.crashlyticsinitprovider'
        initOrder='90'>
    </provider>
    <provider
        name='com.helpshift.support.providers.HelpshiftFileProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.helpshift.fileprovider'
        grantUriPermissions='true'>
      <meta-data
          name='android.support.FILE_PROVIDER_PATHS'
          resource='@res/0x7F080002'>
      </meta-data>
    </provider>
    <activity
        theme='@res/0x7F0D000E'
        name='com.helpshift.support.activities.ParentActivity'>
    </activity>
    <activity
        theme='@res/0x7F0D0108'
        name='com.helpshift.support.HSReview'
        configChanges='0x00000480'>
    </activity>
    <activity
        theme='@res/0x7F0D000E'
        name='com.helpshift.campaigns.activities.ParentActivity'>
    </activity>
    <activity
        theme='@res/0x01030010'
        name='com.helpshift.campaigns.activities.NotificationActivity'
        taskAffinity=''
        excludeFromRecents='true'
        launchMode='2'
        configChanges='0x00002484'
        noHistory='true'>
    </activity>
    <service
        name='com.helpshift.campaigns.services.NotificationService'
        exported='false'>
    </service>
    <activity
        theme='@res/0x7F0D021B'
        name='com.facebook.FacebookActivity'
        configChanges='0x000005B0'>
    </activity>
    <activity
        name='com.facebook.CustomTabMainActivity'>
    </activity>
    <activity
        name='com.facebook.CustomTabActivity'>
    </activity>
    <provider
        name='com.facebook.marketing.internal.MarketingInitProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.MarketingInitProvider'>
    </provider>
    <provider
        name='com.facebook.internal.FacebookInitProvider'
        exported='false'
        authorities='com.halfbrick.jetpackjoyride.FacebookInitProvider'>
    </provider>
    <receiver
        name='com.facebook.CurrentAccessTokenExpirationBroadcastReceiver'
        exported='false'>
      <intent-filter>
        <action
            name='com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED'>
        </action>
      </intent-filter>
    </receiver>
  </application>
</manifest>

As advised by Firelord, the following command was executed.

adb logcat -v long > backup_log.txt

and something strange appear as follows:

[ E/BackupRestoreConfirmation ]
Unable to communicate with mount service: no permission to access the crypt keeper: Neither user 10004 nor current process has android.permission.STORAGE_INTERNAL.
  • ALLOW_BACKUP:NO in the manifest of the app. Developers can lock their apps against being backed-up, unfortunately. I usually mention that along the 41 byte files – as that's the most likely cause for them. – Izzy Feb 12 at 7:56
  • @Izzy, I include the manifest of the app to the question. I could not find the ALLOW_BACKUP. Is there other file that I can search to get this value? – user275517 Feb 12 at 9:06
  • Hmm, according to the Android documentation, if it's not specified, then "allow backup" is true by default though. However, now that we know the game, perhaps How can I backup Jetpack Joyride save games on Android? might be related? – Andrew T. Feb 12 at 10:14
  • @AndrewT. The Helium Backup could not backup on the mentioned phone and I don't want to create HalfBrick Profile. I just want to backup and play offline. – user275517 Feb 12 at 11:07
  • Strange, but I agree with @AndrewT. here: AFAIK it defaults to TRUE if not set. So no idea what goes wrong here. Logcat might give a clue. – Izzy Feb 12 at 20:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.