mar-v-in / BlankStore

An open source Google Play Store client.
133 stars 24 forks source link

Unable to find some apps #14

Open walrus543 opened 8 years ago

walrus543 commented 8 years ago

Hi, I can't find the reason why some apps can't be found with Blankstore. Last example: https://play.google.com/store/apps/details?id=com.tech401.convoy

I understand for paid apps of course but we should be able to download any free app, right?

Thank you.

mar-v-in commented 8 years ago

Google decides which apps to show on the server. The selection is mainly based on the checkin data (which is sent when generating the android id). This data includes things like android version, country, carrier, exact device definition, supported "features" (like nfc), ... App distributors can restrict their apps to be shipped to certain devices that have specific values in this data.

The exact checkin data associated with your android id depends on the tool you used to create the android id. A popular tool used to checkin is nviennot's "android-checkin", which will checkin a Galaxy Nexus device with Android 4.1. The Convoy app you linked seems to require at least Android 4.2 - which means that it won't be visible in play store to devices that seem to run 4.1.

If you want to use certain apps, you need to checkin with matching data. You might be able to change the checkin data sent by nviennot's tool, but you need to know the exact details.

If you are using microG GmsCore, it also contains a checkin client that will create an android id that is mostly maching the device you are actually using (with some identifying bits being randomized). You can check the android id of GmsCore using logcat (it is reported e.g. when registering for push messages) or by reading /data/data/com.google.android.gms/shared_preferences/checkin.xml. It might happen that you will only see the android id in decimal, BlankStore requires it to be in hexadecimal format.

IzzySoft commented 8 years ago

Note you can also use DummyDroid to generate those checkin data. This app makes it relatively easy to setup the data you wish to present, by providing it with a corresponding build.prop file.

walrus543 commented 8 years ago

I use microG GmsCore. At the beginning, I generated my Android ID thanks to nviennot's tool (xxxxxxxcc495e). From that time, I clean flashed my custom rom. At first boot, I restore my Android ID through Titanium Backup then I put my ID in Blankstore (xxxxxxxcc495e). I can update my apps flawlessly. It seems that I don't need to use the above tool after each clean flash, am I wrong?

The checkin.xml file says that my AndroidID is xxxxxxx45883, not the same as the Blankstore's one.

I own a Nexus 5 with Android 6.0.1 so I should be able to download the Convoy app. By the way, this app is just an example but several apps that I could download while using Gapps are no longer available with Blankstore (same Android version, same device).

IzzySoft commented 8 years ago

@Primokorn You don't need to generate a new ID after each flash, correct. But to reflect your Android version, after switching to a higher one you need to create a _corresponding_ ID. As @mar-v-in pointed out above, most tools are fixed to a specific configuration. With DummyDroid you can modify that:

  1. grap the build.prop from your freshly flashed device
  2. feed that to DummyDroid
  3. have it generate your new ID
  4. use that ID (with BlankStore) as long as you stick with the same Android version. Repeat from step 1 if you updated to a new version (or apps requiring that as minimal version won't be found).
walrus543 commented 8 years ago

DummyDroid will generate an ID as per my build.prop, ok. But does it really help to list all missing apps like Convoy? How do you launch DummyDroid? java -jar DummyDroid-1.1.jar ?

IzzySoft commented 8 years ago

@Primokorn Yes. And yes, as the Android version will also be taken from the build.prop it will reflect the version actually used on your device – and not be fixed to Android 4.1 as it's the case with checkin.jar. Of course you could also use any other build.prop e.g. of a very well supported device running a recent Android version.

walrus543 commented 8 years ago

@IzzySoft It doesn't help. I don't see My Convoy app. I filled out almost all fields...

IzzySoft commented 8 years ago

Then it might be the app really is incompatible with your device. Maybe check with the dev, something might have changed in the app's definition. If the dev tells you what is set, you could manipulate the build.prop used with DummyDroid to make it match.

walrus543 commented 8 years ago

There are other apps that I don't see, especially games, custom themes,...

mar-v-in commented 8 years ago

Some Android device details are not readable from build.prop, including supported OpenGL extensions (required by games) and custom features (required by themes).

I don't know how dummydroid works, but if there is public interest I'll build up a small utility app that generates an android id matching the device.

IzzySoft commented 8 years ago

@mar-v-in certainly cannot hurt if microG ships its own tool for that.

As for DummyDroid, the sources are available at Github. It reads all data from the build.prop you offer it, and lets you edit the data (change it, fill gaps), mostly via forms. For OpenGL there's ro.opengles.version from the build.prop; you can add more parameters manually if you know them. Finally, it asks you for login data, and then comes back with the GF android_id.

tecufanujacu commented 8 years ago

I tried using the android id in /data/data/com.google.android.gms/shared_preferences/checkin.xml, obviously I converted it from decimal to hexdecimal, I can login in the store and I can find every app but it crashes when I try to install everything.

For now I'm using the android id from DummiDroid, it works but I can't find a lot of apps.

Any idea?

IzzySoft commented 8 years ago

Are you using the latest version of BlankStore (v0.7.5 currently)?

tecufanujacu commented 8 years ago

Hi, IzzySoft, glad to see you, I just read you in the GadgetBridge github, anyway I'm using the latest version of BlanKstore, v0.7.5. The problem is that using the android id from /checkin.xml I can see all the apps available for my phone, for example TomTom GO, but when I try to install an app the BlankStore crashes, instead using the android id from DummiDroid I have not problems installing the apps but a lot of apps are missing for example I can't find TomTom GO.

IzzySoft commented 8 years ago

@tecufanujacu Ah, OK – that's a different case then. A (pastebin'd or attached) logcat might prove helpful then. As I wrote, I'm using the DummyDroid generated ID without any issues. May I also suggest to edit your initial post to include device, Android-Version, ROM (stock/custom/…), and the fact you're using the latest BlankStore – so the core data are where one looks first?

Speaking of Gadgetbridge: Somehow a related project, so the privacy-aware meet on both ends :) I hope they consider the addon idea (maybe you leave a thumbs-up on my corresponding post there as well to increase weight?) I really like the Pebble Time Steel – but without any network capabilities it's not even half as smart as it could be, and using the official Pebble app to get those capabilities would be a privacy nightmare.

tecufanujacu commented 8 years ago

I don't think that is a my problem, instead I think that this is a problem related to the android id and for this the small utility app that generates an android id matching the device provided by mar-v-in would be great.

In these posts I only wanted report that the android id in /checkin.xml crashes the blankstore.

tecufanujacu commented 8 years ago

I should have the id for a new smartphone but DummyDroid no longer works: https://github.com/onyxbits/dummydroid/issues/4

What can I do?

ArchangeGabriel commented 7 years ago

@mar-v-in A tool generating a matching ID (with eventually some random bytes as for μG) without having to register through μG would be very nice indeed!

ArchangeGabriel commented 7 years ago

Ping.