다중 플랫폼 개발 : 이전 버전의 Android에서 최신 Visual Studio 사용

Rigolf

[업데이트] 드디어 최신 툴체인을 사용하여 4.2에 앱을 배포 할 수있었습니다. 오류가 발생합니다. 원문 후 아래를 참조하십시오.

우리는 이전 Android 플랫폼 (4.4 이전)을 계속 개발하면서 Visual Studio의 최신 버전 (이 게시물 당시 2019)을 계속 사용할 수있는 장기적인 솔루션을 찾고 있습니다.

Xamarin @ Microsoft는 Xamarin.Android 릴리스 9.2에서 Android 4.4 이전에 대한 지원을 중단했지만 제품에 대한 지원을 중단 할 수 없습니다. 지금까지 특정 Android 개발에 VS2017을 계속 사용하고 있지만 VS2019와 VS2017 개발 환경 간의 격차가 증가하고 있으며 이로 인해 일상적인 개발에 오버 헤드가 증가하고 있습니다.

우리의 프로젝트는 PC에 배포 된 소프트웨어에 대한 대부분의 일반적인 코드 기반을 사용하여 개발되었지만이 코드의 일부는 특정 장치에서 실행할 수있는 Android 애플리케이션의 일부이기도합니다. 우리의 주요 활동 인 PC 개발을 위해 가능한 한 최신 .NET 표준 및 최신 도구를 사용하여 코딩 할 수 있기를 바랍니다.

Android 버전은 사용되는 하드웨어에 매우 특정한 산업용 소프트웨어이며 Android OS가 업데이트 될 것으로 기대할 수 없으므로 4.2.2의 최소 Android 버전 지원에 갇혀 있습니다.

이미 SO 및 기타 포럼에서 검색했지만 "좋은"장기적인 해결책을 찾지 못했습니다. 여기에이 주제와 관련하여 찾은 몇 가지 좋은 정보가 있습니다.

https://docs.microsoft.com/en-us/xamarin/android/release-notes/9/9.2

https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/android-api-levels?tabs=windows

어떤 .Net Standard 버전이 어떤 Android 버전을 지원합니까?

https://github.com/xamarin/xamarin-android/blob/master/Documentation/guides/messages/xa4216.md

https://docs.microsoft.com/en-us/dotnet/standard/net-standard

현재 우리가 할 수있는 일은 다음과 같습니다.

1) 주로 코드의 공통 부분에 .NET 표준 라이브러리를 사용합니다.

2) 일반적으로 UI 부분에만 Xamarin.Android를 직접 사용하는 어셈블리가 거의 없습니다.

이것은 우리가 이미 수행하고있는 것과 비슷합니다 (제 생각에 .NET Standard에 더 많은 어셈블리를 이식 ​​할 수 있다는 점을 제외하면).

그러나 API 레벨 4.4를 대상으로하고 4.2에서 애플리케이션을 사용하기 때문에 4.2에서 지원되지 않는 일부 API 또는 더 나쁜 경우 새 Xamarin / Mono 런타임이 이전 Android 버전을 지원하지 않기 때문에 지원되지만 버그가있는 API를 호출 할 수 있습니다. XA4216 경고가 있기 때문에 특히 그렇습니다. 매니페스트가 허용하기 때문에 이전 Android에서 배포하고 실행할 수 있다고해도 OS가 모노 런타임에서 사용하는 모든 필수 기능을 제공하는지 확인할 수는 없습니다. 현재 경고 XA4216은 버전 4.0.3에 대한 것이지만 VS2019를 업데이트하고 Android 4.2에 대해이 경고를받는 날이 올 것입니다.

따라서 다음보다 더 나은 솔루션이 있습니까?

1) 이전 VS2017 / 이전 Xamarin.Android 빌드 환경을 유지하고 Android 4.2와의 완전한 호환성을 유지하기 위해 일상적인 생산성을 차단합니다.

2) 최신 Xamarin으로 빌드 및 개발 환경을 VS2019로 완전히 업데이트하고 구현이 이전 OS에서 버그가 발생하지 않도록기도하십시오.

Visual Studio 업데이트가있을 때마다 전체 응용 프로그램을 다시 테스트 할 필요없이 2로 이동하여 모든 것이 잘 작동 할 것이라는 보험에 가입하고 싶습니다. 어떻게 생각해? 애플리케이션 안정성을 보장하기 위해 이전 빌드 시스템 (VS2017 + 이전 Xamarin.Android)을 사용하고 있습니까? 아니면 최신 Xamarin을 사용하여 VS2019로 업그레이드하는 것이 "안전한"위험입니까?

이 주제에 대한 좋은 조언에 미리 감사드립니다.

추신 : 솔루션 2 : "최신 Xamarin을 사용하여 빌드 및 개발 환경을 VS2019로 완전히 업데이트하고 이전 OS에서 구현에 버그가 발생하지 않기를기도합니다." 처음에는 내 PC에서 로컬로 테스트를 수행합니다. VS2019 및 최신 Xamarin으로 빌드되도록 앱에서 필요한 변경을 수행 한 후 Android 4.2.2 장치에서 테스트하기 위해 배포했습니다 (빌드 오류를 수정하는 데 하루 종일 걸렸습니다 ...). 다음과 같은 오류가 발생하고 앱이 멈 춥니 다. W / libc (9196) : protoent * getprotobyname (char const *) (3) is not implementation on Android.

기도만으로는 충분하지 않을 수도 있습니다 ... 어떤 아이디어라도?

Saamer

옵션 2로 이동하고 최신 Xamarin을 사용하여 빌드 및 개발 환경을 VS2019로 완전히 업데이트하십시오! 구현시 이전 OS에 버그가 없어야합니다.

버그가 추가 되더라도 QA에서 코드를 테스트하기 만하면됩니다. 프로덕션의 경우 앱에 좋은 충돌 분석을 배치 할 수 있으며 버그를 포착,보고 및 수정할 수 있습니다.

대부분의 경우 Android에서 Android 4.4 미만을 사용하는 사용자 수는 전체 사용자의 0.001 % 미만입니다. 이 시점에서 1000 배 더 많은 사용자에게 영향을 미치므로 앱에서 접근성을 구현하는 것이 더 합리적입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Visual Studio의 간단한 Hello World 유니버설 Windows 플랫폼 응용 프로그램에서도 "안전 핸들이 닫혔습니다."오류가 계속 발생하는 이유는 무엇입니까?

Visual Studio 2005의 플랫폼 도구 집합을 최신 IDE 버전의 '플랫폼 도구 집합'목록에 추가하려면 어떻게해야합니까?

Visual Studio를 사용한 크로스 플랫폼 모바일 앱 개발의 단점

Haskell에서 다중 플랫폼 개발

Android SDK 플랫폼 버전에 따라 다른 매니페스트 사용

HTML, Javascript를 사용한 모바일 개발을위한 최고의 플랫폼입니다. 네이티브 앱 개발과는 별도로

Visual Studio 2017의 Android 장치 관리자에 'Android SDK 플랫폼이 없습니다'가 표시됨

Visual Studio 2015 용 "유니버설 Windows 플랫폼 용 SQLite"SDK의 이전 버전을 설치하는 방법은 무엇입니까?

Kotlin 다중 플랫폼 프로젝트가 이전에 컴파일된 코드를 사용 중입니다.

Android Studio 3.2 미리보기 버전에서 android-28 용 플랫폼 플러그인을 설치할 수 없습니다.

모든 플랫폼에서 사전 훈련 된 신경망로드 및 사용

phonegap을 사용하여 다양한 플랫폼에 대한 버전 관리

분리 된 자바 플랫폼 모듈에 의존성의 다른 버전을 사용하여

Android Studio에서 최신 Gradle 버전을 사용하는 방법

구성된 대상 플랫폼 최소 버전에는 자동 업데이트를 사용할 수 없습니다.

다양한 플랫폼에서 사전 강화

시를 사용하여 다른 플랫폼에 다른 버전의 패키지 설치

플러터 멀티 플랫폼 사용자 에이전트

Scala를 사용하여 다른 플랫폼의 한 플랫폼에서 쿼리

Visual Studio 2015에 Windows UAP (유니버설 앱 플랫폼) SDK가 없습니다.

"이 콘텐츠를 표시하려면 Visual Studio에 최신 버전의 Windows가 필요합니다."

Phonegap과 함께 jQuery 모바일을 사용하여 Android 플랫폼 전화 용 전체 캘린더 애플리케이션 개발

Visual Studio 2013 내에서 v60 플랫폼 도구 집합을 사용할 때 디버깅 정보가 일치하지 않습니다.

최신 Chrome (37)에서 GWT 개발자 도구 플러그인이 사용 중지되었습니다.

Visual Studio 2017에서 최신 버전의 Xamarin 양식을 사용하여 Android 4.4 용으로 컴파일하는 방법은 무엇입니까?

Visual Studio Code-이 플랫폼 오류에서 이미지 운영 체제 "linux"를 사용할 수 없습니다.

xsd.exe가 최신 버전의 Visual Studio에서 C ++에서 작동하지 않는 것 같습니다.

Visual Studio Build 플랫폼은 동일한 프로젝트의 사용자마다 다릅니다.

다른 사용 JLINK을위한 하나 개의 플랫폼에 자바 런타임 이미지 만들기

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관