Releases: cmeng-git/xmail
Releases · cmeng-git/xmail
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'.