Landroidx/ActivityCompat解析失败;
我正在尝试为我的 Unity 游戏制作一个 java 库。在这种情况下,我想获得 Android API 的许可。但是,我收到错误:
AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/app/ActivityCompat;
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/app/ActivityCompat;
at com.company.test.PermissionsManager.requestPermissions(PermissionsManager.java:44)
at com.company.test.PermissionsManager.requestPermissions(PermissionsManager.java:34)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.ActivityCompat" on path: DexPathList[[zip file "/data/app/~~4Ois8qA39auK0A7jeoofDQ==/com.company.test-P2aLy8E-8yfCZc65VObuTQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~4Ois8qA39auK0A7jeoof
Here is build.gradle
:
plugins {
id 'com.android.library'
}
android {
compileSdk 31
defaultConfig {
minSdk 28
targetSdk 31
}
buildTypes {
release {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation "androidx.core:core-ktx:+"
compileOnly files('./libs/classes.jar') //Unity classes
}
PermissionManager:
package com.company.test;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class PermissionsManager extends ContextHolder {
public PermissionsManager(Context paramContext) {
super(paramContext);
}
public static boolean isPermissionsGranted(String paramString, Context paramContext) {
return !(Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(paramContext, paramString) != 0);
}
public void addPermissionRequestListener(PermissionRequestListener paramPermissionRequestListener) {
((MainActivity)this.context).addPermissionRequestListener(paramPermissionRequestListener);
}
public boolean isPermissionGranted(String paramString) {
return isPermissionsGranted(paramString, this.context);
}
public void removePermissionRequestListener(PermissionRequestListener paramPermissionRequestListener) {
((MainActivity)this.context).removePermissionRequestListener(paramPermissionRequestListener);
}
public void requestPermissions(String[] paramArrayOfString) {
requestPermissions(paramArrayOfString, null);
}
public void requestPermissions(String[] paramArrayOfString, PermissionRequestListener paramPermissionRequestListener) {
MainActivity mainActivity = (MainActivity)this.context;
if (paramPermissionRequestListener != null) {
int j = paramArrayOfString.length;
for (int i = 0; i < j; i++)
mainActivity.addPermissionRequestCallback(paramArrayOfString[i], paramPermissionRequestListener);
}
ActivityCompat.requestPermissions((Activity)mainActivity, paramArrayOfString, 0);
}
}
I think the Problem might be some in the build.gradle
, but from my bad experience with android templates ,我没有看到任何错误
I'm trying to make a java library for my Unity game. In this case I want get permission from Android API. However, I get an error:
AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/app/ActivityCompat;
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/app/ActivityCompat;
at com.company.test.PermissionsManager.requestPermissions(PermissionsManager.java:44)
at com.company.test.PermissionsManager.requestPermissions(PermissionsManager.java:34)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.ActivityCompat" on path: DexPathList[[zip file "/data/app/~~4Ois8qA39auK0A7jeoofDQ==/com.company.test-P2aLy8E-8yfCZc65VObuTQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~4Ois8qA39auK0A7jeoof
Here is build.gradle
:
plugins {
id 'com.android.library'
}
android {
compileSdk 31
defaultConfig {
minSdk 28
targetSdk 31
}
buildTypes {
release {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation "androidx.core:core-ktx:+"
compileOnly files('./libs/classes.jar') //Unity classes
}
PermissionManager:
package com.company.test;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class PermissionsManager extends ContextHolder {
public PermissionsManager(Context paramContext) {
super(paramContext);
}
public static boolean isPermissionsGranted(String paramString, Context paramContext) {
return !(Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(paramContext, paramString) != 0);
}
public void addPermissionRequestListener(PermissionRequestListener paramPermissionRequestListener) {
((MainActivity)this.context).addPermissionRequestListener(paramPermissionRequestListener);
}
public boolean isPermissionGranted(String paramString) {
return isPermissionsGranted(paramString, this.context);
}
public void removePermissionRequestListener(PermissionRequestListener paramPermissionRequestListener) {
((MainActivity)this.context).removePermissionRequestListener(paramPermissionRequestListener);
}
public void requestPermissions(String[] paramArrayOfString) {
requestPermissions(paramArrayOfString, null);
}
public void requestPermissions(String[] paramArrayOfString, PermissionRequestListener paramPermissionRequestListener) {
MainActivity mainActivity = (MainActivity)this.context;
if (paramPermissionRequestListener != null) {
int j = paramArrayOfString.length;
for (int i = 0; i < j; i++)
mainActivity.addPermissionRequestCallback(paramArrayOfString[i], paramPermissionRequestListener);
}
ActivityCompat.requestPermissions((Activity)mainActivity, paramArrayOfString, 0);
}
}
I think the problem may be somewhere in the build.gradle
, but from my poor experience with android libraries, I do not see any errors
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论