아래처럼 빌드시에는 이상이 없었는데

기기로 디버깅 시 에러가 발생되었다.

 

System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 010001b1 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null)

 

찾아보니 Forms 버전을 다운 그레이드 하면 해결되는데 (4.1.0.778454 버전으로 다운 그레이드)

 

 

Android 쪽 패키들과 버전 충돌때문에 다운그레이드가 잘되지 않았다. ㅠㅜ

 

 

그래서 위 목록을 모두 제거하고 Forms 버전은 4.1.0.778454 으로 설치

나머지 Android 쪽 패키지들은 28.0.0.1 (낮은)버전으로 설치하고 실행하니 정상적으로 동작되었다.

 

아래는 재설치후 버전들..

 

 

 

 

 

https://robgibbens.com/deploying-a-database-file-with-a-xamarin-forms-app/

https://csharp.hotexamples.com/examples/ZXing.Net.Mobile.Forms/ZXingScannerPage/-/php-zxingscannerpage-class-examples.html



기존에 사용했던 코드가

public static readonly BindableProperty SpacingProperty =

    BindableProperty.Create<WrapLayout, double>(w => w.Spacing, 5,

        propertyChanged: (bindable, oldvalue, newvalue) => ((WrapLayout)bindable).layoutCache.Clear());

 

아래처럼 줄이 그어져 확인해보니


"Create<> (generic) is obsolete as of version 2.1.0 and is no longer supported."

 

위 문구 처럼 Create<> 는 더 이상 지원하지 않는다고한다.

 

위 내용을 지원되는 현재 버전으로 변경하면 아래와 같다.

 

public static readonly BindableProperty SpacingProperty =

    BindableProperty.Create(nameof(Spacing), typeof(double), typeof(WrapLayout), 5.0,

        propertyChanged: (bindable, oldValue, newValue) => ((WrapLayout)bindable).layoutCache.Clear());

 

 

참고

https://forums.xamarin.com/discussion/comment/177726/#Comment_177726

https://forums.xamarin.com/discussion/62984/generic-versions-of-create-are-no-longer-supported-and-deprecated

 

 

BindableProperty.Create<BindablePicker, IList>(p => p.ItemsSource, null,

    propertyChanged: OnItemsSourcePropertyChanged);

=>

BindableProperty.Create(nameof(ItemsSource), typeof(IList), typeof(BindablePicker), null,

    propertyChanged: OnItemsSourcePropertyChanged);

 

 

private static void OnItemsSourcePropertyChanged(BindableObject bindable, IList oldValue, IList newValue)

=>

private static void OnItemsSourcePropertyChanged(BindableObject bindable, object oldValue, object newValue)

 

 

var tgr = new TapGestureRecognizer { NumberOfTapsRequired = 1 };

tgr.Tapped += (sender, args) =>

{

    // 처리할 내용

};

 

this.grid.GestureRecognizers.Add(tgr);

 

 

- NumberOfTapsRequired : tab수로 2로 설정한 경우 두번 tab 한 경우 이벤트가 발생된다.

 

위와 같은 형식으로 Image 도 아래처럼 Click 이벤트를 처리할수 있다.

 

var tgr = new TapGestureRecognizer { NumberOfTapsRequired = 1 };

tgr.Tapped += (sender, args) =>

{

    // 처리할 내용

};

 

this.image.GestureRecognizers.Add(tgr);

 

 

 

xaml 로 처리할때

 

<Label>

    <Label.GestureRecognizers>

        <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>

    </Label.GestureRecognizers>

</Label>

앱을 등록하면 아래와 같이 64 비트 요구사항을 준수하지 않는다는 문구가 뜬다.

 

이를 위해선 프로젝트 속성의 Android 옵션 에서 고급 버튼을 클릭하고

'지원되는 아키텍처'의 arm64-v8a 를 체크하고 빌드하면 된다.

 

 

참고

https://developer.android.com/distribute/best-practices/develop/64-bit

웹뷰에 특정 사이트를 나타내도록 했는데

아래 처럼 에러가 발생되었다.

 

 

ERR_CLEARTEXT_NOT_PERMITTED 로 찾아보니 https 가 아닌 주소인 경우 위처럼 에러가 발생될수 있다고 한다.

위 에러 해결을 위해선 Android 프로젝트의 AndroidManifest.xml 파일의 application  에 아래와 같이

android:usesCleartextTraffic="true" 값을 넣어주면 된다.

 

앞서 만들어진 프로비전 프로필을 프로젝트에 적용하는 방법입니다.

(윈도우에서 처리하는 방법입니다.)

 

iOS 프로젝트 속성의 iOS 번들 서명에서 앞서 등록했던 프로비전 프로필이 목록에 나타나지 않습니다.

 

이를 나타내기 위해선 Visual Studio 의 도구 > 옵션을 클릭

 

Xamarin > Apple Account 를 클릭합니다.

 

 

여기에서 유의사항은 이때 Mac 에 비번을 입력해야합니다.

항상 허용을 하면 다음부터 물어보지 않습니다.

(가끔 비쥬얼 스튜디오가 반응이 없을땐 Mac 을 확인해주세요. 항상허용을 하더라도 물어볼때도 있음.)

 

전 2단계 인증을 해서 2단계인증 코드를 입력합니다.

 

연결이되면 아래처럼 좀전에 추가했던 프로비저닝 프로필이 목록에 있는걸 확인 할수 있습니다.

(만약 목록에 보이지 않는다면 '모든 프로필 다운로드' 버튼을 클릭하면 됩니다.)