문제

여러 모바일 장치에 대해 하나의 애플리케이션 바이너리 빌드를 갖는 것이 가능합니까? 꾸미다 플랫폼), 조건부 컴파일이 포함된 빌드 스크립트를 사용하여 각 장치에 대해 별도의 빌드를 만드는 대신.

특히 다중 화면 해상도에 대해 단일 BREW 응용 프로그램 빌드를 사용할 수 있습니까?

목표는 단일을 갖는 것입니다. 바이너리 짓다.단일 코드베이스만 있으면 조건부 컴파일과 스마트 빌드 스크립트가 그 효과를 발휘할 것입니다.

도움이 되었습니까?

해결책

네, 가능합니다. 이전 직장에서는 가능했습니다.하지만 필요한 것은 까다롭습니다.

  1. 최소 공통 분모 BREW 버전용으로 컴파일하십시오.버전 1.1은 현재 출시된 모든 핸드셋의 기반입니다.
  2. 코드는 여러 해상도를 처리할 수 있어야 합니다.내 경험에 따르면 화면 너비와 높이를 감지하는 방법은 모든 휴대폰에서 정확합니다.
  3. 모든 리소스는 모든 장치에 로드되어야 합니다.특정 장치 문제를 해결하려면 사용자 정의 이미지 로더를 만들어야 합니다.사운드의 경우 간단한 MIDI 유형 0이 모두 작동하지만 QCP도 작동해야 한다는 것을 알고 있습니다(직접 경험해 본 적이 없음).
  4. 비트맵 글꼴을 사용하세요.시스템 글꼴을 사용하기에는 글꼴 관련 장치 문제가 너무 많습니다.
  5. 코드 구조를 유한 상태 기계로 설계하세요.이 점은 아무리 강조해도 지나치지 않습니다. 이렇게 하면 수많은 문제가 결코 실현되지 않습니다.
  6. 모든 단일 장치 문제에 대한 해결 방법을 찾으세요.이것은 어려운 부분입니다!가능은 한데 이 토끼굴은 엄청나게 깊습니다...

결국 애플리케이션이 더 복잡하고 발전할수록 이 경로를 사용할 가능성은 줄어듭니다.일부 장치 속성은 런타임 시 안정적으로 감지할 수 없으므로(예: 플랫폼 ID) 여러 빌드가 필요합니다.

다른 팁

나는 Javaground에서 사용되는 J2ME를 Brew로 변환하는 코드를 작성했습니다.다중 해상도, 단일 바이너리 코드를 작성하는 것이 가능합니다.우리는 플랫폼 ID를 통해 장치를 감지한 다음 어떤 버그에 태그가 지정되었는지 표시하는 일련의 플래그를 생성할 수 있도록 장치 버그 데이터베이스를 보유하고 있습니다.예를 들어 대부분의 Motorola Brew 휴대폰에는 수신 전화가 전화에 응답할 때까지 응용 프로그램을 중단하지 않는 버그가 있으므로 TAPI를 사용하여 수신 전화를 모니터링하고 hideNotify 이벤트를 생성합니다. 생성된 코드는 순수 C++이지만 Java를 에뮬레이트합니다.Brew 버전에 대해 런타임에 몇 가지 확인을 수행하고 Brew 3이 아닌 Brew 2인 경우 특정 API를 비활성화합니다.

3D 유형 게임은 소프트웨어에서 크기를 조정하므로 해상도를 독립적으로 만드는 것이 더 쉽습니다.

또한 사운드에는 IMEDIA 및 ISOUNDPLAYER라는 2개의 별도 API가 있습니다. ISOUNDPLAYER는 이전 API이며 모든 장치에서 지원되지만 기능이 많지는 않습니다(IMEDIA를 사용하여 다중 채널 오디오만 수행할 수 있음).IMEDIA 개체를 생성했는데, IMEDIA 개체를 가져올 수 없으면 ISOUNDPLAYER 개체를 생성하도록 대체됩니다.

완전히 보편적인 빌드의 문제점은 기능에 큰 차이가 있다는 것입니다. 따라서 몇 개의 빌드를 갖는 것이 가치가 있을 수 있으며, 구형 장치의 힙은 1MB 미만(및 작은 화면 크기)에 불과하며 많은 이점을 얻습니다. 6MB 이상(176x204 이상).

Brew를 사용하면 (Java와 달리) 상당히 일관된 키 값 세트를 갖게 되지만, 새로운 장치 중 일부는 터치 스크린(포인터 입력을 처리해야 함)과 회전 화면입니다.

빅 엔디안 모드를 사용하는 오래된 Nokia 휴대폰도 있습니다. 이는 파일이 일반 모드 파일과 동일하지 않음을 의미합니다(파일을 디코딩하는 정말 멋진 어셈블리 언어 접두어 헤더를 작성하려는 경우 제외).

또 다른 아이디어는 휴대폰을 화면 크기에 따라 2~4개 범주로 나누고 그에 대한 빌드를 만드는 것입니다.훨씬 덜 복잡하게 지원하려는 모든 핸드셋을 지원할 수 있으므로 훨씬 빠른 경로이기도 합니다.

확인해야 할 또 다른 사항은 실행하려는 휴대폰의 BREW 버전입니다.BREW 1.1이 하나의 핸드셋에 있고 목표 시장에서 작은 비율로 소유되어 있다면 이를 지원하기 위해 노력하는 것은 의미가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top