Landroidx/ActivityCompat解析失败;

发布于 2025-01-14 23:45:12 字数 3308 浏览 1 评论 0原文

我正在尝试为我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文