java.lang.NoClassDefFoundError:未能解析:Landroidx/appcompat/app/AppCompatActivity;

java.lang.NoClassDefFoundError:未能解析:Landroidx/appcompat/app/AppCompatActivity;,java,android,android-studio,logcat,Java,Android,Android Studio,Logcat,我有一个带有android studio插件的unity应用程序,当我按下按钮时,它会在我的手机上加载android摄像头应用程序。。。这里是java类: import android.content.Intent; import android.os.Bundle; import android.provider.MediaStore; import androidx.appcompat.app.AppCompatActivity; public class LoadAndroi

我有一个带有android studio插件的unity应用程序,当我按下按钮时,它会在我的手机上加载android摄像头应用程序。。。这里是java类:

 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import androidx.appcompat.app.AppCompatActivity;


 public class LoadAndroidApp extends AppCompatActivity 
 {
     @Override
     protected void onCreate(Bundle savedInstanceState) 
   {

     super.onCreate(savedInstanceState);
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     startActivity(intent);
   }
 }
这是我的建筑gradle:

    apply plugin: 'com.android.library'

android {
compileSdkVersion 30
buildToolsVersion "30.0.3"

defaultConfig {
    minSdkVersion 24
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    consumerProguardFiles "consumer-rules.pro"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}

dependencies 
{
  implementation fileTree(dir: "libs", include: ["*.jar"])
  implementation  'androidx.appcompat:appcompat:1.1.0-alpha04'
  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'androidx.test.ext:junit:1.1.2'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}
当我启动unity应用程序时,它不会崩溃,但我在logcat中有以下错误:

 2021-04-27 18:45:26.327 27678-27700/? E/Unity: AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/app/AppCompatActivity;
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/app/AppCompatActivity;
    at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
    at com.unity3d.player.UnityPlayer.access$300(Unknown Source:0)
    at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:241)
    at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
 Caused by: java.lang.ClassNotFoundException: androidx.appcompat.app.AppCompatActivity
    at com.unity3d.player.UnityPlayer.nativeRender(Native Method) 
    at com.unity3d.player.UnityPlayer.access$300(Unknown Source:0) 
    at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95) 
    at android.os.Handler.dispatchMessage(Handler.java:103) 
    at android.os.Looper.loop(Looper.java:241) 
    at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20) 
  at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.AndroidJNISafe.FindClass (System.String name) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) [0x00000] in <00000000000000000000000000000000>:0 
2021-04-27 18:45:26.327 27678-27700/?E/Unity:AndroidJavaException:java.lang.NoClassDefFoundError:Landroidx/appcompat/app/AppCompatActivity的解析失败;
java.lang.NoClassDefFoundError:未能解析:Landroidx/appcompat/app/AppCompatActivity;
位于com.unity3d.player.UnityPlayer.nativeRender(本机方法)
访问com.unity3d.player.UnityPlayer.access$300(未知来源:0)
在com.unity3d.player.UnityPlayer$e$1.handleMessage(未知来源:95)
位于android.os.Handler.dispatchMessage(Handler.java:103)
位于android.os.Looper.loop(Looper.java:241)
在com.unity3d.player.UnityPlayer$e.run(未知来源:20)
原因:java.lang.ClassNotFoundException:androidx.appcompat.app.AppCompatActivity
位于com.unity3d.player.UnityPlayer.nativeRender(本机方法)
访问com.unity3d.player.UnityPlayer.access$300(未知来源:0)
在com.unity3d.player.UnityPlayer$e$1.handleMessage(未知来源:95)
位于android.os.Handler.dispatchMessage(Handler.java:103)
位于android.os.Looper.loop(Looper.java:241)
在com.unity3d.player.UnityPlayer$e.run(未知来源:20)
位于:0中的UnityEngine.AndroidJNISafe.CheckException()[0x00000]处
位于:0中的UnityEngine.AndroidJNISafe.FindClass(System.String名称)[0x00000]处
在UnityEngine.AndroidJavaClass.\u AndroidJavaClass(System.String类名)[0x00000]中:0

请帮忙,我需要一些反馈。。。我读到这是因为aar文件不包含我们在gradle文件中添加的外部依赖项,但我在创建插件时没有出现错误。。。请帮帮我。。。提前感谢您。

当您编译插件时,它不包括“androidx.appcompat.app.AppCompatActivity”,您必须将该软件包添加到插件/Android文件夹中。有两种方法可以解决这个问题

1-!此插件有助于添加外部依赖项

2-你可以在Android开发者网站上找到dependency.jar或.aar

我推荐第一种选择。因为它还处理CoCoapod的依赖关系


如果您不需要任何依赖项,只需使用“活动”扩展您的类。如果活动类中包含函数,则无需添加任何依赖项。

Hello!非常感谢你的回答!我可以得到一些澄清(关于“活动”):我必须像这样导入java代码中的类吗?:导入android.app.Activity;在我的类名中更改如下内容?:公共类LoadAndroidApp扩展活动{}再次感谢!=)@希望是的,你可以这样做。如果用活动扩展类,就不需要额外的依赖关系。别忘了给你们班发“unity mainactivity”。你的插件主要用于unity的android活动。你可以用两种方式制作插件。扩展UnityPlayerPractivity并将“扩展的新活动”用作主要活动。另一种方法是制作aar库。谢谢你的回答!我正确理解插件(来自github):我必须在我的Unity项目中导入外部依赖项管理器-.unitypackage,并将外部依赖项管理器-.unitypackage和SampleDependencies.xml添加到我的android studio项目中,以便一切都能正常工作?(我的英语很差,我来自乌克兰,对不起)或者我在android studio项目中必须做的一切?