Combinando partes do Android original com fontes mais recentes para criar uma nova imagem [fechada]

1

Oi eu queria falar com os profissionais sobre a compilação e descompilação de fontes e binários do Android, respectivamente. É possível descompilar um sistema operacional Android rodando em um dispositivo e obter sua fonte, para que você possa extrair coisas úteis, como drivers de dispositivo que você também pode usar posteriormente para compilar outro binário (imagem) que pode ser instalado no mesmo dispositivo, mas com a fonte editada.

Por exemplo, eu tenho um Samsung AAAA com o Android 2.3.3 e está funcionando bem e eu quero que ele tenha android 4.0.4 ... eu posso descompilar a imagem que tem agora (2.3.3) para a fonte (2.3. 3) então pegue os drivers ou algum outro elemento fonte junte-o com um segmento da fonte 4.0.4 para fazer uma nova imagem (binário com alguns drivers de 2.3.3 e alguma fonte de 4.0.4) então use esta imagem flash no dispositivo Samsung AAAA.

É possível ajudar muito apreciado.

    
por Gideon Maina 01.01.2015 / 22:15

1 resposta

2

Sim e não.

Sim, você pode (geralmente) pegar código-fonte mais antigo e combiná-lo com um mais novo. Isso é o que, por exemplo, o CyanogenMod está fazendo (além de outras coisas).

Não, você não pode descompilar a imagem criada, extrair fontes, soltar as texturas em fontes mais recentes e recompilar. Não é tão simples, por algumas razões, principalmente:

  1. A descompilação não é apenas o inverso da compilação. A forma usual de processar código é compilar o anúncio de origem vinculando-o a um executável (ou uma biblioteca; em sistemas UNIX, geralmente um ELF nos dias de hoje). A decompilação não pode (sem dados adicionais) reproduzir a fonte original, em vez disso, você terminará com o código assembly, que usa identificadores presentes no binário. Rougly em C speak: o que quer que seja um objeto exportado será nomeado corretamente, mas static as coisas não serão. O que quer que seja embutido pelo compilador (ou linker se LTO for empregado quando a imagem for construída) será apenas uma bolha de código irreconhecível de partes que eram declarações regulares em uma função.

  2. Compatibilidade da API. Mesmo com o código fonte original para um driver de dispositivo do kernel, não há garantia de que você possa usá-lo sem nenhuma alteração para compilar no kernel mais novo. As estruturas internas do kernel podem mudar e, especialmente, os kernels Android anteriores eram strongmente corrigidos (ou seja, muito diferentes das árvores baunilha).

Dito isto, não é impossível. Para o iniciante, verifique CM (CyanogenMod) e outras ROMs alternativas - você pode não ser o primeiro com exatamente o mesmo problema. Se isso não funcionar e você for (ou quiser se tornar) capaz o suficiente, provavelmente você deseja obter as origens originais do kernel para o seu dispositivo (sim, elas devem estar acessíveis em algum lugar, se não estivessem a empresa estaria arriscando ações judiciais desconfortáveis) e usar isso e mais novo kernel do Android como pontos de partida. Além disso, as comunidades de ROMs alternativas ou o Android SE serão um lugar melhor para fazer perguntas mais específicas do que aqui.

    
por 01.01.2015 / 22:24