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" ,问题似乎与此文件有关。
我在运行时收到此错误(显然我不是唯一的错误):
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" ,问题似乎与此文件有关。