已解决 Xamarin.Forms Java.Lang.RuntimeException:'无法获得提供商 androidx.startup.InitializationProvider
SOLVED Xamarin.Forms Java.Lang.RuntimeException: 'Unable to get provider androidx.startup.InitializationProvider
我有一个完全适用于 IOS 的应用程序,但是当我尝试在 Android 设备(物理或仿真)上启动时,然后点击任何方法(OnCreate、OnStart 等)应用程序崩溃并给我这个错误:
Java.Lang.RuntimeException: 'Unable to get provider androidx.startup.InitializationProvider: java.lang.ClassNotFoundException: Didn't find class "androidx.startup.InitializationProvider" on path: DexPathList[[zip file "/data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/lib/arm64, /data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]'
然后找了半天觉得问题可能出在两点:
-Android 项目
上的启动画面
或
-绑定一个.AAR文件(.AAR文件构建动作是LibraryProjectZip)
但是所有解决问题的尝试都失败了。
更新
这是Android清单
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application android:requestLegacyExternalStorage="true" android:label="My App" android:theme="@style/MainTheme">
<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:grantUriPermissions="true" android:exported="false">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" />
</provider>
</application>
更新 2
资源中 filepaths.xml 内的代码:
<paths>
<external-path path="." name="mydocuments" />
<external-path name="external_files" path="."/>
<files-path name="files" path="."/>
<internal-path name="internal_files" path="."/>
</paths>
更新 3
我尝试:
删除路径中的代码并将其替换为 ColeX 在上面 link 中提到的整个代码(无)
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="Pictures" />
<external-files-path name="my_movies" path="Movies" />
</paths>
保留我的代码并添加提到的代码(无)
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path path="." name="mydocuments" />
<external-path name="external_files" path="."/>
<files-path name="files" path="."/>
<internal-path name="internal_files" path="."/>
<external-files-path name="my_images" path="Pictures" />
<external-files-path name="my_movies" path="Movies" />
</paths>
将“外部文件路径”替换为“外部路径”,将“内部文件路径”替换为“内部路径”(无)
添加和删除
xmlns:android="http://schemas.android.com/apk/res/android"
在所有这些尝试中(没有太多)
我可以解决这个问题,这里或任何文件中共享的代码都没有问题,所以我认为问题出在加载应用程序的存储库中。我只是删除分支(分支等于 master)并创建一个新分支。现在 android 中的 App 运行良好。
特别感谢 ColeX 在这个问题上支持我并帮助我理解我的代码没有错
我有一个完全适用于 IOS 的应用程序,但是当我尝试在 Android 设备(物理或仿真)上启动时,然后点击任何方法(OnCreate、OnStart 等)应用程序崩溃并给我这个错误:
Java.Lang.RuntimeException: 'Unable to get provider androidx.startup.InitializationProvider: java.lang.ClassNotFoundException: Didn't find class "androidx.startup.InitializationProvider" on path: DexPathList[[zip file "/data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/lib/arm64, /data/app/com.myapp.myapp123-enX6MwKxPJAu9d6bm6sajg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]'
然后找了半天觉得问题可能出在两点:
-Android 项目
上的启动画面或
-绑定一个.AAR文件(.AAR文件构建动作是LibraryProjectZip)
但是所有解决问题的尝试都失败了。
更新
这是Android清单
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application android:requestLegacyExternalStorage="true" android:label="My App" android:theme="@style/MainTheme">
<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:grantUriPermissions="true" android:exported="false">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" />
</provider>
</application>
更新 2 资源中 filepaths.xml 内的代码:
<paths>
<external-path path="." name="mydocuments" />
<external-path name="external_files" path="."/>
<files-path name="files" path="."/>
<internal-path name="internal_files" path="."/>
</paths>
更新 3
我尝试:
删除路径中的代码并将其替换为 ColeX 在上面 link 中提到的整个代码(无)
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-files-path name="my_images" path="Pictures" /> <external-files-path name="my_movies" path="Movies" /> </paths>
保留我的代码并添加提到的代码(无)
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path path="." name="mydocuments" /> <external-path name="external_files" path="."/> <files-path name="files" path="."/> <internal-path name="internal_files" path="."/> <external-files-path name="my_images" path="Pictures" /> <external-files-path name="my_movies" path="Movies" /> </paths>
将“外部文件路径”替换为“外部路径”,将“内部文件路径”替换为“内部路径”(无)
添加和删除
xmlns:android="http://schemas.android.com/apk/res/android"
在所有这些尝试中(没有太多)
我可以解决这个问题,这里或任何文件中共享的代码都没有问题,所以我认为问题出在加载应用程序的存储库中。我只是删除分支(分支等于 master)并创建一个新分支。现在 android 中的 App 运行良好。
特别感谢 ColeX 在这个问题上支持我并帮助我理解我的代码没有错