Explorar el Código

添加kotlin jar包

yanyi hace 4 años
padre
commit
1cb7276b29
Se han modificado 26 ficheros con 280 adiciones y 96 borrados
  1. 5 10
      README.md
  2. 16 3
      app/build.gradle
  3. 13 8
      app/src/main/java/com/yanyi/basepermission/MainActivity.java
  4. 47 59
      app/src/main/java/com/yanyi/basepermission/PermissionUtil.java
  5. 2 1
      build.gradle
  6. 1 1
      gradle/wrapper/gradle-wrapper.properties
  7. 0 0
      permission_kt/.gitignore
  8. 28 0
      permission_kt/bintrayUploadKt.gradle
  9. 2 2
      permission_kt/build.gradle
  10. 0 0
      permission_kt/consumer-rules.pro
  11. 0 0
      permission_kt/proguard-rules.pro
  12. 0 0
      permission_kt/src/androidTest/java/com/benyanyi/permission/kt/ExampleInstrumentedTest.kt
  13. 0 0
      permission_kt/src/main/AndroidManifest.xml
  14. 5 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionConfig.kt
  15. 2 4
      permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionFragment.kt
  16. 6 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionHelper.kt
  17. 6 3
      permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionRequest.kt
  18. 0 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionAction.kt
  19. 0 2
      permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionCallBack.kt
  20. 0 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionConsumer.kt
  21. 144 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/info/BenYanYiPermissionDialogInfo.kt
  22. 0 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogInfo.kt
  23. 0 0
      permission_kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogOnClick.kt
  24. 0 0
      permission_kt/src/test/java/com/benyanyi/permission/kt/ExampleUnitTest.kt
  25. 2 2
      permissionlib/build.gradle
  26. 1 1
      settings.gradle

+ 5 - 10
README.md

@@ -12,21 +12,16 @@ repositories {
     }
 ~~~
 ### module 下添加
-~~~
-implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.3'
-~~~
 
-或者
 ~~~
-<dependency>
-  <groupId>com.yanyi.benyanyi</groupId>
-  <artifactId>PermissionHelper</artifactId>
-  <version>1.1.3</version>
-  <type>aar</type>
-</dependency>
+//java版本
+implementation 'com.yanyi.benyanyi:PermissionHelper:1.1.3'
+//kotlin版本
+implementation 'com.yanyi.benyanyi:PermissionHelper-kt:1.1.3'
 ~~~
 
 ### 版本更新
+* 2021-03-23更新(1.1.3) 添加kotlin版1.1.3版本
 * 2021-03-12更新(1.1.3) 修复不同页面调用权限请求时,activity为空报错
 * 2021-02-27更新(1.1.2) 添加销毁方法,防止请求未销毁造成的报错
 * 2021-02-03更新(1.1.1) 将接收FragmentActivity更改为Activity

+ 16 - 3
app/build.gradle

@@ -1,4 +1,6 @@
 apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
 
 android {
     compileSdkVersion 29
@@ -16,14 +18,25 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+    kotlinOptions {
+        jvmTarget = '1.8'
+    }
 }
 
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
-    implementation 'androidx.appcompat:appcompat:1.0.0'
+    implementation 'androidx.appcompat:appcompat:1.2.0'
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
-    implementation project(':permission-kt')
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+
+    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+    implementation 'androidx.core:core-ktx:1.3.2'
+//    implementation project(':permission_kt')
 //    implementation project(':permissionlib')
+    implementation('com.yanyi.benyanyi:PermissionHelper-kt:1.1.3')
 }

+ 13 - 8
app/src/main/java/com/yanyi/basepermission/MainActivity.java

@@ -8,7 +8,6 @@ import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
 
 import com.benyanyi.permission.kt.PermissionHelper;
-import com.benyanyi.permission.kt.callback.PermissionAction;
 
 /**
  * @author myLove
@@ -23,15 +22,21 @@ public class MainActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.act_main);
         PermissionHelper.Companion.getInstance(this)
-                .setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE,
-                        Manifest.permission.READ_EXTERNAL_STORAGE)
+                .setPermissions(Manifest.permission.READ_PHONE_STATE,
+                        Manifest.permission.CALL_PHONE,
+                        Manifest.permission.ACCESS_COARSE_LOCATION,
+                        Manifest.permission.ACCESS_FINE_LOCATION)
+                .setDefaultPermissionDialogInfo()
                 .request()
-                .onPermissionSuccess(new PermissionAction() {
-                    @Override
-                    public void accept() {
-
+                .onPermissionSuccess(() -> log("请求成功"))
+                .onPermissionFailure(strings -> {
+                    StringBuilder str = new StringBuilder();
+                    for (String s : strings) {
+                        str.append("\n").append(s);
                     }
-                });
+                    log(str.toString());
+                })
+                .onPermissionComplete(() -> log("请求完成"));
     }
 
 

+ 47 - 59
app/src/main/java/com/yanyi/basepermission/PermissionUtil.java

@@ -1,67 +1,55 @@
 package com.yanyi.basepermission;
 
-import android.Manifest;
-import android.util.Log;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import com.benyanyi.permissionlib.PermissionBind;
-import com.benyanyi.permissionlib.annotation.GetPermissionComplete;
-import com.benyanyi.permissionlib.annotation.GetPermissionFailure;
-import com.benyanyi.permissionlib.annotation.GetPermissionSuccess;
-import com.benyanyi.permissionlib.annotation.GetPermissions;
-import com.benyanyi.permissionlib.msg.FailureMsg;
-
 /**
  * @author YanYi
  * @date 2019/5/30 11:05
  * @email ben@yanyi.red
  * @overview
  */
-@GetPermissions({Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE})
-public class PermissionUtil {
-
-    public void getPermission(AppCompatActivity activity) {
-        PermissionBind.request(activity, this);
-    }
-
-    @GetPermissionSuccess()
-    private void success(int permissionCode) {
-        log(permissionCode);
-    }
-
-    @GetPermissionFailure
-    private void failure(FailureMsg failureMsg) {
-        log(failureMsg);
-    }
-
-    @GetPermissionComplete
-    private void complete(int permissionCode) {
-        log(permissionCode);
-    }
-
-    private void log(Object object) {
-        Log.d(defaultTag(), object.toString());
-    }
-
-    private String defaultTag() {
-        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
-        StackTraceElement log = stackTrace[1];
-        String tag = null;
-        for (int i = 1; i < stackTrace.length; i++) {
-            StackTraceElement e = stackTrace[i];
-            if (!e.getClassName().equals(log.getClassName())
-                    && !"defaultTag".equals(e.getMethodName())
-                    && !"log".equals(e.getMethodName())) {
-                tag = e.getClassName() + "." + e.getMethodName();
-                break;
-            }
-        }
-        if (tag == null) {
-            tag = log.getClassName() + "." + log.getMethodName();
-
-        }
-        return tag;
-    }
-
-}
+//@GetPermissions({Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_PHONE_STATE})
+//public class PermissionUtil {
+//
+//    public void getPermission(AppCompatActivity activity) {
+//        PermissionBind.request(activity, this);
+//    }
+//
+//    @GetPermissionSuccess()
+//    private void success(int permissionCode) {
+//        log(permissionCode);
+//    }
+//
+//    @GetPermissionFailure
+//    private void failure(FailureMsg failureMsg) {
+//        log(failureMsg);
+//    }
+//
+//    @GetPermissionComplete
+//    private void complete(int permissionCode) {
+//        log(permissionCode);
+//    }
+//
+//    private void log(Object object) {
+//        Log.d(defaultTag(), object.toString());
+//    }
+//
+//    private String defaultTag() {
+//        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+//        StackTraceElement log = stackTrace[1];
+//        String tag = null;
+//        for (int i = 1; i < stackTrace.length; i++) {
+//            StackTraceElement e = stackTrace[i];
+//            if (!e.getClassName().equals(log.getClassName())
+//                    && !"defaultTag".equals(e.getMethodName())
+//                    && !"log".equals(e.getMethodName())) {
+//                tag = e.getClassName() + "." + e.getMethodName();
+//                break;
+//            }
+//        }
+//        if (tag == null) {
+//            tag = log.getClassName() + "." + log.getMethodName();
+//
+//        }
+//        return tag;
+//    }
+//
+//}

+ 2 - 1
build.gradle

@@ -3,7 +3,7 @@
 buildscript {
 
     ext {
-        kotlin_version = '1.3.40'
+        kotlin_version = '1.3.71'
     }
     repositories {
         google()
@@ -24,6 +24,7 @@ allprojects {
     repositories {
         google()
         jcenter()
+        maven{ url 'http://maven.benyanyi.com/nexus/content/repositories/mylove/'}
         //解决中文乱码问题
         tasks.withType(Javadoc) { //兼容中文
             options.addStringOption('Xdoclint:none', '-quiet')

+ 1 - 1
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-4.6-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip

+ 0 - 0
permission-kt/.gitignore → permission_kt/.gitignore


+ 28 - 0
permission_kt/bintrayUploadKt.gradle

@@ -0,0 +1,28 @@
+apply plugin: 'maven-publish'
+apply plugin: 'maven'
+
+Properties properties = new Properties()
+properties.load(project.rootProject.file('local.properties').newDataInputStream())
+uploadArchives {
+    repositories {
+        mavenDeployer {
+            repository(url: properties.getProperty("POM_URL")) {
+                authentication(userName: properties.getProperty("nexus.user"), password: properties.getProperty("nexus.password"))
+            }
+
+            pom.groupId = properties.getProperty("POM_GROUP_ID")
+            pom.artifactId = properties.getProperty("POM_ATRIFACT_KT_ID")
+            pom.version = properties.getProperty("POM_VERSION")
+
+            pom.project {
+                licenses {
+                    license {
+                        name 'The Apache Software License, Version 2.0'
+                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                    }
+                }
+            }
+        }
+    }
+}
+//gradlew uploadArchivesKt    terminal中输入

+ 2 - 2
permission-kt/build.gradle → permission_kt/build.gradle

@@ -36,8 +36,8 @@ dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
     implementation 'androidx.core:core-ktx:1.3.2'
     implementation 'androidx.appcompat:appcompat:1.2.0'
-    implementation 'com.google.android.material:material:1.2.1'
     testImplementation 'junit:junit:4.+'
     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
-}
+}
+apply from: 'bintrayUploadKt.gradle'

+ 0 - 0
permission-kt/consumer-rules.pro → permission_kt/consumer-rules.pro


+ 0 - 0
permission-kt/proguard-rules.pro → permission_kt/proguard-rules.pro


+ 0 - 0
permission-kt/src/androidTest/java/com/benyanyi/permission/kt/ExampleInstrumentedTest.kt → permission_kt/src/androidTest/java/com/benyanyi/permission/kt/ExampleInstrumentedTest.kt


+ 0 - 0
permission-kt/src/main/AndroidManifest.xml → permission_kt/src/main/AndroidManifest.xml


+ 5 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/PermissionConfig.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionConfig.kt

@@ -22,6 +22,11 @@ interface PermissionConfig {
      */
     fun setPermissionDialogInfo(info: PermissionDialogInfo): PermissionConfig
 
+    /**
+     * 设置默认权限弹窗
+     */
+    fun setDefaultPermissionDialogInfo(): PermissionConfig
+
     fun request(): PermissionRequest
 
 }

+ 2 - 4
permission-kt/src/main/java/com/benyanyi/permission/kt/PermissionFragment.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionFragment.kt

@@ -3,10 +3,8 @@ package com.benyanyi.permission.kt
 import android.app.AlertDialog
 import android.content.Intent
 import android.content.pm.PackageManager
-import android.content.pm.PermissionInfo
 import android.os.Build
 import android.os.Bundle
-import android.text.TextUtils
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
@@ -61,7 +59,7 @@ class PermissionFragment : Fragment() {
      */
     private fun checkPermission(): Boolean {
         oList.clear()
-        if (permissions != null && permissions!!.isNotEmpty()) {
+        if (permissions == null || permissions!!.isEmpty()) {
             return true
         }
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
@@ -144,7 +142,7 @@ class PermissionFragment : Fragment() {
     private fun showDialog() {
         val builder = AlertDialog.Builder(activity)
         val title = info?.title ?: "权限不足"
-        val message = info?.message ?: "需要必须的权限才能正常使用本应用"
+        val message = info?.message ?: "需要获取该权限才能正常使用应用功能"
         val positiveText = info?.positiveText ?: "重新获取权限"
         val negativeText = info?.negativeText ?: "退出"
         val isShow = info?.isShow ?: false

+ 6 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/PermissionHelper.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionHelper.kt

@@ -1,6 +1,7 @@
 package com.benyanyi.permission.kt
 
 import androidx.appcompat.app.AppCompatActivity
+import com.benyanyi.permission.kt.info.BenYanYiPermissionDialogInfo
 import com.benyanyi.permission.kt.info.PermissionDialogInfo
 
 /**
@@ -61,6 +62,11 @@ class PermissionHelper : PermissionConfig {
         return this
     }
 
+    override fun setDefaultPermissionDialogInfo(): PermissionConfig {
+        fragment.setPermissionInfo(BenYanYiPermissionDialogInfo.getInfo(mActivity))
+        return this
+    }
+
 
     override fun request(): PermissionRequest {
         fragment.startForPermissionResult(request)

+ 6 - 3
permission-kt/src/main/java/com/benyanyi/permission/kt/PermissionRequest.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/PermissionRequest.kt

@@ -35,15 +35,18 @@ class PermissionRequest {
         return callBack
     }
 
-    fun onPermissionSuccess(action: PermissionAction) {
+    fun onPermissionSuccess(action: PermissionAction): PermissionRequest {
         this.successAction = action
+        return this
     }
 
-    fun onPermissionFailure(consumer: PermissionConsumer<Array<out String>>) {
+    fun onPermissionFailure(consumer: PermissionConsumer<Array<out String>>): PermissionRequest {
         this.failureConsumer = consumer
+        return this
     }
 
-    fun onPermissionComplete(action: PermissionAction) {
+    fun onPermissionComplete(action: PermissionAction): PermissionRequest {
         this.completeAction = action
+        return this
     }
 }

+ 0 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionAction.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionAction.kt


+ 0 - 2
permission-kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionCallBack.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionCallBack.kt

@@ -1,7 +1,5 @@
 package com.benyanyi.permission.kt.callback
 
-import com.benyanyi.permission.kt.msg.FailureMsg
-
 /**
  * @author YanYi
  * @date 2021/3/22 16:16

+ 0 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionConsumer.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/callback/PermissionConsumer.kt


+ 144 - 0
permission_kt/src/main/java/com/benyanyi/permission/kt/info/BenYanYiPermissionDialogInfo.kt

@@ -0,0 +1,144 @@
+package com.benyanyi.permission.kt.info
+
+import android.app.Activity
+import android.content.ComponentName
+import android.content.Context
+import android.content.DialogInterface
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import java.util.*
+
+/**
+ * @author YanYi
+ * @date 2021/3/23 10:05
+ * @email ben@yanyi.red
+ * @overview
+ */
+object BenYanYiPermissionDialogInfo {
+    fun getInfo(activity: Activity): PermissionDialogInfo {
+        val sdk = Build.VERSION.SDK_INT// SDK号
+        val model = Build.MODEL// 手机型号
+        val release = Build.VERSION.RELEASE // android系统版本号
+        val brand = Build.BRAND//手机厂商
+        val permissionInfo = PermissionDialogInfo()
+        permissionInfo.isShow = true
+        permissionInfo.message = "权限不足,功能将无法正常使用"
+        permissionInfo.title = "权限不足"
+        permissionInfo.negativeText = "取消"
+        permissionInfo.negativeClick = object : PermissionDialogInfo.NegativeClick {
+            override fun onClick(dialog: DialogInterface, failurePermissions: Array<String>) {
+                dialog.dismiss()
+            }
+        }
+        permissionInfo.positiveText = "设置权限"
+        permissionInfo.positiveClick = object : PermissionDialogInfo.PositiveClick {
+            override fun onClick(dialog: DialogInterface, failurePermissions: Array<String>) {
+                if (brand.toLowerCase(Locale.ROOT) == "redmi" || brand.toLowerCase(Locale.ROOT) == "xiaomi") {
+                    gotoXMPermission(activity)
+                } else if (brand.toLowerCase(Locale.ROOT) == "meizu") {
+                    gotoMZPermission(activity)
+                } else if (brand.toLowerCase(Locale.ROOT) == "huawei" || brand.toLowerCase(Locale.ROOT) == "honor") {
+                    gotoHWPermission(activity)
+                } else {
+                    activity.startActivity(getAppDetailSettingIntent(activity))
+                }
+                dialog.dismiss()
+            }
+        }
+        return permissionInfo
+    }
+
+    /**
+     * 跳转到miui的权限管理页面
+     */
+    private fun gotoXMPermission(activity: Activity) {
+        try {
+            val localIntent = Intent("miui.intent.action.APP_PERM_EDITOR")
+            localIntent.setClassName(
+                    "com.miui.securitycenter",
+                    "com.miui.permcenter.permissions.PermissionsEditorActivity"
+            )
+            localIntent.putExtra("extra_pkgname", activity.applicationContext.packageName)
+            activity.startActivity(localIntent)
+        } catch (e: Exception) {
+            try {
+                val localIntent = Intent("miui.intent.action.APP_PERM_EDITOR")
+                localIntent.setClassName(
+                        "com.miui.securitycenter",
+                        "com.miui.permcenter.permissions.AppPermissionsEditorActivity"
+                )
+                localIntent.putExtra("extra_pkgname", activity.applicationContext.packageName)
+                activity.startActivity(localIntent)
+            } catch (e: Exception) {
+                e.fillInStackTrace()
+                activity.startActivity(getAppDetailSettingIntent(activity))
+            }
+        }
+    }
+
+    /**
+     * 跳转到魅族的权限管理系统
+     */
+    private fun gotoMZPermission(activity: Activity) {
+        try {
+            val intent = Intent("com.meizu.safe.security.SHOW_APPSEC")
+            intent.addCategory(Intent.CATEGORY_DEFAULT)
+            intent.putExtra("packageName", activity.applicationContext.packageName)
+            activity.startActivity(intent)
+        } catch (e: Exception) {
+            e.fillInStackTrace()
+            activity.startActivity(getAppDetailSettingIntent(activity))
+        }
+    }
+
+    /**
+     * 华为的权限管理页面
+     */
+    private fun gotoHWPermission(activity: Activity) {
+        try {
+            val intent = Intent()
+            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
+            val comp = ComponentName(
+                    "com.huawei.systemmanager",
+                    "com.huawei.permissionmanager.ui.MainActivity"
+            )//华为权限管理
+            intent.component = comp
+            activity.startActivity(intent)
+        } catch (e: Exception) {
+            e.fillInStackTrace()
+            activity.startActivity(getAppDetailSettingIntent(activity))
+        }
+    }
+
+    /**
+     * 获取应用详情页面intent(如果找不到要跳转的界面,也可以先把用户引导到系统设置页面)
+     *
+     * @return
+     */
+    private fun getAppDetailSettingIntent(activity: Activity): Intent {
+        val localIntent = Intent()
+        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+        if (Build.VERSION.SDK_INT >= 9) {
+            localIntent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
+            localIntent.data = Uri.fromParts("package", getPackageName(activity), null)
+        } else {
+            localIntent.action = Intent.ACTION_VIEW
+            localIntent.setClassName(
+                    "com.android.settings",
+                    "com.android.settings.InstalledAppDetails"
+            )
+            localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName(activity))
+        }
+        return localIntent
+    }
+
+    /**
+     * 获取包名
+     *
+     * @return
+     */
+    fun getPackageName(activity: Activity): String {
+        return activity.packageName ?: ""
+    }
+}

+ 0 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogInfo.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogInfo.kt


+ 0 - 0
permission-kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogOnClick.kt → permission_kt/src/main/java/com/benyanyi/permission/kt/info/PermissionDialogOnClick.kt


+ 0 - 0
permission-kt/src/test/java/com/benyanyi/permission/kt/ExampleUnitTest.kt → permission_kt/src/test/java/com/benyanyi/permission/kt/ExampleUnitTest.kt


+ 2 - 2
permissionlib/build.gradle

@@ -27,9 +27,9 @@ android {
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
 
-    implementation 'androidx.appcompat:appcompat:1.0.0'
+    implementation 'androidx.appcompat:appcompat:1.2.0'
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
 }
 apply from: 'bintrayUpload.gradle'

+ 1 - 1
settings.gradle

@@ -1,2 +1,2 @@
-include ':permission-kt'
+include ':permission_kt'
 include ':app', ':permissionlib'