miércoles, 27 de agosto de 2014

Getting apk info to get info about app compatibiliy in Google Play ... and solving Google Maps library issue / Google Play incompatibility

With this info
http://www.androidpot.net/download-apk-files-from-playstore-to-pc
I am able to download apk
http://apps.evozi.com/apk-downloader/?id=es.openbank.apps
Opening it as a zip file, there is a file

AndroidManifest.xml
But it is encrypted ...
http://stackoverflow.com/questions/4191762/how-to-view-androidmanifest-xml-from-apk-file
Trying to get some info with aapt as one comment in previous link suggests

You can directly use aapt l -a name.apk command to see the manifest.xml.

Where to download just aapt:
http://stackoverflow.com/questions/5441172/download-of-just-android-aapt-for-debian-5-0

Running ok in ubuntu 14.04 64 bits (with libs for 32 bits already installed)
./aapt l -a es.openbank.apps.apk  
Partial output related with manifest and screen


Android manifest:
N: android=http://schemas.android.com/apk/res/android
  E: manifest (line=2)
    A: android:versionCode(0x0101021b)=(type 0x10)0x3
    A: android:versionName(0x0101021c)="2.2" (Raw: "2.2")
    A: package="es.openbank.apps" (Raw: "es.openbank.apps")
    E: supports-screens (line=7)
      A: android:anyDensity(0x0101026c)=(type 0x12)0xffffffff
      A: android:smallScreens(0x01010284)=(type 0x12)0xffffffff
      A: android:normalScreens(0x01010285)=(type 0x12)0xffffffff
      A: android:largeScreens(0x01010286)=(type 0x12)0xffffffff
      A: android:resizeable(0x0101028d)=(type 0x12)0x0
    E: uses-sdk (line=14)
      A: android:minSdkVersion(0x0101020c)=(type 0x10)0x8
    E: uses-permission (line=16)

...
Or even better
./aapt dump badging es.openbank.apps.apk
Partial output
supports-screens: 'small' 'normal' 'large'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240' '320'


So it is not density ...?

Another idea

$ adb install es.openbank.apps.apk
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
5401 KB/s (1277229 bytes in 0.230s)
    pkg: /data/local/tmp/es.openbank.apps.apk
Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]


Reviewing output of
./aapt l -a es.openbank.apps.apk  
I see this
      E: uses-library (line=49)
        A: android:name(0x01010003)="com.google.android.maps" (Raw: "com.google.android.maps")

And it seems logical, as app uses google maps ... and I do not have them installed
After installing google maps from Google Play, same message
So it seems to be a low level library outside apks...
https://groups.google.com/forum/#!topic/android-developers/eUbKzSJOwxo

Right, you have to consider Maps has a system-level library that can
be present or not present on devices.

 ...
Maps.jar is never added to your apk.


and this seems to be the solution

http://forums.crackberry.com/bb10-android-app-sideloading-f279/how-fix-any-android-app-dependent-google-maps-api-make-maps-working-862184/

With adb shell, I check there is no /system/framework/com.google.android.maps.jar in phone. There are a lot of jar, and most of them also with .odex extension...I see this post with reference to this file and permissions, but nothing about .odex
http://forum.xda-developers.com/showthread.php?t=1382925

So I extract from gapps-jb-20130812-signed.zip the files
/system/framework/com.google.android.maps.jar and /system/etc/permissions/com.google.android.maps.xml, and I move them to the phone.

Restarting, android says "updating android, app 1 from 29!?"
And ... it works!
No problem installing from adb and running
$ adb install es.openbank.apps.apk
4342 KB/s (1277229 bytes in 0.287s)
    pkg: /data/local/tmp/es.openbank.apps.apk
Success



After uninstall, Google Play incompatibility message is gone

Another example:
https://play.google.com/store/apps/details?id=kr.sira.measure&hl=es
It says it is not compatible, but apk installs ok with adb
$ adb install kr.sira.measure.apk
5640 KB/s (2666341 bytes in 0.461s)
    pkg: /data/local/tmp/kr.sira.measure.apk
Success
But app does not work, because it says it needs a magnetic sensor

No hay comentarios:

Publicar un comentario