런타임시 예외가 발생합니다. Xamarin Realm이 (가) realmobject에 링커가 없습니다.
는내 솔루션은 비주얼 스튜디오 맥과 PCL, 안드로이드와 IOS 프로젝트 및 각 프로젝트에 설치된 영역 패키지 1.6.0를 포함 "어떤 realmobject는. 링커는 .... 그들을 제거하지 않았다". 또한 Fodyweaver.xml에 올바른 참조가 포함되어 있고 모든 패키지의 버전이 동일한 지 확인했습니다.
솔루션과 동일한 폴더에 PCL이 포함되어있는 경우 (예 : PCL이있는 기본 멀티 플랫폼 솔루션) 모든 것이 정상적으로 작동합니다.
그러나 여러 영역에서 사용할 수 있도록 모든 영역 논리를 포함하는 PCL 프로젝트를 별도의 폴더로 옮겼습니다. 내 솔루션에는 이제이 외부 폴더의 PCL이 포함되며 iOS 및 Android 프로젝트는 영역 패키지를 참조합니다. 응용 프로그램이 잘 컴파일되지만 응용 프로그램을 실행할 때 realm.getinstance를 사용하는 첫 번째 호출에서이 예외가 수신됩니다.
원래 솔루션과 동일한 폴더에 PCL 프로젝트를 다시 입력하면 정상적으로 작동합니다.
누구든지이 문제를 해결할 수 있습니까? 나는 Viper
아키텍처를 사용하고 난 여러 솔루션에서 동일한 모델을 공유하는
이것이 작동하는 이유를 명확히하기 위해 - 직공은 PCL/NetStandard lib의 모듈 초기화 프로그램에 등록 코드를 삽입하여 Realm에 모델을 알립니다. Library가로드되기 전에 Realm을 사용하면 cctor가 실행되지 않으므로 문제가 발생하므로 라이브러리의 모델이 등록되지 않았습니다. 제안 된 코드를 변경하면 인스턴스를 가져 오기 전에 라이브러리에 액세스했는지 확인하므로 제대로 작동합니다. 또는 라이브러리에 더미'Init()'메소드를 추가하고 앱 실행시이를 호출하여 열심히로드하고 cctor를 호출 할 수 있습니다. –
@NikolaIrinchev 추가 정보를 가져 주셔서 감사합니다. 더미 이니셜 라이저에 대해 뭔가를 추가해야합니다. 내 저장소 설정은 항상 내 Realm 모델의 GetInstance를 가져 와서 아무도 "사전 초기화"를 기억하지 않아야하므로 다른 어셈블리에서 직조 할 것이 없으므로 Fody/RealmWeaver 컴파일러 경고가 표시되지 않습니다. – SushiHangover
나는 VIPER도 사용하고 있습니다 :). 의미가 있습니다 -하지만 그것을 시도하고 내 솔루션에 대해 작동하지 않습니다. 정적 인 Getinstance() 메소드를 추가 한 DataService 클래스가 있습니다. Dataservice는 ninject 라이브러리를 사용하여 종속성 주입을 사용하여 초기화됩니다. 따라서 dataservice 인스턴스가 ninject에 의해 초기화 될 때 생성자가 호출되며 여기서 정적 Getinstance를 호출합니다.하지만 예외는 여전히 발생합니다. 내가 Datacvice에 더미 intialiser를 사용해 보았지만 여전히 실패했습니다. –