Xamarin.forms: [버그] 이미지 컨트둀이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 03μ›” 09일  Β·  25μ½”λ©˜νŠΈ  Β·  좜처: xamarin/Xamarin.Forms

기술

μž¬ν˜„ 단계

  1. 릴리슀 λͺ¨λ“œμ—μ„œ https://github.com/yinyue200/xamarinformstest μ•„μΉ΄μ΄λΈŒ
  2. APK μ„€μΉ˜
  3. 정보 νŽ˜μ΄μ§€λ‘œ 이동

μ˜ˆμƒλ˜λŠ” λ™μž‘

이미지λ₯Ό 보여

μ‹€μ œ 행동

이미지λ₯Ό ν‘œμ‹œ ν•  수 μ—†μŠ΅λ‹ˆλ‹€

κΈ°λ³Έ 정보

  • λ¬Έμ œκ°€μžˆλŠ” 버전 :
  • λ§ˆμ§€λ§‰μœΌλ‘œ μ•Œλ €μ§„ μ–‘ν˜Έν•œ 버전 : 4.4
  • IDE : VS2019
  • ν”Œλž«νΌ λŒ€μƒ ν”„λ ˆμž„ μ›Œν¬ :

    • iOS :

    • μ•ˆλ“œλ‘œμ΄λ“œ : 10

    • UWP :

  • Android 지원 라이브러리 버전 : AndroidX
  • Nuget νŒ¨ν‚€μ§€ :
  • 영ν–₯μ„λ°›λŠ” μž₯치 :

슀크린 μƒ·


Screenshot_2020-03-09-22-37-01-264_com companynam

볡제 링크

https://github.com/yinyue200/xamarinformstest
https://github.com/yinyue200/xamarinformstest/releases/tag/1.0

ν•΄κ²° 방법

FFImageLoading μ‚¬μš©

4.5.0 external-components regression high impact Android bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ˜ν•œ μ•±μ˜ λͺ¨λ“  DLL이 apk의 / lib 폴더에 ν‘œμ‹œλ˜λŠ” 것을 μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  25 λŒ“κΈ€

μ—¬κΈ°μ—μ„œ 동일, 릴리슀 λͺ¨λ“œμ—μ„œ μ•„μΉ΄μ΄λΈŒ ν•œ ν›„ 도ꡬ λͺ¨μŒ μ•„μ΄μ½˜μ΄ ν‘œμ‹œλ˜μ§€ μ•ŠμŒ

+1, Xamarin.Forms νŒ¨ν‚€μ§€λ₯Ό μ—…κ·Έλ ˆμ΄λ“œ ν•œ ν›„ κ°‘μžκΈ° λ‚΄ Forms ν”„λ‘œμ νŠΈμ˜ Android ν”Œλž«νΌμ—μ„œ 이미지가 μ†μ‹€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

링컀λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆκΉŒ?

@StephaneDelcroix 링컀가 μ—†μŒμœΌλ‘œ μ„€μ •λœ 경우 λ³΄κ΄€ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.
devenv_2020-03-12_22-18-35

링컀λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆκΉŒ?

μ•„λ‹ˆμš”. λ¬Έμ œκ°€ κ³„μ†λ©λ‹ˆλ‹€.

μ΅œμ‹  XF둜 μ—…λ°μ΄νŠΈ ν•  λ•Œ λ™μΌν•œ 였λ₯˜

μ—¬κΈ°μ—μ„œ 동일, 릴리슀 λͺ¨λ“œμ—μ„œ μ•„μΉ΄μ΄λΈŒ ν•œ ν›„ 도ꡬ λͺ¨μŒ μ•„μ΄μ½˜ 및 이미지가 ν‘œμ‹œλ˜μ§€ μ•ŠμŒ

이 λ¬Έμ œμ— λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄ ν”„λ‘œμ νŠΈλ₯Ό μ°¨λ‹¨ν•˜κ³  μƒˆ 버전을 μΆœμ‹œ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬λ₯Ό λ„€μ΄ν‹°λΈŒ μ½”λ“œ μ˜΅μ…˜μœΌλ‘œ λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.

λ™μΌν•œ λ¬Έμ œκ°€ 있으며 "μ–΄μ…ˆλΈ”λ¦¬λ₯Ό λ„€μ΄ν‹°λΈŒ μ½”λ“œλ‘œ λ²ˆλ“€"을 λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λœλ‹€λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 릴리슀 λΉŒλ“œμ— λŒ€ν•œ μ˜΅μ…˜μ΄ μ•„λ‹™λ‹ˆλ‹€. λ²„κ·ΈλŠ” # 1595와 κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 같은 λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. "μ–΄μ…ˆλΈ”λ¦¬λ₯Ό λ„€μ΄ν‹°λΈŒ μ½”λ“œλ‘œ λ²ˆλ“€λ§"을 λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€λ§Œμ΄ μž‘μ—…μ€ μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ λ™μΌν•œ λ¬Έμ œμ™€ μ‹€μ œλ‘œ "κΈ°λ³Έ μ½”λ“œλ‘œ λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬"λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 선택 사항이 μ•„λ‹™λ‹ˆλ‹€. μ—…λ°μ΄νŠΈ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

μƒˆλ‘œ μΆœμ‹œ 된 버전 16.5.2μ—μ„œλ„ λ¬Έμ œκ°€ κ³„μ†λ©λ‹ˆλ‹€. 16.5.0으둜 μ‹œμž‘ν•˜λ©°μ΄ 문제λ₯Ό λ¬΄μ‹œν•œ 두 번째 μ—…λ°μ΄νŠΈμž…λ‹ˆλ‹€.

https://github.com/xamarin/AndroidX/issues/64#issuecomment -606645412와 κ΄€λ ¨λœ κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. @mattleibow 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? 감사!!

@ hig-devκ°€ μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€.

[ "λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬λ₯Ό λ„€μ΄ν‹°λΈŒ μ½”λ“œλ‘œ"λΉ„ν™œμ„±ν™”] 릴리슀 λΉŒλ“œμ— λŒ€ν•œ μ˜΅μ…˜μ΄ μ•„λ‹™λ‹ˆλ‹€.

$(BundleAssemblies) = Falseλ₯Ό μ„€μ •ν•  μˆ˜μ—†λŠ” μ΄μœ μ— λŒ€ν•΄ μžμ„Ένžˆ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? .NET 5μ—μ„œ $(BundleAssemblies) 에 λŒ€ν•œ 지원을 μ œκ±°ν•˜λŠ” 것을 κ°•λ ₯히 κ³ λ € ν•˜κ³  있으며 μ‚¬λžŒλ“€μ΄μ΄ κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” 이유 λ₯Ό 더 잘 μ΄ν•΄ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. (그것은 맀우 쒋은 λ‚œλ… ν™” 기술이 μ•„λ‹ˆλ‹€, 그것은 μ•„μ£Ό μ’‹μ€ν•˜μ§€ 것은 μ‘μš© ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œκ°„ μ•„λž˜μ— λ””λ°”μ΄μŠ€ λ©”λͺ¨λ¦¬ μ‚¬μš©κ³Ό 감속을 μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.)

μ•ˆλ…•ν•˜μ„Έμš”, μš°λ¦¬κ°€ 이런 μ’…λ₯˜μ˜ λ‚œλ… ν™” 기법을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” μœ μΌν•œ λ‹€λ₯Έ μ˜΅μ…˜ (dotfuscator)이 1 년에 μ•½ 4k $의 μ‹œμž‘ 가격을 가지고 있기 λ•Œλ¬Έμ— μš°λ¦¬κ°€ 가진 κ²ƒμœΌλ‘œ ν•  μˆ˜μžˆλŠ” μΌμ„ν•˜κΈ° λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. Microsoft ν˜ΈμŠ€νŒ… ν™˜κ²½μ—μ„œ Azure CI νŒŒμ΄ν”„ 라인 톡합을 톡해 μ €λ ΄ν•œ / 무료 κ°€κ²©μœΌλ‘œ 더 λ‚˜μ€ κΈ°μˆ μ„ μ œμ•ˆ ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ–΄μ¨Œλ“  이것은 λ‚˜μœ νšŒκ·€μž…λ‹ˆλ‹€.

μ‚¬λžŒλ“€μ΄ _ μ™œ _ μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€ 더 잘 μ΄ν•΄ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

APK의 크기가 많이 쀄어듀고 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ•±μ˜ λͺ¨λ“  DLL이 apk의 / lib 폴더에 ν‘œμ‹œλ˜λŠ” 것을 μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. Nugetμ—μ„œ Xamarin.Formsλ₯Ό μ—…λ°μ΄νŠΈ ν•  λ•Œ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ Xamarin.Forms 버전은 v4.6.0.726μž…λ‹ˆλ‹€. ν™•μ‹€νžˆ μƒˆ 버전과 관련이 μžˆμŠ΅λ‹ˆλ‹€ (v4.5λΆ€ν„° μ‹œμž‘λœ 것 κ°™μŠ΅λ‹ˆλ‹€). 이전 버전을 μ‚¬μš©ν•˜λŠ” λ™μ•ˆ λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€ (이전 버전 번호λ₯Ό κΈ°μ–΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€ : /).

λ‚΄κ°€ ν…ŒμŠ€νŠΈ ν•œ 것;
"λŒ€μƒ ν”„λ ˆμž„ μ›Œν¬κ°€ 10"이고 "λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬ ... = μ°Έ"=> 문제인 경우
"λŒ€μƒ ν”„λ ˆμž„ μ›Œν¬κ°€ 10"이고 "λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬ ... = false"=> λ¬Έμ œκ°€μ—†λŠ” 경우

"target framework is 9"및 "bundle assembliies ... = true"=> λ¬Έμ œκ°€μ—†λŠ” 경우
"λŒ€μƒ ν”„λ ˆμž„ μ›Œν¬κ°€ 9"이고 "λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬ ... = false"=> λ¬Έμ œκ°€μ—†λŠ” 경우

μ—…λ°μ΄νŠΈ : Xamarin.Forms v4.4.0.991864 (NuGetμ—μ„œ)에 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

"λŒ€μƒ ν”„λ ˆμž„ μ›Œν¬λŠ” 10"및 "λ²ˆλ“€ μ–΄μ…ˆλΈ”λ¦¬ ... = true"= μ „ν˜€ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

이제 2 κ°œμ›”μ΄ μ§€λ‚¬μŠ΅λ‹ˆλ‹€. 이 λ²„κ·ΈλŠ” ν•΄κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€ ???

이것은 λΆ„λͺ…νžˆ νšŒκ·€μ΄λ―€λ‘œ xamarin νŒ€μ΄ 문제λ₯Ό ν•΄κ²°ν•  μˆ˜μžˆμ„λ§ŒνΌ κ°„λ‹¨ν•΄μ•Όν•©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ μŠ¬ν”„κ²Œλ„ 그듀은 그것에 λŒ€ν•΄ μ „ν˜€ μ‹ κ²½ 쓰지 μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 그리고 그것은 그듀이 μžμ‹ μ˜ μ‚¬μš©μžλ₯Ό μ‹ κ²½ 쓰지 μ•ŠλŠ”λ‹€λŠ” λŠλ‚Œμ„ 점점 더 λ§Žμ΄μ€λ‹ˆλ‹€.

μ–΄μ¨Œλ“  이것이 Xamarin.Forms λ˜λŠ” Xamarin.Android νšŒκ·€μΈμ§€ μ—¬λΆ€λŠ” λͺ…ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
그리고 μ–΄λ–€ 버전뢀터 μ‹œμž‘ν•©λ‹ˆκΉŒ?

μ΅œμ‹  λ²„μ „μ˜ Xamarin.Forms (4.6.0.800) 및 targetSdkVersion = "29"(Android 10-Queen Cake)μ—μ„œ λ™μΌν•œ λ¬Έμ œμ— μ§λ©΄ν–ˆμŠ΅λ‹ˆλ‹€. "Bundle assembly into native code"κ°€ ν™œμ„±ν™” 된 경우 Image λŠ” ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 이것에 λŒ€ν•œ μˆ˜μ • 사항이 μ—†μŠ΅λ‹ˆλ‹€.

4.7.0.773-pre1

4.7.0.813-pre2

사전 μΆœμ‹œ 버전. 2 κ°œμ›” 이상 κ³ μΉ  μˆ˜μ—†λŠ” 것이 ν‡΄λ³΄μž…λ‹ˆλ‹€.

https://github.com/xamarin/AndroidX/pull/106 에 μ°¬μ„±ν•˜μ—¬ λ‹«λŠ” 것은 Forms λ¬Έμ œκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰