错误"Failed resolution of: Lorg/tensorflow/lite/gpu/GpuDelegateFactory$Options"是什么意思?



我正在尝试在Android Studio中的模拟器(Pixel_2_API_30(上运行带有自定义模型的TensorflowLite对象检测应用程序。早些时候,我尝试在真实设备上运行该应用程序(Redmi Note 5(,一切都很好。当我首先在虚拟设备上启动时,我会看到MainActivity的背景,然后一切都消失了。我没有任何错误。为了找到错误日志,我不得不删除过滤器。错误如下:

2022-09-17 15:30:45.849 8131-8131/org.tensorflow.lite.examples.detection E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.tensorflow.lite.examples.detection, PID: 8131
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/tensorflow/lite/gpu/GpuDelegateFactory$Options;
at org.tensorflow.lite.gpu.GpuDelegate.<init>(GpuDelegate.java:52)
at org.tensorflow.lite.examples.detection.tflite.YoloV4Classifier.create(YoloV4Classifier.java:106)
at org.tensorflow.lite.examples.detection.MainActivity.initBox(MainActivity.java:556)
at org.tensorflow.lite.examples.detection.MainActivity.onCreate(MainActivity.java:172)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.tensorflow.lite.gpu.GpuDelegateFactory$Options" on path: DexPathList[[zip file "/data/app/~~RuidL0T-Xrm76Ba2iYwkEg==/org.tensorflow.lite.examples.detection-j7P9_Ul8AM0EKw12bQCN8g==/base.apk"],nativeLibraryDirectories=[/data/app/~~RuidL0T-Xrm76Ba2iYwkEg==/org.tensorflow.lite.examples.detection-j7P9_Ul8AM0EKw12bQCN8g==/lib/x86, /data/app/~~RuidL0T-Xrm76Ba2iYwkEg==/org.tensorflow.lite.examples.detection-j7P9_Ul8AM0EKw12bQCN8g==/base.apk!/lib/x86, /system/lib, /system_ext/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.tensorflow.lite.gpu.GpuDelegate.<init>(GpuDelegate.java:52) 
at org.tensorflow.lite.examples.detection.tflite.YoloV4Classifier.create(YoloV4Classifier.java:106) 
at org.tensorflow.lite.examples.detection.MainActivity.initBox(MainActivity.java:556) 
at org.tensorflow.lite.examples.detection.MainActivity.onCreate(MainActivity.java:172) 
at android.app.Activity.performCreate(Activity.java:8000) 
at android.app.Activity.performCreate(Activity.java:7984) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.java:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.tensorflow.lite.examples.detection">
<uses-sdk />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/tfe_od_app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme.ObjectDetection">
<activity
android:name=".CalculationActivity"
android:exported="false"
android:parentActivityName=".AllValuesActivity"/>
<activity
android:name=".AllValuesActivity"
android:exported="false"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".DetectorActivity"
android:label="@string/tfe_od_app_name"
android:screenOrientation="portrait" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

这里是build.gradle文件:

apply plugin: 'com.android.application'
apply plugin: 'de.undercouch.download'
android {
compileSdkVersion 33
//buildToolsVersion '28.0.3'
defaultConfig {
applicationId "org.tensorflow.lite.examples.detection"
minSdkVersion 21
targetSdkVersion 32
versionCode 1
versionName "1.0"
javaCompileOptions {
annotationProcessorOptions {
//includeCompileClasspath true
}
}
//        ndk {
//            abiFilters 'armeabi-v7a', 'arm64-v8a'
//        }
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
aaptOptions {
noCompress "tflite"
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
lintOptions {
abortOnError false
}
}

// import DownloadModels task
project.ext.ASSET_DIR = projectDir.toString() + '/src/main/assets'
project.ext.TMP_DIR = project.buildDir.toString() + '/downloads'
// Download default models; if you wish to use your own models then
// place them in the "assets" directory and comment out this line.
//apply from: "download_model.gradle"
apply from: 'download_model.gradle'
dependencies {
api 'com.google.android.material:material:1.8.0-alpha01'
implementation 'com.android.volley:volley:1.2.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
implementation 'com.google.android.material:material:1.6.1'
//implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
//implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly-SNAPSHOT'
//implementation 'org.tensorflow:tensorflow-lite:2.5.0'
//implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'
implementation 'org.tensorflow:tensorflow-lite:0.0.0-gpu-experimental'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'androidx.room:room-runtime:2.5.0-alpha03'
annotationProcessor  'androidx.room:room-compiler:2.5.0-alpha03'
implementation 'androidx.compose.material3:material3:1.0.0-beta01'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.google.truth:truth:1.0.1'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "android.arch.lifecycle:viewmodel:1.1.1"
//implementation 'com.savvi.datepicker:rangepicker:1.2.0'
}

有人能帮我找到修理它的方法吗?提前谢谢。

听起来Proguard在编译过程中删除了该类。你能试着在你的等级中设置minifyEnabled=false,看看这个问题是否能猜出来吗?

如果是这样,你需要添加一些Proguard规则来保持该类的完整

相关内容

  • 没有找到相关文章

最新更新