Open PabloPG opened 3 years ago
I found the cause Error occurs when calling 'CGRectMake' and 'setNeedsLayout' for previewLayer. After commenting the code the error stopped occurring.
same issue...
Same here...
I can share my code (modified plugin) You only need to connect it with your hands...
Please try updating your plugin and the runtime to the latest version
Had some pain here on nativescript 7.1.x, found that 4.1.0 was no good.
The solution for me (angular project) has been to use camera-plus@4.0.3 with the following:
register-camera-plus.ts
import { registerElement } from '@nativescript/angular';
import { CameraPlus } from '@nstudio/nativescript-camera-plus';
import { CLog } from '@nstudio/nativescript-camera-plus/common';
/**
* Registers camera plus with the workaround that makes it work
* See https://github.com/nstudio/nativescript-plugins/issues/56
*
* Tested and working on 4.0.3 with iOS 15.x
*
* @todo once nativescript is at 8.x we should be able to get rid of this and just use camera-plus 4.1.0+
*/
export function registerCameraPlus() {
try {
/**
* Attempt at fixing camera plus temporarily by stopping the bad stuff it does
*/
class CameraPlusFixed extends CameraPlus {
/**
* The function that kicks out an error on 4.0.3 (compat with ns 7.x)
* @param args Original function args
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_onLayoutChangeFn(args: any[]) {
CLog('onLayoutChangeFn()');
const size = this.getActualSize();
CLog(`xml width/height: ${size.width}x${size.height}`);
// @ts-ignore
const { frame } = this._swifty.view;
// @ts-ignore
this._swifty.view.frame = CGRectMake(
frame.origin.x,
frame.origin.y,
size.width,
size.height,
);
// @ts-ignore
this._swifty.view.setNeedsLayout();
}
}
registerElement('CameraPlus', () => CameraPlusFixed);
} catch (error) {
CLog('Could not register CameraPlus', error);
}
}
app.module.ts
:
import { registerCameraPlus } from './register-camera-plus';
// ...
registerCameraPlus();
@NgModule(
// ...
)
// ...
Thanks to @PabloChiste for the workaround details.
same issue...
same issue...
After installing the plugin and trying to run on iOS, I get the following error:
CONSOLE LOG: NativeScript-CameraPlus --- [CameraPlus createNativeView] CONSOLE LOG: NativeScript-CameraPlus --- [video enabled:, false] CONSOLE LOG: NativeScript-CameraPlus --- [default camera:, rear] CONSOLE LOG: NativeScript-CameraPlus --- [MySwifty viewdidload] CONSOLE LOG: NativeScript-CameraPlus --- [doubleTapCameraSwitch:, true] CONSOLE LOG: NativeScript-CameraPlus --- [this.cameraDelegate:, <SwiftyDelegate: 0x6000019f7df0>] CONSOLE LOG: NativeScript-CameraPlus --- [view:, <UIView: 0x7f9c4d145c10; frame = (0 0; 390 844); autoresize = W+H; layer = <CALayer: 0x600001b45fe0>>] CONSOLE LOG: NativeScript-CameraPlus --- [initNativeView.] CONSOLE LOG: NativeScript-CameraPlus --- [MySwifty viewWillAppear] CONSOLE LOG: NativeScript-CameraPlus --- [adding buttons...] CONSOLE LOG: NativeScript-CameraPlus --- [adding flash button...] CONSOLE LOG: NativeScript-CameraPlus --- [adding show gallery button...] CONSOLE LOG: NativeScript-CameraPlus --- [adding show capture button...] CONSOLE LOG: NativeScript-CameraPlus --- [MySwifty viewDidAppear] CONSOLE LOG: NativeScript-CameraPlus --- [xml width/height: 390x844] ====== Assertion failed ====== Native stack trace: 1 0x1079bb9ff tns::Assert(bool, v8::Isolate*) + 119 2 0x10799575f tns::MetadataBuilder::RegisterStaticMethods(v8::Local<v8::Context>, v8::Local<v8::Function>, tns::BaseClassMeta const*, tns::KnownUnknownClassPair, robin_hood::detail::Table<true, 80ul, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned char, robin_hood::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) + 519 3 0x10799351d tns::MetadataBuilder::GetOrCreateConstructorFunctionTemplateInternal(v8::Local<v8::Context>, tns::BaseClassMeta const*, tns::KnownUnknownClassPair, robin_hood::detail::Table<true, 80ul, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned char, robin_hood::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, robin_hood::detail::Table<true, 80ul, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned char, robin_hood::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::_<…> 4 0x10799173b tns::MetadataBuilder::GetOrCreateConstructorFunctionTemplate(v8::Local<v8::Context>, tns::BaseClassMeta const*, tns::KnownUnknownClassPair, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) + 99 5 0x1079de10e std::__1::function<v8::Local<v8::FunctionTemplate> (v8::Local<v8::Context>, tns::BaseClassMeta const*, tns::KnownUnknownClassPair, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)>::operator()(v8::Local<v8::Context>, tns::BaseClassMeta const*, tns::KnownUnknownClassPair, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) const + 54 6 0x10793fba5 tns::ArgConverter::CreateJsWrapper(v8::Local<v8::Context>, tns::BaseDataWrapper*, v8::Local<v8::Object>, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) + 1581 7 0x1079ddcb1 tns::Interop::GetResult(v8::Local<v8::Context>, tns::TypeEncoding const*, tns::BaseCall*, bool, std::__1::shared_ptr<v8::Persistent<v8::Value, v8::NonCopyablePersistentTraits<v8::Value> > >, bool, bool, bool, bool) + 4231 8 0x1079d9b41 tns::Interop::CallFunctionInternal(tns::MethodCall&) + 581 9 0x10793eed0 tns::ArgConverter::Invoke(v8::Local<v8::Context>, objc_class*, v8::Local<v8::Object>, tns::V8Args&, tns::MethodMeta const*, bool) + 758 10 0x1079966dc tns::MetadataBuilder::InvokeMethod(v8::Local<v8::Context>, tns::MethodMeta const*, v8::Local<v8::Object>, tns::V8Args&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool) + 76 11 0x107996231 tns::MetadataBuilder::PropertyGetterCallback(v8::FunctionCallbackInfo<v8::Value> const&) + 245 12 0x107ae90a1 v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) + 609 13 0x107ae858a v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 570 14 0x107ae7f20 v8::internal::Builtins::InvokeApiFunction(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::HeapObject>) + 768 15 0x107eb8174 v8::internal::Object::GetPropertyWithAccessor(v8::internal::LookupIterator*) + 404 16 0x107eb78dd v8::internal::Object::GetProperty(v8::internal::LookupIterator*, bool) + 125 17 0x107cfec97 v8::internal::LoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, bool, v8::internal::Handle<v8::internal::Object>) + 1751 18 0x107d07be2 v8::internal::Runtime_LoadNoFeedbackIC_Miss(int, unsigned long*, v8::internal::Isolate*) + 322 19 0x1083be6d9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit + 57 20 0x10843943e Builtins_LdaNamedPropertyHandler + 4062 JavaScript stack trace: at _onLayoutChangeFn (file: node_modules/@nstudio/nativescript-camera-plus/index.ios.js:754:0) at _handleEvent (file: node_modules/@nativescript/core/data/observable/index.js:233:0) at notify (file: node_modules/@nativescript/core/data/observable/index.js:216:0) at _raiseLayoutChangedEvent (file: node_modules/@nativescript/core/ui/core/view/view-common.js:319:0) at _setNativeViewFrame (file: node_modules/@nativescript/core/ui/core/view/index.ios.js:149:0) at layoutNativeView (file: node_modules/@nativescript/core/ui/core/view/index.ios.js:177:0) at layout (file: node_modules/@nativescript/core/ui/core/view/index.ios.js:69:0) at layoutChild (file: node_modules/@nativescript/core/ui/core/view/view-helper/view-helper-common.js:96:0) at layoutChild (file: node_modules/@nativescript/core/ui/core/view/view-common.js:731:8) at onLayout (file: node_modules/@nativescript/core/ui/layouts/grid-layout/index.ios.js:165:16)
✔ Getting NativeScript components versions information... ✔ Component nativescript has 8.0.2 version and is up to date. ✔ Component @nativescript/core has 8.0.8 version and is up to date. ✔ Component @nativescript/ios has 8.0.0 version and is up to date. ✔ Component @nativescript/android has 8.0.0 version and is up to date.
@nstudio/nativescript-camera-plus": "4.0.3",