Не удается запустить приложение Nativescript на iOS, но работает на Android

Не могу запустить приложение Nativescript на iOS, но работает на Android Мой код работает нормально, Android без проблем, но в iOS я получаю эти ошибки ниже. и я не знаю, почему, что мне не хватает ???? Это плагин? Модуль? Любая помощь будет хорошей, потому что я потерялся здесь. спасибо, когда я запустил tns run ios --env.aot --env.uglify.

ошибки, которые я получаю при запуске приложения:

***** Fatal JavaScript exception - application has been terminated. *****
Native stack trace:
1   0x10fe3991f NativeScript::reportFatalErrorBeforeShutdown(JSC::ExecState*, JSC::Exception*, bool)
2   0x10fe71b60 NativeScript::FFICallback<NativeScript::ObjCMethodCallback>::ffiClosureCallback(ffi_cif*, void*, void**, void*)
3   0x110812dd6 ffi_closure_unix64_inner
4   0x1108137fa ffi_closure_unix64
5   0x114515d22 -[CALayer layoutSublayers]
6   0x11451a9fc CA::Layer::layout_if_needed(CA::Transaction*)
7   0x114526d58 CA::Layer::layout_and_display_if_needed(CA::Transaction*)
8   0x11449624a CA::Context::commit_transaction(CA::Transaction*)
9   0x1144cd606 CA::Transaction::commit()
10  0x116f942c3 __34-[UIApplication _firstCommitBlock]_block_invoke_2
11  0x115a97cbc __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
12  0x115a97480 __CFRunLoopDoBlocks
13  0x115a91d04 __CFRunLoopRun
14  0x115a914d2 CFRunLoopRunSpecific
15  0x11b8af2fe GSEventRunModal
16  0x116f7afc2 UIApplicationMain
17  0x11081363d ffi_call_unix64
18  0x12db4cf70
JavaScript stack trace:
1   @file:///node_modules/tns-core-modules/ui/content-view/content-view.js:44:0
2   _eachLayoutView@file:///node_modules/tns-core-modules/ui/core/view/view-common.js:1015:0
3   @file:///node_modules/tns-core-modules/ui/proxy-view-container/proxy-view-container.js:45:0
4   eachChildView@file:///node_modules/tns-core-modules/ui/layouts/layout-base-common.js:125:0
5   _eachLayoutView@file:///node_modules/tns-core-modules/ui/proxy-view-container/proxy-view-container.js:43:0
6   get@file:///node_modules/tns-core-modules/ui/content-view/content-view.js:38:0
7   onMeasure@file:///node_modules/tns-core-modules/ui/page/page.js:272:0
8   measure@file:///node_modules/tns-core-modules/ui/core/view/view.js:55:0
9   measureChild@file:///node_modules/tns-core-modules/ui/core/view/view-common.js:954:0
10  i@file:///node_modules/tns-core-modules/ui/core/view/view.js:636:0
11  viewDidLayoutSubviews@file:///node_modules/tns-core-modules/ui/page/page.js:192:0
12  UIApplicationMain@[native code]
13  S@file:///node_modules/tns-core-modules/application/application.js:277:0
14  run@file:///node_modules/tns-core-modules/application/application.js:305:0
15  bootstrapNativeScriptApp@file:///node_modules/nativescript-angular/platform-common.js:205:0
16  bootstrapApp@file:///node_modules/nativescript-angular/platform-common.js:106:0
17  bootstrapModuleFactory@file:///node_modules/nativescript-angular/platform-common.js:77:0
18  @file:///app/bundle.js:72:449
19  ./main.ts@file:///app/bundle.js:72:477
20  k@file:///src/webpack/bootstrap:750:0
21  n@file:///src/webpack/bootstrap:43:0
22  r@file:///src/webpack/bootstrap:30:0
23  anonymous@file:///src/$_lazy_route_resource lazy namespace object:2:0
24  evaluate@[nat<…>
JavaScript error:
file:///node_modules/tns-core-modules/ui/content-view/content-view.js:44:0 JS ERROR Error: More than one layout child inside a 
1   UIApplicationMain@[native code]
2   S@file:///node_modules/tns-core-modules/application/application.js:277:0
3   run@file:///node_modules/tns-core-modules/application/application.js:305:0
4   bootstrapNativeScriptApp@file:///node_modules/nativescript-angular/platform-common.js:205:0
5   bootstrapApp@file:///node_modules/nativescript-angular/platform-common.js:106:0
6   bootstrapModuleFactory@file:///node_modules/nativescript-angular/platform-common.js:77:0
7   @file:///app/bundle.js:72:449
8   ./main.ts@file:///app/bundle.js:72:477
9   k@file:///src/webpack/bootstrap:750:0
10  n@file:///src/webpack/bootstrap:43:0
11  r@file:///src/webpack/bootstrap:30:0
12  anonymous@file:///src/$_lazy_route_resource lazy namespace object:2:0
13  evaluate@[native code]
14  moduleEvaluation@:1:11
15  promiseReactionJob@:1:11

person Kevin Dias    schedule 30.08.2019    source источник
comment
Похоже, у вашего корневого представления более одного макета. Поделитесь шаблоном компонента вашего приложения.   -  person Manoj    schedule 30.08.2019
comment
Разве вы не используете Angular? Потому что я вижу в ваших журналах nativescript-angular, и в этом случае это будет app.component.html.   -  person Manoj    schedule 30.08.2019
comment
ничего особенного, просто <page-router-outlet actionBarVisibility="never"></page-router-outlet>   -  person Kevin Dias    schedule 31.08.2019
comment
Это выглядит нормально, но один из ваших загружаемых компонентов, похоже, имеет более одного представления на корневом уровне, по крайней мере, по журналу ошибок.   -  person Manoj    schedule 31.08.2019
comment
@Manoj так что он будет работать на Android, а не на iOS?   -  person Kevin Dias    schedule 31.08.2019
comment
Это хороший вопрос, но опять же, это полностью зависит от вашего кода. Как упомянул @ ian-macdonald, если вы разместили условия в своем шаблоне, вы также должны это проверить. Без кода, воспроизводящего проблему, я не могу много сказать с общим журналом ошибок.   -  person Manoj    schedule 31.08.2019
comment
@Manoj я не ставил никаких условий ... но я посмотрю на все компоненты   -  person Kevin Dias    schedule 31.08.2019


Ответы (2)


Где-то в вашем источнике, обычно в корне html / xml определенного компонента, у вас есть представление, которое отображается только на iOS. Однако, поскольку он не работает на iOS, а не на Android, вероятно, вы не наложили аналогичное ограничение на другой элемент верхнего уровня.

<ios>
  <Label text="only iOS"></Label>
</ios>

<Label text="only Android"></Label> <!-- Error; is present in template for both!! -->

Мне сложно угадать, в чем именно может быть проблема, но я бы посоветовал просмотреть ваши шаблоны на предмет использования ios.

person Ian MacDonald    schedule 30.08.2019
comment
О, я понимаю, проблема в том, что у меня уже много кода. Есть способ nativescript, скажите мне, где ошибка? - person Kevin Dias; 30.08.2019
comment
Если вы запустите без --env.uglify, вы получите лучшую трассировку стека. - person Ian MacDonald; 30.08.2019

Ну, в ios у вас не может быть бесплатных шаблонов, плавающих вокруг, все тоже должно быть внутри LayoutContainer

Android (работает) iOS (не работает)

<GridLayout>
 (... Content)
</GridLayout>

<GridLayout>
 (... More Content)
</GridLayout>

Android (Работает) iOS (Работает)

<GridLayout> // MAIN CHILD

 (... Content)

  <GridLayout>
   (... More Content)
  </GridLayout>

</GridLayout>
person Kevin Dias    schedule 02.09.2019