Compatability of Android app with e-ink tablet BOOX Note Air 2

Bug report

Trying to install Android mobile app on an e-ink Android tablet (BOOX Note Air 2) and the Google Play Store indicates that the version of the mobile app isn’t compatible. I assume it’s because the BOOX fork of Android is on Android 11 and the app requires newer?

Are there any options for using an older version of Ink Drop and installing manually? Or is there another issue I’m not considering.

Am familiar with iOS dev and setting target OS versions, and the myriad of other options that might affect compatibility across devices.

Environment

  • Platform: Android
  • Platform version: 11
  • App Version: latest on Google Play Store

How to reproduce

Navigate to Inkdrop page in Google Play Store on BOOX Note Air 2. See incompatibility message.

Hi nclarx,

I have an e-ink BOOX tablet, too, and that’s what I’ve tried and failed:

https://twitter.com/inkdrop_app/status/1688784643280322560

The app has minSdkVersion = 26 and I was able to install it via USB manually, so the Android OS version shouldn’t be the cause, just as they said.
I thought one of the permissions was causing it but the app requires minimal permissions. Here is AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.CAMERA" android:required="false" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme">

      <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme"
        android:exported="true">
        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize"
        android:exported="true">
        <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="inkdrop" />
        </intent-filter>
      </activity>

      <meta-data android:name="com.bugsnag.android.API_KEY" android:value="412652567d757fd08f535b6aaa6078fe" />
    </application>
</manifest>

android/build.gradle:

import org.apache.tools.ant.taskdefs.condition.Os

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "33.0.0"
        minSdkVersion = 26
        compileSdkVersion = 33
        targetSdkVersion = 33
        kotlinVersion = "1.6.0"

        // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
        ndkVersion = "23.1.7779620"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:7.3.1")
        classpath("com.bugsnag:bugsnag-android-gradle-plugin:7.+")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
    }
}

Please let me know if you find any information to solve this!

Thanks for the reply Takuya.

Keen to have a dig around on the Boox and see if anything is an issue in terms of the manifest - have added to my todo list. Just saw they’ve released a new colour version of the Note Air, so very tempted to buy.

Is it possible to get an apk so i can try the USB install? Had a look at how to obtain an apk but don’t want to use dodgy tools to get it.

In the interim I asked Chat GPT to cross reference the manifest with known incompatibilities with BOOX OS, these might be a good place to start:

The BOOX Note Air 2, like many specialized Android devices, runs a custom version of the Android operating system tailored to its unique hardware and software needs. This custom OS, known as “BOOX OS” or a similar variant, is built on top of a standard Android version—in this case, Android 11 for the Note Air 2. While the standard Android API compatibility is maintained to a large extent, there can be specific issues or limitations due to the customizations made by the manufacturer.

For the items mentioned in your manifest, here are potential considerations specific to the BOOX Note Air 2 or similar devices running a custom Android 11 version:

android.permission.SYSTEM_ALERT_WINDOW

  • Potential Issue: Custom OS versions might impose additional restrictions or behaviors on overlay permissions beyond what standard Android does. Ensure that the intended overlay functionality is tested on the device, as user experiences and expectations might differ on e-ink devices.

android.permission.WRITE_EXTERNAL_STORAGE

  • Scoped Storage: Android 11 introduced significant changes to storage access via scoped storage. While this is a platform-wide change, the impact on devices like the BOOX Note Air 2 can vary based on how the manufacturer has implemented file access and management. Testing file operations extensively on the device is crucial.

android.hardware.touchscreen

  • Compatibility: While the Note Air 2 features a touchscreen, the responsiveness and behavior could differ from conventional Android devices due to the e-ink display’s nature. Testing touch interactions thoroughly to ensure a good user experience is important.

android:allowBackup="false"

  • Custom Backup Solutions: Depending on the customizations made by BOOX, the standard Android backup system might be replaced or supplemented with a custom solution. This setting should work as intended, but be aware of any device-specific backup and restore solutions that might affect your app.

android:exported attribute

  • Security Concerns: The requirement for explicit android:exported attributes is respected on all devices running Android 11 or higher. However, considering the specialized use cases of BOOX devices, ensure that any externally accessible components are intended and secure.

I’ll have a look into a few of these and see if there are any restrictions on the BOOX side of things.

Thanks for the info. I’ll look into them.
WRITE_EXTERNAL_STORAGE is for SQLite but might not be required.

Is it possible to get an apk so i can try the USB install?

Yeah it’s possible but can’t give you any updates with this.
Let me try checking the permissions again because I really want to use it myself🥹 haha

UPDATE: Dropping WRITE_EXTERNAL_STORAGE and SYSTEM_ALERT_WINDOW doesn’t solve it.
Google Play Store says Inkdrop does not require any special permissions. So, the permissions are not the problem here…

I also checked an open source React Native project, Raindrop, which can be installed on Boox:

I can’t find any significant differences between my project and theirs.