Почему это предупреждение? & ldquo; Не удалось установить приложение, это приложение не поддерживает тип CPU этого устройства; rdquo; [Дубликат]

Если вы хотите сгладить структуру данных, где вы не знаете, насколько глубоко она вложена, вы можете использовать iteration_utilities.deepflatten 1

>>> from iteration_utilities import deepflatten

>>> l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
>>> list(deepflatten(l, depth=1))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l = [[1, 2, 3], [4, [5, 6]], 7, [8, 9]]
>>> list(deepflatten(l))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Это генератор, поэтому вам нужно передать результат в list или явно перебрать его.


Чтобы сгладить только один уровень, и если каждый из элементов сам итерабельен, вы также можете использовать iteration_utilities.flatten , который сам по себе является лишь тонкой оболочкой вокруг itertools.chain.from_iterable :

>>> from iteration_utilities import flatten
>>> l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
>>> list(flatten(l))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Просто добавьте некоторые тайминги (на основании ответа Нико Шломера, 't включить функцию, представленную в этом ответе):

Это график лог-журнала для размещения для огромного диапазона значений, охватываемых. Для качественных рассуждений: лучше нижний.

Результаты показывают, что если итерабель содержит только несколько внутренних итераций, тогда sum будет самым быстрым, однако для длинных итераций только itertools.chain.from_iterable, iteration_utilities.deepflatten или вложенное понимание имеет разумную производительность, причем itertools.chain.from_iterable является самым быстрым (как уже заметил Нико Шломер).

from itertools import chain
from functools import reduce
from collections import Iterable  # or from collections.abc import Iterable
import operator
from iteration_utilities import deepflatten

def nested_list_comprehension(lsts):
    return [item for sublist in lsts for item in sublist]

def itertools_chain_from_iterable(lsts):
    return list(chain.from_iterable(lsts))

def pythons_sum(lsts):
    return sum(lsts, [])

def reduce_add(lsts):
    return reduce(lambda x, y: x + y, lsts)

def pylangs_flatten(lsts):
    return list(flatten(lsts))

def flatten(items):
    """Yield items from any nested iterable; see REF."""
    for x in items:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x

def reduce_concat(lsts):
    return reduce(operator.concat, lsts)

def iteration_utilities_deepflatten(lsts):
    return list(deepflatten(lsts, depth=1))


from simple_benchmark import benchmark

b = benchmark(
    [nested_list_comprehension, itertools_chain_from_iterable, pythons_sum, reduce_add,
     pylangs_flatten, reduce_concat, iteration_utilities_deepflatten],
    arguments={2**i: [[0]*5]*(2**i) for i in range(1, 13)},
    argument_name='number of inner lists'
)

b.plot()

1 Отказ от ответственности: я являюсь автором этой библиотеки

16
задан Brad Larson 1 October 2012 в 17:48
поделиться

4 ответа

Из настроек сборки проекта -> Архитектуры убедитесь, что у вас есть значения armv6 и armv7.

Также вы можете проверить файл Info.plist в разделе Required device capabilities. Если там есть armv7, удалите его.

13
ответ дан adig 25 August 2018 в 13:17
поделиться

Если вы создаете эту ошибку, создайте приложение Unity 3D, замените скриптовый сервер на IL2CPP и выберите «Универсальную» архитектуру.

4
ответ дан Alex Sikilinda 25 August 2018 в 13:17
поделиться

Это сообщение привело меня к моему ответу. Спасибо @adig и @masam

У меня есть приложение под управлением iOS 8.4, которое будет работать только на некоторых типах устройств, когда я попытаюсь установить его из нашего внутреннего магазина приложений, и это было непоследовательно. Я не получал никаких полезных сообщений об ошибках даже с консоли устройства, пока я не попытался развернуть его с помощью устройств XCode до 5-го поколения iPod. Он сказал: «Это приложение не поддерживает этот тип устройства», что привело меня сюда. Я отлаживал 6-го поколения iPod / iPhone 6.

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

Поэтому убедитесь, что «строить только активную архитектуру» нет, когда вы архивируете приложение для подписывания в качестве корпоративного приложения.

0
ответ дан hawkeyecoder 25 August 2018 в 13:17
поделиться

Сегодня я столкнулся с такой проблемой на iOS 11.2.1 с устройствами iPhone 7. Причина в том, что предыдущий проект настроил 32-битную архитектуру, которая больше не поддерживается. И я решил проблему следующим образом:

Project -> Настройки сборки -> Значение архитектуры должно быть установлено Standard architectures - $(ARCHS_STANDARD)

12
ответ дан Jack 25 August 2018 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: