runtime error: No static method checkSelfPermission

runtime error: No static method checkSelfPermission

我在运行时收到此错误(显然我不是唯一的错误):

6-25 14:30:00.016 28669-28669/com.augview.augviewdev E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.augview.augviewdev, PID: 28669
    java.lang.NoSuchMethodError: No static method checkSelfPermission(Landroid/content/Context;Ljava/lang/String;)I in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.augview.augviewdev-l2kpvmbk9RA-t7-vOPwQ6Q==/base.apk)
        at com.augview.augview.AndroidLocation.run(AndroidLocation.java:86)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

这是我的 gradle 文件:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'

    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 27
        versionCode 2
        versionName "2.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    android.libraryVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "AugviewAndroidPlugins.aar"
        }
    }
}

dependencies {
    compileOnly files('libs/classes.jar')
    implementation files('libs/sqlcipher.jar')
    implementation 'com.android.support:support-v4:27.0.3'
}

崩溃的调用代码如下:

public void startLocationService(final double updateDistanceInMeters, final boolean highAccuracy) {

    activity.runOnUiThread(new Runnable() {
        public void run() {

            boolean canUseFineLocation = ContextCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED;
//... do some stuff

SO 上的当前解决方案建议将支持版本设置为 27.x.x,我已经这样做了。我尝试用 27.0.0 和 27.1.1 替换 'com.android.support:support-v4:27.0.3' 的版本位,它们也都可以编译,但也会在运行时崩溃。 谢谢 纪尧姆

用较新的版本更新 classes.jar 修复了它。谢谢@madcode。

请检查 "libs/classes.jar" ,问题似乎与此文件有关。