Umnik 10 months ago
parent 31eb8d8b02
commit af72230dfa

206
.gitignore vendored

@ -1,205 +1,3 @@
*.iml
.gradle
/local.properties
/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Java template
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Android template
# Built application files
*.apk
*.aar
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
# Generated files
bin/
gen/
# Uncomment the following line in case you need and you don't have the release build type files in your app
# release/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
# Proguard folder generated by Eclipse
proguard/
# Log Files
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml
# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore
# External native build folder generated in Android Studio 2.2 and later
.cxx/
# Google Services (e.g. APIs or Firebase)
# google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
# Android Profiling
*.hprof
### Kotlin template
# Compiled class file
# Log file
# BlueJ files
# Mobile Tools for Java (J2ME)
# Package Files #
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
./gradle
local.properties

1
app/.gitignore vendored

@ -1 +0,0 @@
/build

@ -4,7 +4,8 @@ plugins {
}
android {
compileSdk 31
compileSdkVersion 31
buildToolsVersion '32.0.0'
defaultConfig {
minSdk 25
@ -29,7 +30,7 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="xyz.myachin.yaw">
<manifest package="xyz.myachin.yaf">
<application />

@ -1,4 +1,4 @@
package xyz.myachin.yaw.core
package xyz.myachin.yaf.core
internal const val SHORT_WAIT = 3_000L
internal const val EXTENDED_WAIT = SHORT_WAIT * 3

@ -1,9 +1,9 @@
package xyz.myachin.yaw.core.device
package xyz.myachin.yaf.core.device
import android.os.SystemClock
import android.view.KeyEvent
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import kotlin.concurrent.thread

@ -1,4 +1,4 @@
package xyz.myachin.yaw.core.exceptions
package xyz.myachin.yaf.core.exceptions
open class TException(message: String) : Exception(message)
@ -10,7 +10,7 @@ class ObjectStateError(e: String) : TException(e)
class ObjectActionError(e: String) : TException(e)
class UnexpectedClassError(expected: String, actual: String) :
TException("Expected class expected but got $actual")
TException("Expected class. Expected $expected but got $actual")
object TAssert {
/**

@ -1,4 +1,4 @@
package xyz.myachin.yaw.core.os.components
package xyz.myachin.yaf.core.os.components
import android.content.Context
import android.content.pm.PackageManager

@ -1,13 +1,12 @@
package xyz.myachin.yaw.core.os.intent
package xyz.myachin.yaf.core.os.intent
import android.content.ComponentName
import android.content.Intent
import android.net.Uri
import androidx.core.content.IntentCompat
/** Builder for [Intent] */
class IntentBuilder {
private lateinit var _intent: Intent
private var _intent: Intent
/** Creates new empty Intent */
constructor() {

@ -1,14 +1,14 @@
package xyz.myachin.yaw.core.os.ui.actions
package xyz.myachin.yaf.core.os.ui.actions
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import xyz.myachin.yaw.core.exceptions.TException
import xyz.myachin.yaw.core.os.components.TOsComponents.tContext
import xyz.myachin.yaw.core.os.components.TOsComponents.tPackageManager
import xyz.myachin.yaw.core.os.ui.utils.TOsUtil
import xyz.myachin.yaf.core.exceptions.LaunchActivityNotExistsError
import xyz.myachin.yaf.core.os.components.TOsComponents.tContext
import xyz.myachin.yaf.core.os.components.TOsComponents.tPackageManager
import xyz.myachin.yaf.core.os.ui.utils.TOsUtil
object TOsUiAction {
private const val defaultFlags = Intent.FLAG_ACTIVITY_NEW_TASK or
@ -33,14 +33,14 @@ object TOsUiAction {
}
/** Calls app's launch activity */
@Throws(TException.LaunchActivityNotExists::class)
@Throws(LaunchActivityNotExistsError::class)
fun startLaunchActivityAsUser(pkgName: String) {
tPackageManager.getLaunchIntentForPackage(pkgName)?.run {
addFlags(defaultFlags)
tContext.startActivity(this)
return
}
throw TException.LaunchActivityNotExists(pkgName)
throw LaunchActivityNotExistsError(pkgName)
}
/** Same as [android.content.Context.startActivity] */

@ -1,6 +1,6 @@
package xyz.myachin.yaw.core.os.ui.utils
package xyz.myachin.yaf.core.os.ui.utils
import xyz.myachin.yaw.core.os.components.TOsComponents.tContext
import xyz.myachin.yaf.core.os.components.TOsComponents.tContext
object TOsUtil {
/** Extracts string resource by [resId]. Example: `R.string.some_string` */

@ -1,4 +1,4 @@
package xyz.myachin.yaw.core.wait
package xyz.myachin.yaf.core.wait
import android.os.SystemClock

@ -0,0 +1,11 @@
package xyz.myachin.yaf.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaf.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasText
class TButtonGeneric(private val uiSelector: UiSelector) :
TIClickable by TClickableImpl(uiSelector),
TIViewHasText by TViewHasTextImpl(uiSelector)

@ -0,0 +1,11 @@
package xyz.myachin.yaf.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaf.ui.lowlevel.checker.impls.TViewHasCheckboxImpl
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
class TCheckboxGeneric(private val uiSelector: UiSelector) :
TIViewHasCheckbox by TViewHasCheckboxImpl(uiSelector),
TIClickable by TClickableImpl(uiSelector)

@ -0,0 +1,14 @@
package xyz.myachin.yaf.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TReadableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TWriteableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIReadable
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIWriteable
import xyz.myachin.yaf.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasText
class TEditTextGeneric(private val uiSelector: UiSelector) :
TIViewHasText by TViewHasTextImpl(uiSelector),
TIReadable by TReadableImpl(uiSelector),
TIWriteable by TWriteableImpl(uiSelector)

@ -0,0 +1,11 @@
package xyz.myachin.yaf.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TReadableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIReadable
import xyz.myachin.yaf.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasText
class TTextGeneric(private val uiSelector: UiSelector) :
TIViewHasText by TViewHasTextImpl(uiSelector),
TIReadable by TReadableImpl(uiSelector)

@ -0,0 +1,11 @@
package xyz.myachin.yaf.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaf.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaf.ui.lowlevel.checker.impls.TViewHasCheckboxImpl
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
class TToggleButtonGeneric(private val uiSelector: UiSelector) :
TIViewHasCheckbox by TViewHasCheckboxImpl(uiSelector),
TIClickable by TClickableImpl(uiSelector)

@ -1,12 +1,11 @@
package xyz.myachin.yaw.ui.lowlevel.actions.impls
package xyz.myachin.yaf.ui.lowlevel.actions.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.EXTENDED_WAIT
import xyz.myachin.yaw.core.exceptions.ObjectActionError
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaf.core.exceptions.ObjectActionError
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIClickable
class TClickableImpl(private val uiSelector: UiSelector) : TIClickable {
private val uiObject: UiObject get() = tDevice.findObject(uiSelector)

@ -1,9 +1,9 @@
package xyz.myachin.yaw.ui.lowlevel.actions.impls
package xyz.myachin.yaf.ui.lowlevel.actions.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIReadable
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIReadable
class TReadableImpl(private val uiSelector: UiSelector) : TIReadable {
private val uiObject: UiObject get() = tDevice.findObject(uiSelector)

@ -1,10 +1,10 @@
package xyz.myachin.yaw.ui.lowlevel.actions.impls
package xyz.myachin.yaf.ui.lowlevel.actions.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIWriteable
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.ui.lowlevel.actions.interfaces.TIWriteable
class TWriteableImpl(private val uiSelector: UiSelector) : TIWriteable {
private val uiObject: UiObject get() = tDevice.findObject(uiSelector)

@ -1,6 +1,6 @@
package xyz.myachin.yaw.ui.lowlevel.actions.interfaces
package xyz.myachin.yaf.ui.lowlevel.actions.interfaces
import xyz.myachin.yaw.core.EXTENDED_WAIT
import xyz.myachin.yaf.core.EXTENDED_WAIT
interface TIClickable {
fun wantTap(assertIfFalse: Boolean = true): Boolean

@ -1,4 +1,4 @@
package xyz.myachin.yaw.ui.lowlevel.actions.interfaces
package xyz.myachin.yaf.ui.lowlevel.actions.interfaces
interface TIReadable {
fun extractString(): String

@ -1,4 +1,4 @@
package xyz.myachin.yaw.ui.lowlevel.actions.interfaces
package xyz.myachin.yaf.ui.lowlevel.actions.interfaces
interface TIWriteable {
fun wantSetText(text: String, assertIfFalse: Boolean = true): Boolean

@ -1,13 +1,13 @@
package xyz.myachin.yaw.ui.lowlevel.checker.impls
package xyz.myachin.yaf.ui.lowlevel.checker.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.exceptions.ObjectStateError
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.exceptions.UnexpectedClassError
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.core.wait.TWait
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewGeneric
import xyz.myachin.yaf.core.exceptions.ObjectStateError
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.exceptions.UnexpectedClassError
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.core.wait.TWait
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewGeneric
class TViewGenericImpl(private val uiSelector: UiSelector) : TIViewGeneric {
private val uiObject: UiObject get() = tDevice.findObject(uiSelector)

@ -1,13 +1,13 @@
package xyz.myachin.yaw.ui.lowlevel.checker.impls
package xyz.myachin.yaf.ui.lowlevel.checker.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.exceptions.ObjectStateError
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.core.wait.TWait
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewGeneric
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
import xyz.myachin.yaf.core.exceptions.ObjectStateError
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.core.wait.TWait
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewGeneric
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
class TViewHasCheckboxImpl(private val uiSelector: UiSelector) : TIViewHasCheckbox,
TIViewGeneric by TViewGenericImpl(uiSelector) {

@ -1,13 +1,13 @@
package xyz.myachin.yaw.ui.lowlevel.checker.impls
package xyz.myachin.yaf.ui.lowlevel.checker.impls
import androidx.test.uiautomator.UiObject
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.core.exceptions.ObjectStateError
import xyz.myachin.yaw.core.exceptions.TAssert
import xyz.myachin.yaw.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaw.core.wait.TWait
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewGeneric
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasText
import xyz.myachin.yaf.core.exceptions.ObjectStateError
import xyz.myachin.yaf.core.exceptions.TAssert
import xyz.myachin.yaf.core.os.components.TOsComponents.tDevice
import xyz.myachin.yaf.core.wait.TWait
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewGeneric
import xyz.myachin.yaf.ui.lowlevel.checker.interfaces.TIViewHasText
class TViewHasTextImpl(private val uiSelector: UiSelector) : TIViewHasText,
TIViewGeneric by TViewGenericImpl(uiSelector) {

@ -1,6 +1,6 @@
package xyz.myachin.yaw.ui.lowlevel.checker.interfaces
package xyz.myachin.yaf.ui.lowlevel.checker.interfaces
import xyz.myachin.yaw.core.SHORT_WAIT
import xyz.myachin.yaf.core.SHORT_WAIT
interface TIViewGeneric {
fun wantExists(timeout: Long = SHORT_WAIT, assertIfFalse: Boolean = true): Boolean

@ -1,6 +1,6 @@
package xyz.myachin.yaw.ui.lowlevel.checker.interfaces
package xyz.myachin.yaf.ui.lowlevel.checker.interfaces
import xyz.myachin.yaw.core.SHORT_WAIT
import xyz.myachin.yaf.core.SHORT_WAIT
interface TIViewHasCheckbox {
fun wantCheckable(timeout: Long = SHORT_WAIT, assertIfFalse: Boolean = true): Boolean

@ -1,6 +1,6 @@
package xyz.myachin.yaw.ui.lowlevel.checker.interfaces
package xyz.myachin.yaf.ui.lowlevel.checker.interfaces
import xyz.myachin.yaw.core.SHORT_WAIT
import xyz.myachin.yaf.core.SHORT_WAIT
interface TIViewHasText {
fun wantTextIs(

@ -1,11 +0,0 @@
package xyz.myachin.yaw.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaw.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasText
class TButtonGeneric(private val uiSelector: UiSelector) :
TIClickable by TClickableImpl(uiSelector),
TIViewHasText by TViewHasTextImpl(uiSelector)

@ -1,11 +0,0 @@
package xyz.myachin.yaw.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaw.ui.lowlevel.checker.impls.TViewHasCheckboxImpl
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
class TCheckboxGeneric(private val uiSelector: UiSelector) :
TIViewHasCheckbox by TViewHasCheckboxImpl(uiSelector),
TIClickable by TClickableImpl(uiSelector)

@ -1,14 +0,0 @@
package xyz.myachin.yaw.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TReadableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TWriteableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIReadable
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIWriteable
import xyz.myachin.yaw.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasText
class TEditTextGeneric(private val uiSelector: UiSelector) :
TIViewHasText by TViewHasTextImpl(uiSelector),
TIReadable by TReadableImpl(uiSelector),
TIWriteable by TWriteableImpl(uiSelector)

@ -1,11 +0,0 @@
package xyz.myachin.yaw.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TReadableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIReadable
import xyz.myachin.yaw.ui.lowlevel.checker.impls.TViewHasTextImpl
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasText
class TTextGeneric(private val uiSelector: UiSelector) :
TIViewHasText by TViewHasTextImpl(uiSelector),
TIReadable by TReadableImpl(uiSelector)

@ -1,11 +0,0 @@
package xyz.myachin.yaw.ui.highlevel
import androidx.test.uiautomator.UiSelector
import xyz.myachin.yaw.ui.lowlevel.actions.impls.TClickableImpl
import xyz.myachin.yaw.ui.lowlevel.actions.interfaces.TIClickable
import xyz.myachin.yaw.ui.lowlevel.checker.impls.TViewHasCheckboxImpl
import xyz.myachin.yaw.ui.lowlevel.checker.interfaces.TIViewHasCheckbox
class TToggleButtonGeneric(private val uiSelector: UiSelector) :
TIViewHasCheckbox by TViewHasCheckboxImpl(uiSelector),
TIClickable by TClickableImpl(uiSelector)

@ -1,12 +1,17 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
kotlin_version = '1.6.10'
gradle_version = '7.0.4'
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.4"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
classpath "com.android.tools.build:gradle:$gradle_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

@ -3,8 +3,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
}
}
rootProject.name = "YAW"
rootProject.name = "YAF"
include ':app'

Loading…
Cancel
Save