Pergunta

É possível ter uma aplicação binária para vários dispositivos móveis (em FERMENTAÇÃO a plataforma), ao invés de fazer um separado construir para cada dispositivo usando o script de compilação com a compilação condicional.

Em particular, é possível usar a POÇÃO de compilação do aplicativo para várias resoluções de tela?

Nota-se que o objetivo é ter um único binário construir.Se fosse apenas para ter um único código base, de compilação condicional e inteligente script de compilação deve fazer o truque.

Foi útil?

Solução

Sim, é possível, que somos capazes de fazer isso no meu antigo local de trabalho.O que é necessário é complicado, embora:

  1. Compilar para o menor denominador comum BREW versão.Versão 1.1 é a base para todos os atuais aparelhos lá fora.
  2. Seu código deve ser capaz de lidar com múltiplas resoluções.Os métodos para a detecção de largura de tela e altura são precisas para todos os aparelhos em minha experiência.
  3. Todos os seus recursos deve carregar em todos os dispositivos.Isso exigiria a fazer o seu próprio personalizado carregador de imagem para contornar certos problemas de dispositivo.Para o som, eu sei simples de MIDI tipo 0 funciona em todos, mas QCP também deve funcionar (sem experiência mim).
  4. Uso de fontes de bitmap.Há muitos problemas de dispositivos com fontes para torná-lo vale a pena utilizar os tipos de letra do sistema.
  5. Desenho de sua estrutura de código como uma máquina de estados finitos.Eu não posso enfatizar isto o suficiente - o fazer e muitos, muitos problemas nunca se concretizou.
  6. Temos soluções para cada dispositivo único problema.Esta é a parte difícil!É possível, mas esse buraco de coelho é incrivelmente profundo...

No final, o mais complexo e avançado, o aplicativo, a menos provável que você pode ir por esse caminho.Algumas propriedades do dispositivo não pode ser detectado de forma confiável em tempo de execução (como o ID de plataforma) e, por isso, vários compilações são obrigatórios.

Outras dicas

Eu escrevi uma J2ME para preparar a conversão que é usado em Javaground.É bem possível escrever vários de resolução, único código binário.Temos um banco de dados do dispositivo de erros, de modo que ele pode detectar através da plataforma de identificação do dispositivo e, em seguida, gerar uma série de bandeiras que marcam os bugs são marcados.Por exemplo, a maioria (se não todos) da Motorola Brew telefones têm um bug em que uma chamada de entrada não interromper a aplicação até que você atenda a chamada, então, eu uso o TAPI para o monitoramento de uma chamada de entrada e gerar um hideNotify evento (uma vez que estamos emulando Java, embora o código gerado é puro C++).Eu faço algumas verificações em tempo de execução para Brew versão, e desativar determinadas APIs se é Brew 2 em vez de Cerveja 3.

Tipo 3D jogos são mais fáceis de fazer independente de resolução, desde que você escala em software.

Também há 2 separado APIs de som, IMEDIA e ISOUNDPLAYER, ISOUNDPLAYER é a API mais antiga e é suportado em todos os dispositivos, mas não tem como muitas facilidades (você só pode fazer com áudio multicanal usando IMEDIA).Eu criar um IMEDIA objeto, e ele vai cair de volta para criar um ISOUNDPLAYER objeto se ele não pode obter a IMEDIA objeto.

O problema com um totalmente universal é que há uma grande diferença em termos de capacidade, então pode valer a pena ter algumas compilações, os dispositivos mais antigos só têm em 1MB de memória (e um pequeno tamanho da tela) e, em seguida, você terá um monte com 6MB+ (176x204 para o maior).

Com Brew você tem um bastante consistente conjunto de valores (ao contrário de Java), embora alguns dos novos dispositivos de tela de toque (e você precisa lidar com ponteiro de entrada) e rotação de telas.

Existem também alguns dos antigos celulares Nokia que usam o modo big endian, o que significa que os arquivos não são o mesmo que o normal arquivos mod (a MENOS que você quer escrever MUITO legal linguagem assembly cabeçalho prefixo que decodifica o arquivo)

Outra ideia que pode ser ter os aparelhos dividido em 2 a 4 categorias com base em dizer dimensões de tela e criar compilações para eles.Ele é muito rápido demais, como você vai ser capaz de suportar todos os telefones celulares que você deseja suportar com muito menor complexidade.

Outra coisa é ver a POÇÃO versões sobre os aparelhos que você deseja lançar.Se dizem BREW 1.1 é um telefone, e que é possuída por um pequeno percentual de seu mercado-alvo, ele não faz sentido trabalhar para oferecer suporte a ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top