提交应用程序后出现错误:java.lang.NoSuchFieldError

问题描述 投票:0回答:1

我已经向Google Play内部测试提交了一个React Native应用程序,这些测试显示了一些稳定性错误,相同的aab文件安装在我的设备上并且工作得很好,调试模式也工作正常,没有错误,但是在Google Play内部测试中它显示错误:

java.lang.NoSuchFieldError:没有“Lcom/facebook/jni/HybridData;”场地 “Lcom/shopify/reactnative/skia/SkiaDomView”类中的“mHybridData”;或者 它的超类

还有另外一个说:

异常 java.lang.RuntimeException:无法暂停活动 {com.imagewatermarks/com.imagewatermarks.MainActivity}: com.facebook.react.uimanager.IllegalViewOperationException:尝试 添加未知视图标签:199 详细信息:视图标签:239 视图类型:class com.facebook.react.views.view.ReactViewGroup 子级(1): [ 193, ], viewsToAdd(1): [ [1,199], ], 在 android.app.ActivityThread.performPauseActivityIfNeeded (ActivityThread.java:4896)位于 android.app.ActivityThread.performPauseActivity (ActivityThread.java:4845)位于 android.app.ActivityThread.handlePauseActivity (ActivityThread.java:4796)位于 android.app.servertransaction.PauseActivityItem.execute (PauseActivityItem.java:46) 在 android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)位于 android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)位于 android.app.ActivityThread$H.handleMessage (ActivityThread.java:2144) 在 android.os.Handler.dispatchMessage (Handler.java:106) 处 androidx.test.espresso.base.Interrogator.loopAndInterrogate (Interrogator.java:10) 在 androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:7)位于 androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:1)位于 androidx.test.espresso.base.UiControllerImpl.loopMainThreadForAtLeast (UiControllerImpl.java:7)位于 androidx.test.espresso.action.Tap$1.sendTap (Tap.java:4) 在 androidx.test.espresso.action.GeneralClickAction.perform (GeneralClickAction.java:4)位于 androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform (ViewInteraction.java:2)位于 androidx.test.espresso.ViewInteraction.doPerform (ViewInteraction.java:23)位于 androidx.test.espresso.ViewInteraction.-$$Nest$mdo执行于 androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:6) 在 androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:1) 在 java.util.concurrent.FutureTask.run (FutureTask.java:266) 在 android.os.Handler.handleCallback (Handler.java:938) 在 android.os.Handler.dispatchMessage (Handler.java:99) 在 android.os.Looper.loop (Looper.java:240) 在 android.app.ActivityThread.main (ActivityThread.java:8000) 位于 java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:603) 位于 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)引起的 com.facebook.react.uimanager.IllegalViewOperationException:尝试 添加未知视图标签:199 详细信息:视图标签:239 视图类型:class com.facebook.react.views.view.ReactViewGroup 子级(1): [ 193, ], 视图添加(1):[[1,199],],

我在某处读到与 proguard 文件相关的错误,因此他们建议向我的文件添加一些代码行,所以这是我的 proguard-rules.pro 文件:

-keep class com.facebook.react.cxxbridge.ModuleRegistryHolder { *; }
-keep class com.facebook.react.cxxbridge.CatalystInstanceImpl { *; }
-keep class com.facebook.react.cxxbridge.JavaScriptExecutor { *; }
-keep class com.facebook.react.bridge.queue.NativeRunnable { *; }
-keep class com.facebook.react.bridge.ExecutorToken { *; }
-keep class com.facebook.react.bridge.ReadableType { *; }
-keep class com.facebook.react.** { *; }
-keepclassmembers class com.facebook.react.** { *; }

这是我的 /android/app/build.gradle 中的代码: def enableProguardInReleaseBuilds = true ....

    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            shrinkResources true
        }
    }
}

以及我的 android/build/build.gradle 文件:

buildscript {
    ext {
 buildToolsVersion = "30.0.3"
        minSdkVersion = 30
        compileSdkVersion = 33
        targetSdkVersion = 33
    
        // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
        ndkVersion = "23.1.7779620"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle")
        classpath("com.facebook.react:react-native-gradle-plugin")
    }
}

生成新的 aab 文件并提交后,这些更改没有产生任何效果,但在 google play 内部测试中仍然出现相同的错误,请您看看是否可以提供帮助。谢谢你。

android react-native google-play
1个回答
0
投票

对于任何面临类似问题的人,我已经解决了,通过将引发错误的类添加到我的 prodguard 文件中,它是:

-保留类 com.shopify.reactnative.skia.SkiaDomView {*;}

并且成功了。

© www.soinside.com 2019 - 2024. All rights reserved.