столкнулся с ошибкой при обновлении версии sdk с 28 до 29

Я сталкиваюсь с проблемой отказа в разрешении при копировании файла из внутреннего хранилища или SD-карты в каталог данных приложения. Та же проблема возникает при загрузке из внутренней памяти или SD-карты.

Я попытался собрать тот же исходный код в android target sdk 28, все работает хорошо, но функция не работает в android target sdk 29. Я также пытался установить target sdk 28 на устройствах и переустановить с target sdk 29 БЕЗ удаления. target sdk 28. Мое приложение хорошо работает в этом сценарии.

Может ли кто-нибудь помочь мне, как я могу изменить свою конфигурацию, чтобы предотвратить проблему отказа в разрешении?

    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <preference name="android-minSdkVersion" value="22" />
    <preference name="android-targetSdkVersion" value="29" />
    <preference name="AndroidPersistentFileLocation" value="Compatibility" />
    <platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>

person 3SC    schedule 03.09.2020    source источник


Ответы (1)


  1. Установите плагин Cordova для Android X

https://www.npmjs.com/package/cordova-plugin-androidx Плагин ionic cordova добавить Cordova-plugin-androidx npm i cordova-plugin-androidx

https://www.npmjs.com/package/cordova-plugin-androidx-adapter плагин ionic cordova add cordova-plugin-androidx-adapter npm i cordova-plugin-androidx-adapter

  1. Отредактируйте config.xml для SDK
<preference name="android-buildToolsVersion" value="29.0.0" />
<preference name="android-minSdkVersion" value="22" />
<preference name="android-compileSdkVersion" value="29" />
<preference name="android-targetSdkVersion" value="29" />
<preference name="android-supportLibVersion" value="28.0.0" />
<preference name="android-googlePlayServicesAuthVersion" value="16.0.1" />
  1. Удалить существующую платформу Android, добавить платформу Android 9.0.0 +

  2. Отредактируйте тег приложения в AndroidManifest.xml, добавьте атрибут ниже

Android: requestLegacyExternalStorage = true

person 3SC    schedule 04.09.2020