Ошибка кодового сигнала с Xcode 3.2

На статические переменные ссылаются Объекты класса, на которые ссылается ClassLoaders - поэтому, если любой, ClassLoder отбрасывает Класс так или иначе (если это даже возможно) или сам ClassLoder не становится имеющим право на набор (более вероятно - думают о разгрузке веб-приложений) статические переменные (или скорее объекты, на которые они ссылаются) не будет собран.

31
задан Peter Mortensen 18 August 2011 в 21:22
поделиться

8 ответов

Что ж, похоже, что и в случае с множеством этих проблем с подписью кода, удаление всех профилей обеспечения, сертификатов и т. Д., А также отмена и генерация всего снова и снова, оказалось, помогли . Я даже создал новый идентификатор пакета, идентификатор приложения и т. Д., И теперь распространение AdHoc снова работает.

16
ответ дан 27 November 2019 в 22:08
поделиться

В XCode, в " Группы и файлы », разверните« Цели »и дважды щелкните цель вашего приложения.

Это откроет панель« Информация »для вашей цели. В разделе «Сборка» проверьте раздел «Подписание кода» на наличие старых профилей. Это случалось со мной много раз, особенно после обновления до новой версии sdk и iphone os

4
ответ дан 27 November 2019 в 22:08
поделиться

I had to manually remove the provisioning profiles from my phone, then rebuild the apps after doing a "clean all targets" from the build menu.

That's under Settings -> General -> Profiles

This happened to me when I got a new Mac. You'll fix it, don't worry

21
ответ дан 27 November 2019 в 22:08
поделиться

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

  • перезагрузил свой Mac
  • перезагрузил свой iPhone
  • удалил все мои профили подготовки iphone с телефона с помощью XCode
  • удалил все профили с моего Mac (~ / Library / MobileDevice / Provisioning Profiles для меня )
  • что еще? удалил папку сборки, перезапустил XCode, установил обновление до 3.1.2 sdk, принес в жертву курицу.

Вот и вот, теперь работает, ошибка исчезла. Это серьезная территория вуду.

5
ответ дан 27 November 2019 в 22:08
поделиться

Можно создать событие в библиотеке классов, которое прослушивается/регистрируется независимо от уровня пользовательского интерфейса/консоли. Таким образом, он может принять решение действовать на мероприятии, если это считается необходимым в любом количестве мест, как вы хотите. Это действительно зависит от настройки архитектуры.

-121--4950904-

Непосредственная проблема

Ваша непосредственная проблема заключается в том, что SynchronizationContext.Current не устанавливается автоматически для WPF. Чтобы установить его, вам нужно будет сделать что-то подобное в вашем коде TheUISync при работе под WPF:

var context = new DispatcherSynchronizationContext(
                    Application.Current.Dispatcher);
SynchronizationContext.SetSynchronizationContext(context);
UISync = context;

Более глубокая проблема

SynchronizationContext связана с поддержкой COM + и предназначена для пересечения потоков. В WPF вы не можете иметь Dispatcher, который охватывает несколько потоков, поэтому один SynchronizationContext не может пересекать потоки. Существует ряд сценариев, в которых SynchronizationContext может переключаться на новый поток, в частности, любой, вызывающий ExecureContext.Run () . Поэтому при использовании SynchronizationContext для предоставления событий клиентам WinForms и WPF необходимо знать, что некоторые сценарии будут нарушены, например, веб-запрос на веб-службу или сайт, размещенный в том же процессе, будет проблемой.

Как обойти необходимость SynchronizationContext

Из-за этого я предлагаю использовать механизм WPF Dispatcher исключительно для этой цели, даже с кодом WinForms. Вы создали singleton-класс «TheUISync», в котором хранится синхронизация, поэтому у вас есть способ подключиться к верхнему уровню приложения. Тем не менее, вы можете добавить код, который создает добавляет содержимое WPF в приложение WinForms, чтобы Dispatcher работал, а затем использовать новый механизм Dispatcher , который я описываю ниже.

Использование Dispatcher вместо SynchronizationContext

механизма WPF Dispatcher фактически устраняет необходимость в отдельном объекте SynchronizationContext . Если у вас нет определенных сценариев взаимодействия, таких как совместное использование кода с объектами COM + или пользовательскими интерфейсами WinForms, лучше всего использовать Dispatcher вместо SynchronizationContext .

Это выглядит следующим образом:

public class Foo 
{ 
  public event EventHandler FooDoDoneEvent; 

  public void DoFoo() 
  { 
    //stuff 
    OnFooDoDone(); 
  } 

  private void OnFooDoDone() 
  { 
    if(FooDoDoneEvent!=null)
      Application.Current.Dispatcher.BeginInvoke(
        DispatcherPriority.Normal, new Action(() =>
        {
          FooDoDoneEvent(this, new EventArgs()); 
        }));
  }
}

Обратите внимание на то, что вам больше не нужен объект TheUISync - WPF обрабатывает эту деталь для вас.

Если вам удобнее использовать старый синтаксис делегата , вы можете сделать этот путь:

      Application.Current.Dispatcher.BeginInvoke(
        DispatcherPriority.Normal, new Action(delegate
        {
          FooDoDoneEvent(this, new EventArgs()); 
        }));

Несвязанная ошибка для исправления

Также обратите внимание, что в исходном коде есть ошибка, которая реплицируется здесь. Проблема заключается в том, что FooImentEvent может быть установлен равным NULL между временем вызова OnFooDoDone и временем вызова делегата BeginInvoke (или Post в исходном коде). Исправление является вторым тестом внутри делегата:

    if(FooDoDoneEvent!=null)
      Application.Current.Dispatcher.BeginInvoke(
        DispatcherPriority.Normal, new Action(() =>
        {
          if(FooDoDoneEvent!=null)
            FooDoDoneEvent(this, new EventArgs()); 
        }));
-121--2889074-

После того, как я был остановлен этим довольно долго я пересмотрел настройки и обнаружил, что я отменил «Код, подписывающий идентификатор» и «Любое устройство iPhone OS» записи. - Подсказка, которая у меня была, о том, что это происходит, была показана.

  1. Удаление каждого профиля из телефона
  2. Build and Go

В этот момент xcode пытается сконфигурировать телефон (устройство)

  1. Проверьте телефон, какой профиль конфигурирования был добавлен.

Поскольку я префиксирую все мои профили «AdHoc» или «Development» или «AppStore», я сразу увидел, что процесс установки помещает профиль разработки на устройство, а не профиль AdHoc.

1
ответ дан 27 November 2019 в 22:08
поделиться

Также убедитесь, что вы добавили ссылку на имя файла с правами "dist.plist" в конфигурации вашего проекта CODE_SIGN_ENTITLEMENTS.

5
ответ дан 27 November 2019 в 22:08
поделиться

Просто чтобы добавить примечание: Я столкнулся с такой же ошибкой (0xE8008016) после замены логической платы моего Macbook (хотя я представляю, что у вас будет такая же проблема на совершенно новом mac), и после нескольких часов хождения по кругу я понял, что на портале программы для разработчиков iPhone есть отдельные сертификаты для разработки и распространения.

Смена оборудования означает, что вам нужно перевыпустить оба сертификата - я перевыпустил Developer, но не Distribution. Поскольку мое имя не менялось, когда менялось оборудование (а сертификаты идентифицируются по имени владельца), это сделало проблему трудновыявляемой ;) Надеюсь, это поможет кому-то еще избежать моего разочарования.

0
ответ дан 27 November 2019 в 22:08
поделиться

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

0
ответ дан 27 November 2019 в 22:08
поделиться
Другие вопросы по тегам:

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