English

App not compatible with device after update to Fairphone Open OS

appissues
Tags: #<Tag:0x00007fefc3abc5d8>

#1

I ran the Fairphone OS on my FP2 until about 1 week ago. Then I decided to given Fairphone Open OS a try (I was coming from FP1 once and liked the OS there). After installation EZ-GUI Ground Station app is not possible to install anymore (it worked flawlessly before). It just complains the device is not compatible (but the device/hardware has not changed). So the only thing that comes to my mind are features requested by the manifest file during installation - therefore I added it here for completeness - but maybe I am wrong. Can someone with more experience give me a hint or even tell what the problem is?

<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ezio.multiwii" platformBuildVersionCode="25" platformBuildVersionName="7.1.1">
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" android:required="false"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:required="false"/>
    <uses-permission android:name="android.permission.BLUETOOTH" android:required="false"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" android:required="false"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="false"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:required="false"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="false"/>
    <uses-permission android:name="android.permission.VIBRATE" android:required="false"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <permission android:name="com.ezio.multiwii.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="com.ezio.multiwii.permission.MAPS_RECEIVE"/>
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false"/>
    <uses-feature android:name="android.hardware.location.gps" android:required="true"/>
    <uses-feature android:name="android.hardware.screen.landscape" android:required="false"/>
    <uses-feature android:name="android.hardware.usb.host" android:required="false"/>
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
    <permission android:name="com.ezio.multiwii.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
    <uses-permission android:name="com.ezio.multiwii.permission.C2D_MESSAGE"/>
    <meta-data android:name="android.support.VERSION" android:value="25.3.1"/>
    <uses-feature android:name="android.hardware.wifi" android:required="true"/>
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false"/>
    <uses-feature android:name="android.hardware.location"/>
    <uses-feature android:name="android.hardware.telephony" android:required="false"/>
    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name2" android:name="com.ezio.multiwii.app.App" android:supportsRtl="true" android:theme="@style/LTheme">
        <uses-library android:name="com.google.android.maps"/>
        <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="AIzaSyDt7krGYo5jP5oG7GNzLfNqiGkl0xmI7Tk"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
        <meta-data android:name="io.fabric.ApiKey" android:value="d2ac0d9322ed1b257b9ff4e2fc29aab67a28312f"/>
        <activity android:configChanges="orientation|screenSize" android:label="@string/app_name2" android:name="com.ezio.multiwii.ezgui.main.MainEZGUIActivity" android:screenOrientation="unspecified">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name="com.ezio.multiwii.config.DeviceListActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.radio.RadioActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.dashboard.Dashboard2Activity" android:screenOrientation="sensorLandscape" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.config.ConfigActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.log.LogActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.gps.GPSActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.motors.MotorsActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.aux_pid.PIDActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.cleanflight.PIDActivityCleanflight" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.other.CalibrationActivity" android:screenOrientation="unspecified"/>
        <activity android:name="com.ezio.multiwii.ezgui.advanced.ControlActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.advanced.AdvancedActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.raw.DevOptionsActivity" android:screenOrientation="unspecified"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.other.InfoActivity" android:screenOrientation="unspecified"/>
        <activity android:name="com.ezio.multiwii.ezgui.dashboard.dashboard3.Dashboard3Activity" android:screenOrientation="fullSensor"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.aux_pid.ServosActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.other.MiscActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.advanced.AUXControlActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.raw.CLIActivity" android:windowSoftInputMode="adjustResize|stateHidden"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.dr3radio.DR3RadioActivity" android:windowSoftInputMode="adjustResize|stateHidden"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.nav.NavActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.nav.WPEditorActivity" android:theme="@android:style/Theme.Dialog"/>
        <activity android:name="com.ezio.multiwii.helpers.FilePickerActivity"/>
        <activity android:name="com.ezio.multiwii.helpers.UCActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.nav.NavSettingsActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.other.TrimsActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.aux_pid.AUXActivityNEW"/>
        <activity android:name="com.ezio.multiwii.ezgui.other.sim.SimActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.dr3radio.dr3Settings"/>
        <activity android:name="com.ezio.multiwii.ezgui.advanced.ModelControlActivity" android:screenOrientation="portrait"/>
        <activity android:name="com.ezio.multiwii.ezgui.advanced.ModelControlSettingsActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.aux_pid.PIDLiveActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.ezgui.messageSystem.MessageSystemActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.checklist.CheckListActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.checklist.CheckListSettings"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.CleanflightConfigActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.BlackBoxActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.graph.GraphsActivityNew"/>
        <activity android:label="@string/title_activity_storm32_controll" android:name="com.ezio.multiwii.ezgui.advanced.storm32.storm32Control"/>
        <activity android:name="com.ezio.multiwii.ezgui.messageSystem.MessageSystemMessageViewActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.map.MapActivityNew"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.Config2Activity"/>
        <activity android:name="com.ezio.multiwii.ezgui.dashboard.Dashboard1Activity"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.modes.ModesActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.modes.ModesEditorActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.serials.SerialConfigActivity"/>
        <activity android:name="com.ezio.multiwii.ezgui.cleanflight.serials.SerialEditorActivity"/>
        <activity android:name="com.ezio.multiwii.app.settings.ProfileSelectorActivity"/>
        <activity android:name="com.ezio.multiwii.helpers.AirMapMap.AirMapViewActivity"/>
        <activity android:name="com.ezio.multiwii.app.ConnectionsSettingsActivity"/>
        <activity android:name="com.ezio.multiwii.app.BluetoothScanActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.shared.ConfigurationActivity"/>
        <activity android:configChanges="orientation|screenSize" android:name="com.ezio.multiwii.shared.PortsActivity"/>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity" android:theme="@style/Theme.IAPTheme"/>
        <receiver android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementReceiver"/>
        <receiver android:enabled="true" android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" android:permission="android.permission.INSTALL_PACKAGES">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER"/>
            </intent-filter>
        </receiver>
        <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementService"/>
        <receiver android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
                <category android:name="com.ezio.multiwii"/>
            </intent-filter>
        </receiver>
        <receiver android:exported="false" android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"/>
        <service android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdService">
            <intent-filter android:priority="-500">
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <provider android:authorities="com.ezio.multiwii.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
        <activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <service android:name="org.eclipse.paho.android.service.MqttService"/>
        <service android:name="com.mapbox.mapboxsdk.telemetry.TelemetryService"/>
        <activity android:label="@string/airmap_title_activity_create_flight" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.CreateFlightActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="adjustResize"/>
        <activity android:label="@string/airmap_title_activity_decision_flow" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.DecisionFlowActivity" android:parentActivityName="com.airmap.airmapsdk.ui.activities.CreateFlightActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ui.activities.CreateFlightActivity"/>
        </activity>
        <activity android:label="@string/airmap_select_a_permit" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.PermitSelectionActivity" android:parentActivityName="com.airmap.airmapsdk.ui.activities.CreateFlightActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ui.activities.CreateFlightActivity"/>
        </activity>
        <activity android:label="@string/airmap_title_activity_custom_properties" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.CustomPropertiesActivity" android:parentActivityName="com.airmap.airmapsdk.ui.activities.PermitSelectionActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ui.activities.PermitSelectionActivity"/>
        </activity>
        <activity android:label="@string/airmap_title_activity_profile" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.ProfileActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateAlwaysHidden"/>
        <activity android:label="@string/airmap_title_activity_profile" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.PilotProfileActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateAlwaysHidden"/>
        <activity android:label="@string/airmap_title_activity_create_aircraft" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.CreateEditAircraftActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:label="@string/airmap_title_activity_login" android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.LoginActivity" android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.WebActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.WelcomeActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:launchMode="singleTop" android:name="com.airmap.airmapsdk.ui.activities.WelcomeDetailsActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"/>
        <meta-data android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule" android:value="GlideModule"/>
    </application>
</manifest>

‘void com.google.android.gms.maps.GoogleMap.clear()’ on a null object reference
#2

I can confirm the exact same issue of some apps not being compatible anymore, although I ran into the problem after updating from OpenOS Marshmallow to Nougat.
In my case it is the timetable app from my university that doesn’t work anymore. However I don’t have any detailed data like @drtrigon


#3

Could you both check the OpenGL version supported by FP Open? CPU Info makes this easy, it’s available on F-Droid.

(Just in case: if it’s Untis, OpenUntis is available in F-Droid)


#4

We used Untis in school, but I go to an IT university and they have developed their own system…


#5

I don’t exactly know what info you’re looking for, but I found this. (Also, while we’re already at it, it seems like every sensor in my phone stopped working from one day to the next… (it wasn’t during the Android upgrade))


#6

AndroSensor (already installed) tells me: OpenGLES Version: 2.0.

As I understand from https://developer.android.com/guide/topics/graphics/opengl the manifest file quoted requests 2.0 with:

<uses-feature android:glEsVersion=“0x00020000” android:required=“true” />

edit: if it would be possible to install it at least - that would allow to further debugging it using logcat etc.


#7

@Stanzi: You can extract the manifest file from an apk using apktool, apkstudio, Android Studio, or similar software. May be comparing mine and yours helps…


#8

Yes, I remembered (thought?) those binary version codes were a little non-obvious, so I just though that was 3.0 and FP could have messed that in the update because of Qualcomm binary blobs and closed stuff.

Android’s package manager won’t allow that, but you can however try to sideload the APK with adb, which spits a more detailed error.


#9

Good hint, thanks! Here the result:

$ adb install Downloads/EZ-GUI%20Ground%20Station_4.5_apk-dl.com.apk 
546 KB/s (30482935 bytes in 54.442s)
Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY: Package couldn't be installed in /data/app/com.ezio.multiwii-1: Package com.ezio.multiwii requires unavailable shared library com.google.android.maps; failing!]

I don’t understand that. microG and maps are installed.


#10

Guess it’s related to https://github.com/microg/android_packages_apps_GmsCore/issues/12, https://github.com/microg/android_packages_apps_GmsCore/issues/347

The thing is now I am back in the situation where I cannot install the stuff as an app. And I don’t like messing around with recovery image or adb.


#11

FINAL RESULT
Even I don’t like adb, the instructions in https://github.com/microg/android_frameworks_mapsv1/wiki/Installation are straight forward such that even I understand them (and how to undo them if needed). Tested. Works. Missing maps API v1 was my issue. (actually it should be possible to install/copy the 2 files needed also using Ghost Commander app or similar when rooted)

edit: Interesting to test (IMHO) would be to use apkstudio in order to remove the line

        <uses-library android:name="com.google.android.maps"/>

from the manifest and test what happens. Does this allow it to be installed? (If yes, that would allow to get further info via logcat.) Does it still run? etc.

Thanks to everybody involved!


#12

That’s it! You did it, :smiley:

Google Maps API v1 is an obsolete library, no developer should be using that anymore for up-to-date apps. But shit happens, usually Android developers are more illiterate that you’d expect, :man_shrugging: