我为.jar创建了一个绑定,它在测试分支中工作正常,但是当将这个相同的.jar绑定移动到我们的 生产环境 分支时,会抛出以下错误 .
Java.Lang.ClassNotFoundException:在路径上找不到类"com.site24x7.android.apm.Apm":DexPathList [[zip文件"/data/app/com.mycomany.myappname-1.apk"],nativeLibraryDirectories = [/ data / app-lib / com.mycompany.myappname-1,/ vendor / lib,/ system / lib ]]
我发现
java.lang.ClassNotFoundException: Didn't find class on path: dexpathlist
但我没有在Visual Studio或Xamarin Studio中看到任何地方选择Java Build Path并按照这些说明操作 .
2 回答
你需要确保你的绑定 jar ,以便它嵌入到.apk中 . 您可以在我们的故障排除页面上找到类似的错
https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/troubleshooting-bindings/#Problem_NoClassDefFoundError_in_packaging
java.lang.NoClassDefFoundError is thrown in the packaging step.
Possible Causes:
出现此错误的最可能原因是需要将强制Java库添加到应用程序项目(.csproj)中 . .JAR文件不会自动解析 . 并不总是针对目标设备或模拟器中不存在的用户程序集生成Java库绑定(例如Google Maps maps.jar) . 这不是Android库项目支持的情况,因为库.JAR嵌入在库dll中 . 例如:https://bugzilla.xamarin.com/show_bug.cgi?id=4288
你可以在
Embedded vs Non-Embedded
找到一个小纸条:https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb#embedded-vs-non-embedded
我改为EmbeddedJar而不是InputJar,它现在工作正常 . Xamarins网站上的文档没有说它必须是嵌入式的,绑定项目默认为Input但InputJar导致了dexpath问题 .