From c533d078c702faadc744ff2674dfe5cd55737317 Mon Sep 17 00:00:00 2001 From: cloudbank Date: Sun, 19 Apr 2020 18:18:37 -0700 Subject: [PATCH] updates to androidx, target 29, fix bugs in permissions and window type update gitignore --- app/.gitignore | 87 ++++++- app/build.gradle | 17 +- .../floatingwidget/FloatWidgetService.java | 10 +- .../java/com/floatingwidget/MainActivity.java | 10 +- build.gradle | 36 ++- gradle.properties | 2 + gradle/wrapper/gradle-wrapper.properties | 2 +- versions.gradle | 228 ++++++++++++++++++ 8 files changed, 368 insertions(+), 24 deletions(-) create mode 100644 versions.gradle diff --git a/app/.gitignore b/app/.gitignore index 796b96d..b55fa64 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,86 @@ -/build +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# 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) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.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 +.externalNativeBuild +.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/ + diff --git a/app/build.gradle b/app/build.gradle index f10afc3..21bfd7b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,15 +1,16 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion "25.0.2" + compileSdkVersion build_versions.compile_sdk + buildToolsVersion build_versions.build_tools defaultConfig { applicationId "com.floatingwidget" - minSdkVersion 15 - targetSdkVersion 25 + minSdkVersion build_versions.min_sdk + targetSdkVersion build_versions.target_sdk versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -21,10 +22,10 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + androidTestCompile('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.2.0' - compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' + compile 'androidx.appcompat:appcompat:1.0.0' + compile 'androidx.constraintlayout:constraintlayout:1.1.3' testCompile 'junit:junit:4.12' } diff --git a/app/src/main/java/com/floatingwidget/FloatWidgetService.java b/app/src/main/java/com/floatingwidget/FloatWidgetService.java index 7b00d0e..1daf757 100644 --- a/app/src/main/java/com/floatingwidget/FloatWidgetService.java +++ b/app/src/main/java/com/floatingwidget/FloatWidgetService.java @@ -3,6 +3,7 @@ import android.app.Service; import android.content.Intent; import android.graphics.PixelFormat; +import android.os.Build; import android.os.IBinder; import android.view.Gravity; import android.view.LayoutInflater; @@ -29,11 +30,16 @@ public void onCreate() { super.onCreate(); mFloatingWidget = LayoutInflater.from(this).inflate(R.layout.layout_floating_widget, null); - + int LAYOUT_FLAG; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else { + LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE; + } final WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, - WindowManager.LayoutParams.TYPE_PHONE, + LAYOUT_FLAG, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); diff --git a/app/src/main/java/com/floatingwidget/MainActivity.java b/app/src/main/java/com/floatingwidget/MainActivity.java index 669424d..6a62c6d 100644 --- a/app/src/main/java/com/floatingwidget/MainActivity.java +++ b/app/src/main/java/com/floatingwidget/MainActivity.java @@ -4,12 +4,14 @@ import android.net.Uri; import android.os.Build; import android.provider.Settings; -import android.support.v7.app.AppCompatActivity; + import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; + public class MainActivity extends AppCompatActivity { private static final int APP_PERMISSION_REQUEST = 102; @@ -45,8 +47,10 @@ public void onClick(View view) { protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == APP_PERMISSION_REQUEST && resultCode == RESULT_OK) { - initializeView(); + if (requestCode == APP_PERMISSION_REQUEST) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(this))) { + initializeView(); + } } else { Toast.makeText(this, "Draw over other app permission not enable.", Toast.LENGTH_SHORT).show(); } diff --git a/build.gradle b/build.gradle index 1ea4bd0..8285785 100644 --- a/build.gradle +++ b/build.gradle @@ -1,21 +1,39 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - repositories { - jcenter() - } + apply from: 'versions.gradle' + + addRepos(repositories) + dependencies { - classpath 'com.android.tools.build:gradle:2.3.0' + classpath deps.android_gradle_plugin + classpath deps.kotlin.plugin + classpath deps.benchmark_gradle - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + } + repositories { + google() } } allprojects { - repositories { - jcenter() - } + addRepos(repositories) } task clean(type: Delete) { diff --git a/gradle.properties b/gradle.properties index aac7c9b..9e6fce1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 58286dc..787da21 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -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-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip \ No newline at end of file diff --git a/versions.gradle b/versions.gradle new file mode 100644 index 0000000..01f1afb --- /dev/null +++ b/versions.gradle @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +/** + * Shared file between builds so that they can all use the same dependencies and + * maven repositories. + **/ +ext.deps = [:] +def versions = [:] +versions.activity = '1.1.0' +versions.android_gradle_plugin = '3.6.1' +versions.annotations = "1.0.0" +versions.apache_commons = "2.5" +versions.appcompat = "1.2.0-alpha02" +versions.arch_core = "2.1.0" +versions.atsl_core = "1.2.0" +versions.atsl_junit = "1.1.1" +versions.atsl_rules = "1.2.0" +versions.atsl_runner = "1.2.0" +versions.benchmark = "1.0.0" +versions.cardview = "1.0.0" +versions.constraint_layout = "2.0.0-alpha2" +versions.core_ktx = "1.1.0" +versions.coroutines = "1.3.3" +versions.dagger = "2.16" +versions.dexmaker = "2.2.0" +versions.espresso = "3.2.0" +versions.fragment = "1.2.1" +versions.glide = "4.8.0" +versions.hamcrest = "1.3" +versions.junit = "4.12" +versions.kotlin = "1.3.61" +versions.lifecycle = "2.2.0" +versions.material = "1.0.0" +versions.mockito = "2.25.0" +versions.mockito_all = "1.10.19" +versions.mockito_android = "2.25.0" +versions.mockwebserver = "3.8.1" +versions.navigation = "2.3.0-alpha01" +versions.okhttp_logging_interceptor = "3.9.0" +versions.paging = "2.1.1" +versions.recyclerview = "1.0.0" +versions.retrofit = "2.3.0" +versions.robolectric = "4.2" +versions.room = "2.2.3" +versions.rx_android = "2.0.1" +versions.rxjava2 = "2.1.3" +versions.timber = "4.7.1" +versions.transition = "1.3.0" +versions.truth = "1.0.1" +versions.work = "2.2.0" +ext.versions = versions + +def build_versions = [:] +build_versions.min_sdk = 15 +build_versions.compile_sdk = 29 +build_versions.target_sdk = 29 +build_versions.build_tools = "29.0.3" +ext.build_versions = build_versions + +def deps = [:] + +def activity = [:] +activity.activity_ktx = "androidx.activity:activity-ktx:$versions.activity" +deps.activity = activity + +deps.android_gradle_plugin = "com.android.tools.build:gradle:$versions.android_gradle_plugin" + +deps.annotations = "androidx.annotation:annotation:$versions.annotations" + +deps.app_compat = "androidx.appcompat:appcompat:$versions.appcompat" + +def arch_core = [:] +arch_core.runtime = "androidx.arch.core:core-runtime:$versions.arch_core" +arch_core.testing = "androidx.arch.core:core-testing:$versions.arch_core" +deps.arch_core = arch_core + +def atsl = [:] +atsl.core = "androidx.test:core:$versions.atsl_core" +atsl.ext_junit = "androidx.test.ext:junit:$versions.atsl_junit" +atsl.runner = "androidx.test:runner:$versions.atsl_runner" +atsl.rules = "androidx.test:rules:$versions.atsl_rules" +deps.atsl = atsl + +deps.benchmark = "androidx.benchmark:benchmark-junit4:$versions.benchmark" +deps.benchmark_gradle = "androidx.benchmark:benchmark-gradle-plugin:$versions.benchmark" + +deps.cardview = "androidx.cardview:cardview:$versions.cardview" + +deps.constraint_layout = "androidx.constraintlayout:constraintlayout:$versions.constraint_layout" + +deps.core_ktx = "androidx.core:core-ktx:$versions.core_ktx" + +def coroutines = [:] +coroutines.android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$versions.coroutines" +coroutines.test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:$versions.coroutines" +deps.coroutines = coroutines + +def dagger = [:] +dagger.runtime = "com.google.dagger:dagger:$versions.dagger" +dagger.android = "com.google.dagger:dagger-android:$versions.dagger" +dagger.android_support = "com.google.dagger:dagger-android-support:$versions.dagger" +dagger.compiler = "com.google.dagger:dagger-compiler:$versions.dagger" +dagger.android_support_compiler = "com.google.dagger:dagger-android-processor:$versions.dagger" +deps.dagger = dagger + +deps.dexmaker = "com.linkedin.dexmaker:dexmaker-mockito:$versions.dexmaker" + +def espresso = [:] +espresso.core = "androidx.test.espresso:espresso-core:$versions.espresso" +espresso.contrib = "androidx.test.espresso:espresso-contrib:$versions.espresso" +espresso.intents = "androidx.test.espresso:espresso-intents:$versions.espresso" +deps.espresso = espresso + +def fragment = [:] +fragment.runtime = "androidx.fragment:fragment:${versions.fragment}" +fragment.runtime_ktx = "androidx.fragment:fragment-ktx:${versions.fragment}" +fragment.testing = "androidx.fragment:fragment-testing:${versions.fragment}" +deps.fragment = fragment + + +def glide = [:] +glide.runtime = "com.github.bumptech.glide:glide:$versions.glide" +glide.compiler = "com.github.bumptech.glide:compiler:$versions.glide" +deps.glide = glide + + +deps.hamcrest = "org.hamcrest:hamcrest-all:$versions.hamcrest" + +deps.junit = "junit:junit:$versions.junit" + +def kotlin = [:] +kotlin.stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" +kotlin.test = "org.jetbrains.kotlin:kotlin-test-junit:$versions.kotlin" +kotlin.plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin" +kotlin.allopen = "org.jetbrains.kotlin:kotlin-allopen:$versions.kotlin" +deps.kotlin = kotlin + +def lifecycle = [:] +lifecycle.runtime = "androidx.lifecycle:lifecycle-runtime:$versions.lifecycle" +lifecycle.java8 = "androidx.lifecycle:lifecycle-common-java8:$versions.lifecycle" +lifecycle.compiler = "androidx.lifecycle:lifecycle-compiler:$versions.lifecycle" +lifecycle.viewmodel_ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$versions.lifecycle" +lifecycle.livedata_ktx = "androidx.lifecycle:lifecycle-livedata-ktx:$versions.lifecycle" +deps.lifecycle = lifecycle + +deps.material = "com.google.android.material:material:$versions.material" + +def mockito = [:] +mockito.core = "org.mockito:mockito-core:$versions.mockito" +mockito.all = "org.mockito:mockito-all:$versions.mockito_all" +mockito.android = "org.mockito:mockito-android:$versions.mockito_android" +deps.mockito = mockito + +deps.mock_web_server = "com.squareup.okhttp3:mockwebserver:$versions.mockwebserver" + +def navigation = [:] +navigation.runtime = "androidx.navigation:navigation-runtime:$versions.navigation" +navigation.runtime_ktx = "androidx.navigation:navigation-runtime-ktx:$versions.navigation" +navigation.fragment = "androidx.navigation:navigation-fragment:$versions.navigation" +navigation.fragment_ktx = "androidx.navigation:navigation-fragment-ktx:$versions.navigation" +navigation.testing = "androidx.navigation:navigation-testing:$versions.navigation" +navigation.ui = "androidx.navigation:navigation-ui:$versions.navigation" +navigation.ui_ktx = "androidx.navigation:navigation-ui-ktx:$versions.navigation" +navigation.safe_args_plugin = "androidx.navigation:navigation-safe-args-gradle-plugin:$versions.navigation" +deps.navigation = navigation + +deps.okhttp_logging_interceptor = "com.squareup.okhttp3:logging-interceptor:${versions.okhttp_logging_interceptor}" + +deps.paging_ktx = "androidx.paging:paging-runtime-ktx:$versions.paging" + +deps.recyclerview = "androidx.recyclerview:recyclerview:$versions.recyclerview" + +def retrofit = [:] +retrofit.runtime = "com.squareup.retrofit2:retrofit:$versions.retrofit" +retrofit.gson = "com.squareup.retrofit2:converter-gson:$versions.retrofit" +retrofit.scalars = "com.squareup.retrofit2:converter-scalars:$versions.retrofit" +retrofit.mock = "com.squareup.retrofit2:retrofit-mock:$versions.retrofit" +deps.retrofit = retrofit + +deps.robolectric = "org.robolectric:robolectric:$versions.robolectric" + +def room = [:] +room.runtime = "androidx.room:room-runtime:$versions.room" +room.compiler = "androidx.room:room-compiler:$versions.room" +room.rxjava2 = "androidx.room:room-rxjava2:$versions.room" +room.testing = "androidx.room:room-testing:$versions.room" +deps.room = room + +deps.rx_android = "io.reactivex.rxjava2:rxandroid:$versions.rx_android" + +deps.rxjava2 = "io.reactivex.rxjava2:rxjava:$versions.rxjava2" + +deps.timber = "com.jakewharton.timber:timber:$versions.timber" + +deps.transition = "androidx.transition:transition:$versions.transition" + +deps.truth = "com.google.truth:truth:$versions.truth" + +def work = [:] +work.runtime = "androidx.work:work-runtime:$versions.work" +work.testing = "androidx.work:work-testing:$versions.work" +work.firebase = "androidx.work:work-firebase:$versions.work" +work.runtime_ktx = "androidx.work:work-runtime-ktx:$versions.work" +deps.work = work + +ext.deps = deps + +def addRepos(RepositoryHandler handler) { + handler.google() + handler.jcenter() + handler.maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } +} +ext.addRepos = this.&addRepos