mirror of
https://github.com/etesync/android
synced 2024-12-22 14:48:11 +00:00
Bump target SDK version, update Gradle, and adjust code
I only intended to do the first, but had to deal with the fallout of doing it.
This commit is contained in:
parent
c588c7775f
commit
f9fe8955c3
34
.github/workflows/build.yml
vendored
Normal file
34
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
name: Android CI Workflow
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- test
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
apk:
|
||||
name: Generate APK
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
||||
# - name: Setup Android SDK
|
||||
# uses: android-actions/setup-android@v2
|
||||
|
||||
- name: Build APK
|
||||
run: ./gradlew --no-daemon build
|
||||
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: apk
|
||||
path: app/build/outputs/apk/release/app-release.apk
|
@ -9,20 +9,18 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
android {
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
buildToolsVersion rootProject.ext.buildToolsVersion
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.etesync.syncadapter"
|
||||
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
targetSdkVersion 33
|
||||
|
||||
versionCode 20300
|
||||
versionName "2.3.0"
|
||||
versionCode 20400
|
||||
versionName "2.4.0"
|
||||
|
||||
buildConfigField "boolean", "customCerts", "true"
|
||||
}
|
||||
@ -60,35 +58,14 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'GoogleAppIndexingWarning' // we don't need Google indexing, thanks
|
||||
disable 'GradleDependency'
|
||||
disable 'GradleDynamicVersion'
|
||||
disable 'IconColors'
|
||||
disable 'IconLauncherShape'
|
||||
disable 'IconMissingDensityFolder'
|
||||
disable 'ImpliedQuantity', 'MissingQuantity'
|
||||
disable 'MissingTranslation', 'ExtraTranslation' // translations from Transifex are not always up to date
|
||||
disable 'Recycle' // doesn't understand Lombok's @Cleanup
|
||||
disable 'RtlEnabled'
|
||||
disable 'RtlHardcoded'
|
||||
disable 'Typos'
|
||||
disable "RestrictedApi" // https://code.google.com/p/android/issues/detail?id=230387
|
||||
}
|
||||
|
||||
dexOptions {
|
||||
preDexLibraries = true
|
||||
// dexInProcess requires much RAM, which is not available on all dev systems
|
||||
dexInProcess = false
|
||||
javaMaxHeapSize "2g"
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'LICENSE'
|
||||
exclude 'META-INF/LICENSE.txt'
|
||||
exclude 'META-INF/NOTICE.txt'
|
||||
resources {
|
||||
excludes += ['LICENSE', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
testOptions {
|
||||
unitTests.returnDefaultValues = true
|
||||
}
|
||||
@ -125,16 +102,16 @@ android {
|
||||
// enable because ical4android requires desugaring
|
||||
coreLibraryDesugaringEnabled true
|
||||
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
dataBinding = true
|
||||
viewBinding = true
|
||||
}
|
||||
lint {
|
||||
disable 'GoogleAppIndexingWarning', 'GradleDependency', 'GradleDynamicVersion', 'IconColors', 'IconLauncherShape', 'IconMissingDensityFolder', 'ImpliedQuantity', 'MissingQuantity', 'MissingTranslation', 'ExtraTranslation', 'Recycle', 'RtlEnabled', 'RtlHardcoded', 'Typos', 'RestrictedApi'
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,9 +136,9 @@ dependencies {
|
||||
// KTX extensions
|
||||
implementation "androidx.core:core-ktx:1.3.1"
|
||||
implementation "androidx.fragment:fragment-ktx:1.2.5"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
|
||||
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0"
|
||||
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.0"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.0"
|
||||
|
||||
|
||||
implementation 'com.google.android.material:material:1.2.0-beta01'
|
||||
|
@ -178,7 +178,7 @@
|
||||
android:enabled="true">
|
||||
</service>
|
||||
|
||||
<receiver android:name=".PackageChangedReceiver">
|
||||
<receiver android:name=".PackageChangedReceiver" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED"/>
|
||||
<action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
|
||||
@ -189,6 +189,7 @@
|
||||
<activity
|
||||
android:name=".ui.AccountsActivity"
|
||||
android:label="@string/app_name"
|
||||
android:exported="true"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
|
@ -204,7 +204,7 @@ class LocalAddressBook(
|
||||
if (provider != null) {
|
||||
val values = ContentValues(1)
|
||||
values.put(RawContacts.ACCOUNT_NAME, newAccountName)
|
||||
provider.update(syncAdapterURI(RawContacts.CONTENT_URI), values, RawContacts.ACCOUNT_NAME + "=? AND " + RawContacts.ACCOUNT_TYPE + "=?",
|
||||
(provider as ContentProviderClient).update(syncAdapterURI(RawContacts.CONTENT_URI), values, RawContacts.ACCOUNT_NAME + "=? AND " + RawContacts.ACCOUNT_TYPE + "=?",
|
||||
arrayOf(account.name, account.type))
|
||||
}
|
||||
} catch (e: RemoteException) {
|
||||
@ -235,7 +235,7 @@ class LocalAddressBook(
|
||||
if (provider != null) {
|
||||
val values = ContentValues(1)
|
||||
values.put(RawContacts.ACCOUNT_NAME, newAccountName)
|
||||
provider.update(syncAdapterURI(RawContacts.CONTENT_URI), values, RawContacts.ACCOUNT_NAME + "=? AND " + RawContacts.ACCOUNT_TYPE + "=?",
|
||||
(provider as ContentProviderClient).update(syncAdapterURI(RawContacts.CONTENT_URI), values, RawContacts.ACCOUNT_NAME + "=? AND " + RawContacts.ACCOUNT_TYPE + "=?",
|
||||
arrayOf(account.name, account.type))
|
||||
}
|
||||
} catch (e: RemoteException) {
|
||||
@ -423,7 +423,7 @@ class LocalAddressBook(
|
||||
|
||||
val values = ContentValues(1)
|
||||
values.put(Groups.TITLE, title)
|
||||
val uri = provider.insert(syncAdapterURI(Groups.CONTENT_URI), values)
|
||||
val uri = (provider as ContentProviderClient).insert(syncAdapterURI(Groups.CONTENT_URI), values)
|
||||
return ContentUris.parseId(uri!!)
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
package com.etesync.syncadapter.resource
|
||||
|
||||
import android.content.ContentProviderClient
|
||||
import android.content.ContentProviderOperation
|
||||
import android.content.ContentUris
|
||||
import android.content.ContentValues
|
||||
@ -44,7 +45,7 @@ class LocalGroup : AndroidGroup, LocalAddress {
|
||||
"$COLUMN_PENDING_MEMBERS IS NOT NULL", null,
|
||||
null
|
||||
)?.use { cursor ->
|
||||
val batch = BatchOperation(addressBook.provider)
|
||||
val batch = BatchOperation(addressBook.provider as ContentProviderClient)
|
||||
while (cursor.moveToNext()) {
|
||||
val id = cursor.getLong(0)
|
||||
|
||||
|
@ -74,7 +74,7 @@ class AboutActivity : BaseActivity() {
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
val info = components[arguments!!.getInt(KEY_POSITION)]
|
||||
val info = components[requireArguments().getInt(KEY_POSITION)]
|
||||
|
||||
val v = inflater.inflate(R.layout.about_component, container, false)
|
||||
|
||||
|
@ -47,6 +47,8 @@ class CollectionMembersActivity : BaseActivity(), Refreshable {
|
||||
CollectionInfo.Type.ADDRESS_BOOK -> {
|
||||
colorSquare.visibility = View.GONE
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
findViewById<View>(R.id.progressBar).visibility = View.GONE
|
||||
|
||||
|
@ -82,6 +82,8 @@ open class CreateCollectionActivity : BaseActivity() {
|
||||
val colorGroup = findViewById<View>(R.id.color_group)
|
||||
colorGroup.visibility = View.GONE
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +123,10 @@ open class CreateCollectionActivity : BaseActivity() {
|
||||
}
|
||||
CollectionInfo.Type.ADDRESS_BOOK -> {
|
||||
}
|
||||
CollectionInfo.Type.TASKS -> {
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
info.selected = true
|
||||
|
@ -42,6 +42,8 @@ class EditCollectionActivity : CreateCollectionActivity() {
|
||||
}
|
||||
CollectionInfo.Type.ADDRESS_BOOK -> {
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
val edit = findViewById<View>(R.id.display_name) as EditText
|
||||
|
@ -146,6 +146,8 @@ class JournalItemActivity : BaseActivity(), Refreshable {
|
||||
}
|
||||
}
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
val dialog = AlertDialog.Builder(this)
|
||||
@ -231,6 +233,8 @@ class JournalItemActivity : BaseActivity(), Refreshable {
|
||||
v = inflater.inflate(R.layout.task_info, container, false)
|
||||
asyncTask = loadTaskTask(v)
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
return v
|
||||
|
@ -68,6 +68,7 @@ class StartupDialogFragment : DialogFragment() {
|
||||
.setNeutralButton(R.string.startup_vendor_specific_bugs_open_faq) { dialog, which -> WebViewActivity.openUrl(context!!, Constants.faqUri.buildUpon().encodedFragment("vendor-issues").build()) }
|
||||
.setNegativeButton(R.string.startup_dont_show_again) { dialog, which -> HintManager.setHintSeen(context!!, HINT_VENDOR_SPECIFIC_BUGS, true) }
|
||||
.create()
|
||||
StartupDialogFragment.Mode.GOOGLE_PLAY_ACCOUNTS_REMOVED -> {}
|
||||
}
|
||||
|
||||
throw IllegalArgumentException(/* illegal mode argument */)
|
||||
|
@ -76,6 +76,8 @@ class ViewCollectionActivity : BaseActivity(), Refreshable {
|
||||
CollectionInfo.Type.ADDRESS_BOOK -> {
|
||||
colorSquare.visibility = View.GONE
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
LoadCountTask().execute()
|
||||
@ -244,6 +246,8 @@ class ViewCollectionActivity : BaseActivity(), Refreshable {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
@ -268,6 +272,8 @@ class ViewCollectionActivity : BaseActivity(), Refreshable {
|
||||
stats.text = String.format(Locale.getDefault(), "Contacts: %d, Journal Entries: %d",
|
||||
result, entryCount)
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -153,6 +153,8 @@ class ListEntriesFragment : ListFragment(), AdapterView.OnItemClickListener {
|
||||
CollectionInfo.Type.ADDRESS_BOOK -> {
|
||||
prefix = "FN:"
|
||||
}
|
||||
null -> {
|
||||
}
|
||||
}
|
||||
|
||||
var content = getLine(fullContent, prefix)
|
||||
|
12
build.gradle
12
build.gradle
@ -7,16 +7,16 @@
|
||||
*/
|
||||
|
||||
ext {
|
||||
kotlin_version = '1.4.10'
|
||||
gradle_version = '4.0.1'
|
||||
compileSdkVersion = 30
|
||||
buildToolsVersion = '30.0.2'
|
||||
kotlin_version = '1.8.21'
|
||||
gradle_version = '8.0.2'
|
||||
compileSdkVersion = 33
|
||||
buildToolsVersion = '33.0.0'
|
||||
}
|
||||
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.4.10'
|
||||
ext.gradle_version = '4.0.1'
|
||||
ext.kotlin_version = '1.8.21'
|
||||
ext.gradle_version = '7.4.2'
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 47bc6842daf9b93b28ae2ad8b65754dae2bc3ece
|
||||
Subproject commit d01a3455bdb7fb49362e3e7acef043d34b7124f6
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit b023c079b2a8cd2fe69360a835cf0d872b71cd53
|
||||
Subproject commit b62dfc46f61aa310a65383e7b99f66a99959da2b
|
@ -1 +1 @@
|
||||
Subproject commit e98a3a553511f66b9bbdb914f2d2c91176108aab
|
||||
Subproject commit beb8ad2904bd1a46646dce0e707c54417858eaa2
|
Loading…
Reference in New Issue
Block a user