[Tutorial de Criação/Modificação de ROM] Crie sua própria ROM (1)

O pôster original: Xiao Yu, Visualizações: 312 Respostas: 1 Publicado em: 2013-10-20 16:58:58
Modificar a ROM pode ser geralmente dividido em três categorias: simplificação, complementação e embelezamento. Aqui, vamos discutir principalmente os dois primeiros aspectos: simplificação e complementação. Quanto ao embelezamento, você pode consultar outros posts.

1. Primeiramente, vamos ver o que exatamente existe na ROM:

Ao abrir o pacote de instalação com o WinRAR, você pode ver vários diretórios. Abaixo são listados alguns diretórios relacionados a nós e suas descrições:

dev_data/apps/ : Diretório dos arquivos apk dos programas do sistema, equivalente a "/data/app_s/" após a instalação da ROM. Os programas aqui não podem ser desinstalados após a instalação.
dev_data/app/ : Diretório dos arquivos apk dos programas de usuário, equivalente a "/data/app/" após a instalação da ROM. Os programas aqui podem ser desinstalados após a instalação. (Versões após 28 de outubro têm este diretório; nas versões anteriores, você pode adicioná-lo manualmente)
META-INF/com/google/android/ : Arquivos de script de instalação da ROM
system/etc/ : Armazena alguns arquivos de configuração
system/etc/permissions/ : Relacionado às permissões do software; alguns patches precisam adicionar arquivos neste diretório
system/lib/ : Local de armazenamento das bibliotecas dos programas do sistema

2. Vamos conhecer os arquivos de script de instalação da ROM:

Ao instalar via recovery, o processo de instalação é controlado por arquivos de script.
Os arquivos de script estão localizados em META-INF/com/google/android dentro do pacote ZIP como update-script, que pode ser aberto com um editor de texto.

Algumas linhas do script são importantes para nós:
(1) show_progress 0.1 0 : Exibe a barra de progresso
Esta linha é usada para mostrar a barra de progresso da instalação. O 0.1 representa a posição da barra de progresso, que pode ser alterada para outro valor (menor que 1). O significado do outro número não é claro, geralmente, todas as linhas, exceto a última, têm valor 0, e a última é 10. Algumas ROMs mostram a instalação como concluída quando a barra de progresso ainda está pela metade; você pode tentar alterar a última linha para show_progress 0.8 10, e a barra de progresso irá até o final.(2) Alguns termos-chave (A) "SYSTEM:" representa o diretório do sistema após o flashing = "/system/" (B) "INTERNAL:" representa o diretório /data após o flashing = "/data/" (C) "PACKAGE:" representa o diretório raiz do pacote compactado. Por exemplo, "SYSTEM:etc/" é equivalente ao diretório "/system/etc/" após o flashing. "PACKAGE:dev_data" é equivalente ao diretório dev_data dentro do pacote compactado. (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir é usado para copiar diretórios. O primeiro parâmetro é o diretório a ser copiado, o segundo é para onde será copiado. Por exemplo, copy_dir PACKAGE:dev_data INTERNAL: serve para copiar os conteúdos do diretório dev_data do pacote ROM para o diretório "/data/" após o flashing. (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin Configura permissões de diretórios ou arquivos, de forma semelhante ao método de configuração de permissões no Linux. (5) delete SYSTEM:app/YouTube.apk Exclui arquivos. Geralmente não é necessário; se precisar excluir, basta deletar. Pronto, agora podemos começar a simplificar e adicionar programas. Dois. Simplificação de programas do sistema Simplificar na verdade significa remover programas do sistema. Podemos excluir aqueles que não precisamos. As vantagens de remover esses programas são: (1) Alguns itens que não usamos aparecem na lista de programas e isso é irritante; se houver muitos desses programas, pode deixar a abertura da lista de programas mais lenta. (2) Alguns programas ocupam memória quando iniciados, mas não os usamos, por exemplo, interceptação de mensagens. (3) Alguns programas não queremos usar os que vêm com a ROM original, queremos trocar por outros, por exemplo, não gostar do ADW e mudar para LAUNCH PRO, etc. O método de simplificação é simples: abra a ROM com o WinRAR, entre em dev_data/apps, encontre os programas que não deseja e delete-os. Quais programas podem ser simplificados: esta questão é mencionada em muitos posts, você pode pesquisar, por exemplo, os seguintes posts. Três. Adicionando programas Há duas maneiras de adicionar programas: uma é adicionar como programa do sistema, outra é adicionar como programa de usuário. A vantagem de adicionar programas como do sistema é a execução rápida (é o que todos dizem, eu não percebi essa diferença), a desvantagem é que não pode ser desinstalado diretamente, apenas deletado usando ferramentas como RE.Na verdade, ao usar o RE para deletar diretamente arquivos APK de programas do sistema, nem sempre eles são completamente desinstalados. Se você não acredita, pode dar uma olhada no diretório /data/data/, onde cada programa corresponde a um destino, cujo nome do diretório é igual ao nome do pacote do programa (não o XXX do XXX.APK).

1. Adicionar programas do sistema: A forma mais simples de adicionar programas do sistema é:
(1) Use o WinRAR para abrir o arquivo comprimido da ROM, vá para o diretório "dev_data/app_s" e copie o arquivo APK do programa que deseja adicionar.
(2) Use o WinRAR para abrir o arquivo APK que deseja adicionar e verifique se o diretório “lib/armeabi” contém arquivos com terminação .so. Estes são arquivos de bibliotecas que o programa precisa ao rodar. Se houver, copie-os para o diretório "system/lib/" dentro do arquivo comprimido. Alguns usuários encontram problemas ao adicionar programas ao modificar a ROM, geralmente devido a isso, por exemplo, a nova versão do Google Pinyin Input.

2. Adicionar programas de usuário: Adicionar programas de usuário é um pouco mais complicado, mas depois de instalar a ROM, eles podem ser desinstalados diretamente. Se você estiver usando uma ROM lançada após 28 de outubro, basta arrastar o APK para o diretório "dev_data/app/". Esta etapa é simples; o problema é quando o APK contém arquivos de biblioteca. Um método simples é o mesmo do passo 2 ao adicionar programas do sistema. A desvantagem desse método é que, ao desinstalar, os arquivos de biblioteca permanecerão em “system/lib/”. Felizmente, a maioria dos programas não possui arquivos de biblioteca, e os poucos arquivos que permanecem não causam problemas. Um método mais avançado é instalar através de um script.

Para ROMs antes de 28 de outubro, o diretório "app" não existia em “dev_data/”. Você pode criar um (clique com o botão direito no WinRAR e escolha criar uma nova pasta), e após criar o diretório, é necessário configurar as permissões no script de instalação da ROM:
Encontre esta parte no script de instalação:
copy_dir PACKAGE:dev_data INTERNAL:
set_perm 1000 1000 0771 INTERNAL:app_s
Adicione a seguinte linha após essa parte:
set_perm 1000 1000 0771 INTERNAL:app
A primeira linha copia todo o conteúdo do diretório dev_data da ROM para /data
A segunda linha define as permissões para app_s
A linha que adicionamos define as permissões para app

Em seguida, você pode fazer reparos e ajustar a ROM.

Em seguida, você pode fazer reparos e ajustar a ROM.

4.O script firstboot pode fazer configurações mais avançadas da ROM, e você pode usar o script firstboot.sh. O script firstboot.sh está no diretório dev_data dentro da ROM. O código no script é executado na primeira inicialização após a instalação da ROM, e com ele é possível configurar o sistema, instalar APKs, entre outras tarefas. Veja um trecho do script na liudidi1028rom:

# Configurações padrão do sistema
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"

Acho que todos podem adivinhar a função dessas três linhas de código. Quanto ao script estar escrito assim, não me perguntem, eu também não entendo muito, todos podem pesquisar juntos.

No script é possível usar comandos como rm, mv, etc., que permitem sobrescrever diretamente certos arquivos de configuração. Por exemplo:
busybox rm /system/etc/algum_arquivo
busybox mv /system/etc/algum_arquivo

Claro, se você vai modificar arquivos do sistema, primeiro é necessário obter permissões:
busybox mount -o remount,rw /system

Depois, para voltar a apenas leitura:
busybox mount -o remount,ro /system

O firstboot.sh é muito útil, seria ótimo se algum especialista pudesse escrever um tutorial básico!
responder 🤍 0 📤 compartilhar coletar
Muito longo, não consigo entender
— Todas as respostas carregadas —

Deixe uma resposta