Releases: cmeng-git/xmail
Releases · cmeng-git/xmail
5.2.0
- Upgrade Xmail to support Android-16 Baklava (API-36) with the following changes:
- Android Studio Narwhal | 2025.1.1
- https://services.gradle.org/distributions/gradle-8.14.2-bin.zip
- classpath 'com.android.tools.build:gradle:8.11.1'
- classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21'
- Raise minSdk support to API-26; many third parties libraries drop support for < API-26
- Third party libraries upgraded to latest compatible version for API-36:
- Use safe-content-resolver-v21; to fix native library arm64-v8a/libos-compat.so (v14) is not 16 KB aligned
- Disable splitActionBarWhenNarrow for API-36+; else ActionBar is overlaid by Navigation Bar if enabled
- Move AccountSetupActivity#authDialog to use AlertDialog to avoid content clipping, and better compatibility with API-36.
- Fix SoftKeyboard not shown in AlertDialog (Dialog class is OK); see AccountSetupActivity
- AccountSetupActivity: webSettings.setUserAgentString; using AppId-version causes outlook.com web page shows blank;
but it is required for gmail.com. So use mixed of both for it to work. - OAuth2WebViewClient: do not execute errorHandler.onError(error) if errorHandler == null.
- Migrate deprecated intent.getSerializableExtra() to IntentCompat.getSerializableExtra(), and
bundle.getSerializable() to BundleCompat.getSerializable(). - Fixed tokenautocomplete:3.0.2 entry field not selectable by click, use setTextIsSelectable(true).
- Reimplement deprecated classes/methods i.e. onBackPressed and AsyncTask with new functions.
- Remove permissions request for permission-group.XMAIL, REMOTE_CONTROL, READ_MESSAGES, and DELETE_MESSAGES.
- Remove meta-data UI_OPTIONS and PARENT_ACTIVITY support for <= API-16.
Fixes for API < 26 (not implemented)
- Duration was added in API level-26; see https://github.com/JakeWharton/ThreeTenABP
- Add new lib 'org.slf4j:slf4j-log4j12:2.0.17'
- Note10+ crashes when open mail from 'The Scoot Team'; AVD API-36 has not problem. Earlier version build has no problem.
- JNI DETECTED ERROR IN APPLICATION: JNI NewStringUTF called with pending exception java.lang.IllegalStateException:
- Unable to create layer for FrameLayout, size 1472x16384 max size 16383 color type 4 has context 1
size 1472x16384 max size 16383: This is the critical part. The requested height (16384) for the FrameLayout exceeds
the maximum allowable texture or layer size (16383) on the specific device or GPU. This often occurs when a UI element,
such as a FrameLayout containing a RecyclerView or ScrollView, attempts to render content that is excessively long or tall,
exceeding the hardware's capabilities for a single layer.
v5.1.3
- Remove permissions access for READ_MEDIA_IMAGES and READ_MEDIA_VIDEO.
- Xmail crashes when open Shopee push mail on Note-10, but not happen on Pixel API-34.
Add android:hardwareAccelerated="false" to application tag in manifest solve the problem.
Scrolling not smooth when disabled, so not implemented. (Latest shoppe release does not have the problem)- JNI DETECTED ERROR IN APPLICATION: JNI NewStringUTF called with pending exception IllegalStateException: Unable to create layer for FrameLayout
- XryptoMail#hasWriteStoragePermission(Context callBack, boolean requestPermission) callBack cannot cast to Activity - system crash
- Definition of permission-group "android.permission-group.MESSAGES" in manifest crashes with android permission group; cannot install on OHOS.
v5.1.2
- Force oauth_webview height to 600dp; webView render has problem with OAUTH window display.
- Update outlook.com mail provider incoming/outgoing mail server endpoints settings
- Always show "MANUAL SETUP" option even when a mail provider configuration is found, allowing user edit if incorrect.
v5.1.1
- Change NotificationActionService to extend Service to work in foreground; to resolve unhandled markAsRead with JobIntentService.
- Remove unused permissions: ACCESS_MEDIA_LOCATION, GET_ACCOUNTS, and WRITE_CONTACTS.
- Need to add READ_EXTERNAL_STORAGE permission (Files and Media) request for android API-32.
- Implement newly added READ_MEDIA_VISUAL_USER_SELECTED permission for android API-34.
- Do not launch BatteryOptimization permission request within a dialog, else parseResult is based on dialog click.
- ActivityResultContract#parseResult on BatteryOptimization request must return isOptimizingBattery() state.
- Must set both shrinkResources and minifyEnabled to false for release build under API-34;
else xmail crashes in Moshi with cannot serialize abstract class MessagingControllerCommands$PendingDelete - UpdateServiceImpl#isLatestVersion need to close inputStream after access end.
- Update all app used libraries to the latest releases.
v5.1.0
- Built target for Android 14.0 (UpsideDownCake) or API-34
- Set app minSdk to API-24; diminish support in android libraries for < API-24
- Add new permissions required for API-34 and change UI to support.
- Drop com.jakewharton:butterknife-compiler:10.2.3 dependency (jdk-15 max restriction);
use android View binding class instead. - Upgrade to OpenPGP-API version 12
- Fix OpenPGP Application Provider availability check in Global Settings | Cryptography (queries settings)
- Implement support of cleartextTraffic content loading in XMWebViewClient#shouldInterceptRequest()
- Make UpdateServiceImpl() shows both version/code for installed and latest available debug apk.
- Fix ContextCompat.registerReceiver flag setting: If this receiver is listening for broadcasts sent from the system
or from other apps—even other apps that you own: then use RECEIVER_EXPORTED flag. If instead this receiver is listening
only for broadcasts sent by your app, use the RECEIVER_NOT_EXPORTED flag; and broadcaster must setPackage(getPackageName()).- Use RECEIVER_EXPORTED for ActivityListener, UpdateServiceImpl, AttachmentTempFileProvider, and DecryptedFileProvider
- Use RECEIVER_NOT_EXPORTED and required to setPackage(getPackageName()) in sendBroadcast for:
DeviceIdleManager, UnreadWidgetProvider, XryptoMail, XryptoMailRemoteControl, BootReceiver, CoreReceiver, and MessageListWidgetProvider
- Update gradle build environment to with gradle 8.0.0 and above:
a. Use Android Studio Koala | 2024.1.1
b. distributionUrl=https://services.gradle.org/distributions/gradle-8.2-bin.zip; not compatible with 8.5.
c. classpath 'com.android.tools.build:gradle:8.2.2'
d. Add to buildFeatures: dataBinding, viewBinding, and buildConfig to true; aidl true for oepnpgp
e. Add namespace to xryptomail and openpgp modules
f. Must add: tasks.withType(KotlinCompile.class){ kotlinOptions { jvmTarget = "1.8" } }
to resolve compileDebugJavaWithJavac and kaptGenerateStubsDebugKotlin with incompatible Java version.
g. Update gradle.properties to include:
Gradle >=8.0.0: Library project resource identifiers are not constant static final ints, just static ints.
android.nonFinalResIds=false- Gradle >=8.0.0: Allow transitive resource identifiers use in aTalk.
- android.nonTransitiveRClass=false
v5.0.5
Version: 5.0.5
Upload Date: 08/19/2023
- Built target for Android 13.0 (Tiramisu) or API-33
- Update all XryptoMail third party libraries used to latest version if allowed
- Fix UpdateServiceImpl to correctly define the path for versionupdate.properties, and auto generate the corresponding apk filename for download
- Change downloaded apk path to ./xmail/tmp to auto create a new apk filename e.g. XryptoMail-debug-1.apk if exist;
the FilePathHelper#getFilePathWithCreate() will keep old apk file if exit'.