Nano Hash - криптовалюты, майнинг, программирование

Разрешено удалять файлы/папки из ресурсов основного пакета?

Я разрабатываю приложение, которое будет поставляться в комплекте с некоторыми аудиофайлами. Их общий размер составит около 50 МБ. Приложение позволит вам загружать другие аудиофайлы через покупку в приложении. Моя цель — хранить все эти файлы в одном месте (каталоге документов).

Что я делаю в своем коде, так это:

  1. При первом запуске скопируйте связанные песни из основных ресурсов пакета в каталог документов.
  2. Удалите файлы из их исходного местоположения в основных ресурсах пакета.

У меня все это работает нормально, поэтому я знаю, что это возможно сделать. Мой вопрос: может ли кто-нибудь указать мне на документацию/рекомендации Apple, в которых говорится, что мне не разрешено это делать? Или это вполне приемлемо в соответствии с рекомендациями Apple? Я знаю, что они не хотят, чтобы вы писали в папку «Ресурсы», но не смогли найти окончательного ответа об удалении.


  • Вы не должны копировать в каталог Documents то, что существует в .app. Это большое нет-нет. Это пустая трата места, и ваше приложение на самом деле будет отклонено, потому что вы храните их в неправильном месте (например, они будут скопированы в iCloud, что приведет к трате большего количества места). Просто напишите процедуру для поиска файлов, которая сначала проверяет основной пакет, а затем возвращается к тому, где хранятся загруженные файлы (например, каталог Caches). Также невозможно удалить файлы из набора приложений из-за ограничений песочницы. 30.08.2013

Ответы:


1

Документация, которую вы ищете, находится в приложении Руководство по распространению [выделено мной]:"

Подписание кода вашего приложения позволяет операционной системе определить, кто подписал ваше приложение, и убедиться, что ваше приложение не было изменено с тех пор, как вы его подписали. Исполняемый код вашего приложения защищен его подписью, поскольку подпись становится недействительной, если какой-либо исполняемый код в комплекте приложения изменяется. Обратите внимание, что такие ресурсы, как изображения и файлы пера, не подписаны; поэтому изменение этих файлов не делает подпись недействительной.

Тем не менее, как я отметил в своих комментариях к ответу @Wain, это, вероятно, не очень хорошая вещь, если файлы доступны только для чтения. Он добавляет шаг большого копирования при первом запуске, и вам придется иметь дело с ним снова при каждом обновлении.

30.08.2013
  • Спасибо. Это то, что я искал. Я согласен, что это не очень хорошая идея, и, скорее всего, последую вашему совету, но, по крайней мере, я знаю, что если я захочу, то не должен быть отклонен из-за этого. 30.08.2013

  • 2

    Это неприемлемо и не будет работать при запуске на устройстве (думаю, вы тестируете на симуляторе). Вы не можете редактировать содержимое пакета. Пакет подписан, и его редактирование сделает подпись недействительной.

    Было бы целесообразно развернуть приложение без аудиофайлов, а затем начать их загрузку, как только появится (подходящее) подключение к Интернету после первого запуска (если это вариант для вас).

    30.08.2013
  • На устройстве работает нормально. Тем не менее, я думаю, я не вижу, удаляются ли файлы, но я могу сказать, что они копируются (что, очевидно, разрешено). 30.08.2013
  • Учитывая конкретную проблему, решение, вероятно, состоит в том, чтобы просто абстрагироваться от поиска файлов, чтобы большинству приложений не нужно было заботиться о том, находятся ли они в пакете или в каталоге документов. Обратите внимание, что каталог «Документы» обычно предназначен для пользовательских документов и имеет специальную обработку в iTunes. Обычно файлы приложений должны находиться в папке ~/Library/Application Support. 30.08.2013
  • Спасибо, Роб. Вы правы, что это, вероятно, лучшее решение. И мои файлы на самом деле частично хранятся в Документах (некоторые файлы, которые я хочу передать через iTunes) и в Поддержке приложений (только для воспроизведения на устройстве). Я просто немного упростил свой вопрос. 30.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..