0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-19 19:42:17 +02:00

Dependency updates 20230630 (#14058)

* Bump com.squareup.leakcanary:leakcanary-android from 2.11 to 2.12

Bumps [com.squareup.leakcanary:leakcanary-android](https://github.com/square/leakcanary) from 2.11 to 2.12.
- [Release notes](https://github.com/square/leakcanary/releases)
- [Changelog](https://github.com/square/leakcanary/blob/main/docs/changelog.md)
- [Commits](https://github.com/square/leakcanary/compare/v2.11...v2.12)

---
updated-dependencies:
- dependency-name: com.squareup.leakcanary:leakcanary-android
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump org.jetbrains.kotlinx:kotlinx-coroutines-test from 1.7.1 to 1.7.2

Bumps [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.7.1...1.7.2)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-test
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump com.github.triplet.play from 3.8.3 to 3.8.4

Bumps com.github.triplet.play from 3.8.3 to 3.8.4.

---
updated-dependencies:
- dependency-name: com.github.triplet.play
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump com.android.tools.build:gradle from 7.4.2 to 8.0.2 (#13912)

* Bump com.android.tools.build:gradle from 7.4.2 to 8.0.2

Bumps com.android.tools.build:gradle from 7.4.2 to 8.0.2.

---
updated-dependencies:
- dependency-name: com.android.tools.build:gradle
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): forward-port BuildConfig / aidl / default-component to gradle 8

* convert to non-transitive R.attr style

- directly address the attributes via their specific names
- remove an R-containing IntDef since R is no longer constant
  (the whole UndoAction class will disappear with new backend anyway)

* Use attrs directly from `android`

Practically, it is a non-functional change, but is is best and more natural to use attrs directly from android instead of using `com.google.android.material` as a intermediate

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mike Hardy <github@mikehardy.net>
Co-authored-by: Brayan Oliveira <69634269+brayandso@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brayan Oliveira <69634269+brayandso@users.noreply.github.com>
This commit is contained in:
Mike Hardy 2023-07-01 10:09:10 -05:00 committed by GitHub
parent 8d6f5def38
commit f8ea30d275
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 48 additions and 45 deletions

View File

@ -1,6 +1,6 @@
plugins { plugins {
// Gradle plugin portal // Gradle plugin portal
id 'com.github.triplet.play' version '3.8.3' id 'com.github.triplet.play' version '3.8.4'
} }
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
@ -30,6 +30,11 @@ android {
compileSdkVersion 33 // change api compileSdkVersion at the same time compileSdkVersion 33 // change api compileSdkVersion at the same time
buildFeatures {
buildConfig = true
aidl = true
}
defaultConfig { defaultConfig {
applicationId "com.ichi2.anki" applicationId "com.ichi2.anki"
buildConfigField "Boolean", "CI", (System.getenv("CI") == "true").toString() buildConfigField "Boolean", "CI", (System.getenv("CI") == "true").toString()
@ -358,7 +363,7 @@ dependencies {
// Cannot use debugImplementation since classes need to be imported in AnkiDroidApp // Cannot use debugImplementation since classes need to be imported in AnkiDroidApp
// and there's no no-op version for release build. Usage has been disabled for release // and there's no no-op version for release build. Usage has been disabled for release
// build via AnkiDroidApp. // build via AnkiDroidApp.
implementation 'com.squareup.leakcanary:leakcanary-android:2.11' implementation 'com.squareup.leakcanary:leakcanary-android:2.12'
api project(":api") api project(":api")

View File

@ -106,7 +106,7 @@ class DeckPickerTest {
onView(withId(R.id.fab_main)).perform(click()) onView(withId(R.id.fab_main)).perform(click())
onView(withId(R.id.add_deck_action)).perform(click()) onView(withId(R.id.add_deck_action)).perform(click())
onView(withId(R.id.action_edit)).perform(typeText("TestDeck$testString")) onView(withId(R.id.action_edit)).perform(typeText("TestDeck$testString"))
onView(withId(R.id.md_button_positive)).perform(click()) onView(withId(com.afollestad.materialdialogs.R.id.md_button_positive)).perform(click())
// The deck is currently empty, so if we tap on it, it becomes the selected deck but doesn't enter // The deck is currently empty, so if we tap on it, it becomes the selected deck but doesn't enter
onView(withId(R.id.files)).perform( onView(withId(R.id.files)).perform(

View File

@ -407,7 +407,7 @@ open class AnkiActivity : AppCompatActivity, SimpleMessageDialogListener, Collec
) )
return return
} }
val toolbarColor = Themes.getColorFromAttr(this, R.attr.colorPrimary) val toolbarColor = Themes.getColorFromAttr(this, android.R.attr.colorPrimary)
val navBarColor = Themes.getColorFromAttr(this, R.attr.customTabNavBarColor) val navBarColor = Themes.getColorFromAttr(this, R.attr.customTabNavBarColor)
val colorSchemeParams = CustomTabColorSchemeParams.Builder() val colorSchemeParams = CustomTabColorSchemeParams.Builder()
.setToolbarColor(toolbarColor) .setToolbarColor(toolbarColor)

View File

@ -94,7 +94,7 @@ class Info : AnkiActivity() {
val backgroundColor = typedArray.getColor(0, -1) val backgroundColor = typedArray.getColor(0, -1)
val textColor = typedArray.getColor(1, -1).toRGBHex() val textColor = typedArray.getColor(1, -1).toRGBHex()
val anchorTextThemeColor = ThemeUtils.getThemeAttrColor(this, R.attr.colorAccent) val anchorTextThemeColor = ThemeUtils.getThemeAttrColor(this, android.R.attr.colorAccent)
val anchorTextColor = anchorTextThemeColor.toRGBHex() val anchorTextColor = anchorTextThemeColor.toRGBHex()
mWebView!!.setBackgroundColor(backgroundColor) mWebView!!.setBackgroundColor(backgroundColor)

View File

@ -116,7 +116,7 @@ abstract class NavigationDrawerActivity :
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START) mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START)
// Force transparent status bar with primary dark color underlaid so that the drawer displays under status bar // Force transparent status bar with primary dark color underlaid so that the drawer displays under status bar
window.statusBarColor = ContextCompat.getColor(this, R.color.transparent) window.statusBarColor = ContextCompat.getColor(this, R.color.transparent)
mDrawerLayout.setStatusBarBackgroundColor(Themes.getColorFromAttr(this, R.attr.colorPrimary)) mDrawerLayout.setStatusBarBackgroundColor(Themes.getColorFromAttr(this, android.R.attr.colorPrimary))
// Setup toolbar and hamburger // Setup toolbar and hamburger
mNavigationView = mDrawerLayout.findViewById(R.id.navdrawer_items_container) mNavigationView = mDrawerLayout.findViewById(R.id.navdrawer_items_container)
mNavigationView.setNavigationItemSelectedListener(this) mNavigationView.setNavigationItemSelectedListener(this)

View File

@ -1324,7 +1324,7 @@ open class Reviewer :
// Show / hide the Action bar together with the status bar // Show / hide the Action bar together with the status bar
val prefs = AnkiDroidApp.getSharedPrefs(a) val prefs = AnkiDroidApp.getSharedPrefs(a)
val fullscreenMode = fromPreference(prefs) val fullscreenMode = fromPreference(prefs)
a.window.statusBarColor = getColorFromAttr(a, R.attr.colorPrimary) a.window.statusBarColor = getColorFromAttr(a, android.R.attr.colorPrimary)
val decorView = a.window.decorView val decorView = a.window.decorView
decorView.setOnSystemUiVisibilityChangeListener { flags: Int -> decorView.setOnSystemUiVisibilityChangeListener { flags: Int ->
val toolbar = a.findViewById<View>(R.id.toolbar) val toolbar = a.findViewById<View>(R.id.toolbar)
@ -1559,7 +1559,7 @@ open class Reviewer :
@MenuRes subMenuRes: Int, @MenuRes subMenuRes: Int,
onMenuItemSelection: (MenuItem) -> Boolean, onMenuItemSelection: (MenuItem) -> Boolean,
showsSubMenu: () -> Boolean showsSubMenu: () -> Boolean
): View = ImageButton(context, null, R.attr.actionButtonStyle).apply { ): View = ImageButton(context, null, android.R.attr.actionButtonStyle).apply {
TooltipCompat.setTooltipText(this, menuItem.title) TooltipCompat.setTooltipText(this, menuItem.title)
menuItem.icon?.isAutoMirrored = true menuItem.icon?.isAutoMirrored = true
setImageDrawable(menuItem.icon) setImageDrawable(menuItem.icon)

View File

@ -210,7 +210,7 @@ class TagsDialog : AnalyticsDialogFragment {
mToolbarSearchItem = toolbar.menu.findItem(R.id.tags_dialog_action_filter) mToolbarSearchItem = toolbar.menu.findItem(R.id.tags_dialog_action_filter)
val toolbarSearchItem: MenuItem? = mToolbarSearchItem val toolbarSearchItem: MenuItem? = mToolbarSearchItem
mToolbarSearchView = toolbarSearchItem?.actionView as SearchView mToolbarSearchView = toolbarSearchItem?.actionView as SearchView
val queryET = mToolbarSearchView!!.findViewById<EditText>(R.id.search_src_text) val queryET = mToolbarSearchView!!.findViewById<EditText>(com.google.android.material.R.id.search_src_text)
queryET.filters = arrayOf(addTagFilter) queryET.filters = arrayOf(addTagFilter)
mToolbarSearchView!!.queryHint = getString(R.string.filter_tags) mToolbarSearchView!!.queryHint = getString(R.string.filter_tags)
mToolbarSearchView!!.setOnQueryTextListener(object : SearchView.OnQueryTextListener { mToolbarSearchView!!.setOnQueryTextListener(object : SearchView.OnQueryTextListener {

View File

@ -17,9 +17,7 @@
package com.ichi2.libanki package com.ichi2.libanki
import android.content.res.Resources import android.content.res.Resources
import androidx.annotation.IntDef
import androidx.annotation.StringRes import androidx.annotation.StringRes
import com.ichi2.anki.R
import com.ichi2.utils.LanguageUtil.getLocaleCompat import com.ichi2.utils.LanguageUtil.getLocaleCompat
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
@ -32,7 +30,6 @@ abstract class UndoAction
val undoNameId: Int val undoNameId: Int
) { ) {
@Retention(AnnotationRetention.SOURCE) @Retention(AnnotationRetention.SOURCE)
@IntDef(R.string.undo_action_change_deck_multi, R.string.menu_delete_note, R.string.card_browser_delete_card, R.string.card_browser_mark_card, R.string.card_browser_unmark_card, R.string.menu_suspend_card, R.string.card_browser_unsuspend_card, R.string.undo_action_review, R.string.menu_bury_note, R.string.menu_suspend_note, R.string.card_editor_reposition_card, R.string.card_editor_reschedule_card, R.string.menu_bury_card, R.string.card_editor_reset_card)
annotation class UndoNameId annotation class UndoNameId
private fun getLocale(resources: Resources): Locale? { private fun getLocale(resources: Resources): Locale? {

View File

@ -30,8 +30,8 @@ class HeaderPreference
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = R.attr.preferenceStyle, defStyleAttr: Int = androidx.preference.R.attr.preferenceStyle,
defStyleRes: Int = R.style.Preference defStyleRes: Int = androidx.preference.R.style.Preference
) : Preference(context, attrs, defStyleAttr, defStyleRes) { ) : Preference(context, attrs, defStyleAttr, defStyleRes) {
init { init {

View File

@ -36,8 +36,8 @@ open class NumberRangePreferenceCompat
constructor( constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = R.attr.editTextPreferenceStyle, defStyleAttr: Int = androidx.preference.R.attr.editTextPreferenceStyle,
defStyleRes: Int = R.style.Preference_DialogPreference_EditTextPreference defStyleRes: Int = androidx.preference.R.style.Preference_DialogPreference_EditTextPreference
) : EditTextPreference(context, attrs, defStyleAttr, defStyleRes), DialogFragmentProvider { ) : EditTextPreference(context, attrs, defStyleAttr, defStyleRes), DialogFragmentProvider {
var defaultValue: String? = null var defaultValue: String? = null

View File

@ -78,10 +78,10 @@ class SliderPreference(context: Context, attrs: AttributeSet? = null) : Preferen
init { init {
layoutResource = R.layout.preference_slider layoutResource = R.layout.preference_slider
context.withStyledAttributes(attrs, R.styleable.Slider) { context.withStyledAttributes(attrs, com.google.android.material.R.styleable.Slider) {
valueFrom = getIntOrThrow(R.styleable.Slider_android_valueFrom) valueFrom = getIntOrThrow(com.google.android.material.R.styleable.Slider_android_valueFrom)
valueTo = getIntOrThrow(R.styleable.Slider_android_valueTo) valueTo = getIntOrThrow(com.google.android.material.R.styleable.Slider_android_valueTo)
stepSize = getFloat(R.styleable.Slider_android_stepSize, 1F) stepSize = getFloat(com.google.android.material.R.styleable.Slider_android_stepSize, 1F)
} }
context.withStyledAttributes(attrs, R.styleable.CustomPreference) { context.withStyledAttributes(attrs, R.styleable.CustomPreference) {

View File

@ -40,7 +40,7 @@ class RtlCompliantActionProvider(context: Context) : ActionProviderCompat(contex
} }
override fun onCreateActionView(forItem: MenuItem): View { override fun onCreateActionView(forItem: MenuItem): View {
val actionView = ImageButton(context, null, R.attr.actionButtonStyle) val actionView = ImageButton(context, null, android.R.attr.actionButtonStyle)
TooltipCompat.setTooltipText(actionView, forItem.title) TooltipCompat.setTooltipText(actionView, forItem.title)
forItem.icon?.let { forItem.icon?.let {
it.isAutoMirrored = true it.isAutoMirrored = true

View File

@ -229,7 +229,7 @@ open class RobolectricTest : CollectionGetter, AndroidTest {
Timber.e("The latest dialog has already been dismissed.") Timber.e("The latest dialog has already been dismissed.")
return null return null
} }
return dialog.view.contentLayout.findViewById<TextView>(R.id.md_text_message).text.toString() return dialog.view.contentLayout.findViewById<TextView>(com.afollestad.materialdialogs.R.id.md_text_message).text.toString()
} }
/** /**

View File

@ -116,7 +116,7 @@ class CustomStudyDialogTest : RobolectricTest() {
whenever(mockCollection.sched).thenReturn(mockSched) whenever(mockCollection.sched).thenReturn(mockSched)
whenever(mockSched.newCount()).thenReturn(0) whenever(mockSched.newCount()).thenReturn(0)
val factory = CustomStudyDialogFactory({ mockCollection }, mMockListener) val factory = CustomStudyDialogFactory({ mockCollection }, mMockListener)
val scenario = FragmentScenario.launch(CustomStudyDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(CustomStudyDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: CustomStudyDialog -> scenario.onFragment { f: CustomStudyDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?

View File

@ -58,7 +58,7 @@ class DeckPickerContextMenuAndroidTest : RobolectricTest() {
.arguments .arguments
val factory = DeckPickerContextMenu.Factory { col } val factory = DeckPickerContextMenu.Factory { col }
FragmentScenario.launch(DeckPickerContextMenu::class.java, args, R.style.Theme_AppCompat, factory) FragmentScenario.launch(DeckPickerContextMenu::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
.use { scenario -> .use { scenario ->
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: DeckPickerContextMenu -> scenario.onFragment { f: DeckPickerContextMenu ->

View File

@ -237,7 +237,7 @@ class DeckPickerContextMenuTest : RobolectricTest() {
val actualTitle = val actualTitle =
(ShadowDialog.getLatestDialog() as MaterialDialog) (ShadowDialog.getLatestDialog() as MaterialDialog)
.view .view
.findViewById<RtlTextView>(R.id.md_text_title) .findViewById<RtlTextView>(com.afollestad.materialdialogs.R.id.md_text_title)
?.text ?.text
Timber.d("titles = \"$actualTitle\", \"$expectedTitle\"") Timber.d("titles = \"$actualTitle\", \"$expectedTitle\"")
assertEquals(expectedTitle, "$actualTitle") assertEquals(expectedTitle, "$actualTitle")
@ -253,7 +253,7 @@ class DeckPickerContextMenuTest : RobolectricTest() {
.itemView.performLongClick() .itemView.performLongClick()
val dialogRecyclerView = (ShadowDialog.getLatestDialog() as MaterialDialog?)!! val dialogRecyclerView = (ShadowDialog.getLatestDialog() as MaterialDialog?)!!
.view.findViewById<RecyclerView>(R.id.md_recyclerview_content) .view.findViewById<RecyclerView>(com.afollestad.materialdialogs.R.id.md_recyclerview_content)
dialogRecyclerView.apply { dialogRecyclerView.apply {
scrollToPosition(index) scrollToPosition(index)

View File

@ -56,7 +56,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -78,7 +78,7 @@ class TagsDialogTest {
val args = TagsDialog(ParametersUtils.whatever()) val args = TagsDialog(ParametersUtils.whatever())
.withArguments(type, ArrayList(), allTags) .withArguments(type, ArrayList(), allTags)
.arguments .arguments
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -116,7 +116,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -151,7 +151,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -189,7 +189,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -244,7 +244,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -291,7 +291,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -345,7 +345,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -393,7 +393,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -434,7 +434,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -481,7 +481,7 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
@ -600,12 +600,12 @@ class TagsDialogTest {
.arguments .arguments
val mockListener = Mockito.mock(TagsDialogListener::class.java) val mockListener = Mockito.mock(TagsDialogListener::class.java)
val factory = TagsDialogFactory(mockListener) val factory = TagsDialogFactory(mockListener)
val scenario = FragmentScenario.launch(TagsDialog::class.java, args, R.style.Theme_AppCompat, factory) val scenario = FragmentScenario.launch(TagsDialog::class.java, args, androidx.appcompat.R.style.Theme_AppCompat, factory)
scenario.moveToState(Lifecycle.State.STARTED) scenario.moveToState(Lifecycle.State.STARTED)
scenario.onFragment { f: TagsDialog -> scenario.onFragment { f: TagsDialog ->
val dialog = f.dialog as MaterialDialog? val dialog = f.dialog as MaterialDialog?
MatcherAssert.assertThat(dialog, IsNull.notNullValue()) MatcherAssert.assertThat(dialog, IsNull.notNullValue())
val editText = f.getSearchView()!!.findViewById<EditText>(R.id.search_src_text)!! val editText = f.getSearchView()!!.findViewById<EditText>(androidx.appcompat.R.id.search_src_text)!!
editText.setText("hello ") editText.setText("hello ")
Assert.assertEquals( Assert.assertEquals(

View File

@ -16,6 +16,10 @@ android {
namespace 'com.ichi2.anki.api' namespace 'com.ichi2.anki.api'
compileSdkVersion 33 compileSdkVersion 33
buildFeatures {
buildConfig = true
}
defaultConfig { defaultConfig {
minSdkVersion 16 minSdkVersion 16
//noinspection OldTargetApi //noinspection OldTargetApi

View File

@ -10,7 +10,7 @@ buildscript {
ext.ankidroid_backend_version = '0.1.21-anki2.1.61' ext.ankidroid_backend_version = '0.1.21-anki2.1.61'
ext.hamcrest_version = '2.2' ext.hamcrest_version = '2.2'
ext.junit_version = '5.9.3' ext.junit_version = '5.9.3'
ext.coroutines_version = '1.7.1' ext.coroutines_version = '1.7.2'
ext.fragments_version = "1.6.0" ext.fragments_version = "1.6.0"
ext.espresso_version = '3.5.1' ext.espresso_version = '3.5.1'
ext.androidx_test_version = '1.5.0' ext.androidx_test_version = '1.5.0'
@ -25,7 +25,7 @@ buildscript {
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.android.tools.build:gradle:8.0.2'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
classpath "com.github.BrantApps.gradle-amazon-app-store-publisher:amazonappstorepublisher:master-SNAPSHOT" classpath "com.github.BrantApps.gradle-amazon-app-store-publisher:amazonappstorepublisher:master-SNAPSHOT"

View File

@ -23,7 +23,4 @@ org.gradle.parallel=true
org.gradle.caching=true org.gradle.caching=true
# Enable file system watching (should reduce disk IO and increase incremental build speed). # Enable file system watching (should reduce disk IO and increase incremental build speed).
org.gradle.vfs.watch=true org.gradle.vfs.watch=true
# Opt in to gradle 8 behavior, silence warning for now. Remove with AGP8+
android.disableAutomaticComponentCreation=true