Как настроить проект с кодовым именем для установки на внешнее хранилище в Android - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь установить приложение на кодовое имя для установки на внешнее хранилище, поэтому мне не нужны права root для отладки того, что записывается в хранилище, поскольку оно не работает на Android, даже если оно работает в симуляторе.

Сначала я предположил, что только codename1.arg.android.installLocation=preferExternal в codenameone_settings.properties сделает это, но приложение все еще устанавливается во внутреннее хранилище даже после изменения этого installLocation, чтобы предпочесть External вместо auto.

Так что я подумал, что, возможно, ему нужны кавычки для Предпочитаемого и продолжил давать их (=\"preferExternal\") - это дает ошибку сборки манифеста на сервере сборки, которая показывает манифест с двойными кавычками, поэтому оригинал был правильным форма.

Из сообщения об ошибке я увидел, что

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="false" />

поэтому я подумал, что, возможно, это необходимо для установки на внешнее хранилище. Я попытался добавить codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE=true в файл свойств, как подсказывает документация, но это не помогло при объединении манифеста:

Результат слияния: ОШИБКА /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml:48:7-69 Ошибка: Элемент использует-разрешение # android.permission.WRITE_EXTERNAL_STORAGE на AndroidManifest.xml: 49: 5-81, дублированный с элементом, объявленным на AndroidManifest.xml: 45: 5-106 /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml Ошибка: Проверка не удалась, выход

Хорошо, поэтому я подумал, что это всегда включено, и поэтому мне просто нужно изменить требуемое значение на true, и следовал тому, что сказано в документации, добавив codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE.required=true к свойствам. Это строит, но фактическое разрешение не установлено на android:required="true", но остается ложным.

Использование тега android.xpermissions для вставки искомой строки <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" /> действительно вставляет его в манифест, но конструктор манифеста выдает ошибку, так как ложная строка по умолчанию все равно будет там:

Результат объединения: ОШИБКА /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml:48:3-103 Ошибка: Элемент использует-разрешение # android.permission.WRITE_EXTERNAL_STORAGE на AndroidManifest.xml: 48: 3-103, дублированный с элементом, объявленным на AndroidManifest.xml: 45: 5-106 /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml Ошибка: Проверка не удалась, выход

Таким образом, остается вопрос, как мне настроить проект с кодовым именем для установки на внешнее хранилище в Android ?

1 Ответ

0 голосов
/ 04 апреля 2019

См. Это android: installLocation = "предпочитать, чтобы" не работал

Суть в том, что части вашего приложения всегда будут устанавливаться в скрытой области, и хранилище, вероятно, будет там.

Если вы хотите записать материал на SD-карту, вы можете сделать это с помощью FileSystemStorage API, который позволяет вам записывать в произвольные корни.Вы можете обнаружить корень SDCard и просто написать туда.Я бы предложил отладку в симуляторе, где вы можете легко увидеть содержимое хранилища в каталоге .cn1.

...