A maioria das perguntas que posso encontrar relacionadas a isso são datadas de 2011 e, portanto, talvez não seja tão surpreendente que as coisas tenham mudado desde então. Eu tentei um monte de coisas, sem nenhum resultado.
Existem alguns scripts /system/etc/init.d
(que também aparecem /etc/init.d
em meu dispositivo). Em particular, há um 00banner
script que deve registrar uma mensagem de boas-vindas. A mensagem de boas-vindas nunca aparece no logcat.
Coloquei meu próprio script aqui, que acabou sendo reduzido a nada além disso:
#!/system/bin/sh
log -t mytest Testing
Nada. Nunca aparece no logcat, a menos que seja executado manualmente pelo terminal. Então funciona.
Há também um 90userinit
arquivo aqui, que chama /data/local/userinit.sh
se existir. Eu criei com o mesmo conteúdo acima. Novamente, nada aparece no logcat. O que não é surpreendente, na verdade, já que se 00banner
não for executado, também não será.
Eu procurei por qualquer coisa chamada "init.rc", mas nada disso existe em qualquer lugar do meu dispositivo.
Todos os meus scripts têm 755 permissões.
O que mais posso tentar? (exceto aplicativos que executam scripts para mim)
fonte
Respostas:
existe um método simples de adicionar suporte init.d a qualquer android raiz para as versões 4.0 e posteriores, o google criou um script que é executado na inicialização como superusuário, o script
install-recovery.sh
é usado para reflash a recuperação de estoque a cada inicialização que eles consideravam um bom segurança para impedir recuperações personalizadas, mas abriu um novo buraco que pode ser explorado pelos usuários para falsificar o recurso init.d. Dependências : para que este método funcione, é necessário o seguinterun-parts
link simbólico para o seu caminho, como/system/xbin
/system
capacidade de montar comorw
Método I: (A maneira mais fácil!)
Método II: (dificuldade: média)
Faça o download deste zip, descompacte-o e coloque init.sh no seu sdcard (neste exemplo, será
/sdcard
possível mudar de dispositivo para outro.Agora abra um terminal ou use-o
adb shell
no computador e execute o script.su
cp /sdcard/init.sh /data/tmp/init.sh
chmod 777 /data/tmp/init.sh
/data/tmp/init.sh
o script será executado e solicitará que você reinicie duas vezes, é isso que você tem oficialmente o suporte init.d: D
Reference: [MOD] [APK + SCRIPT + ZIP] Ative o Init.d para qualquer telefone sem necessidade de kernels personalizados !!!
fonte
Editar: eu vi a postagem final, desta maneira, tentarei adicionar sem aplicativos o mais rápido possível (não em casa, publicando usando dispositivos móveis), mas você pode usá-lo, se alguma outra coisa não funcionar.
Você pode tentar usar o aplicativo chamado Tasker .
Custa 3,29 $ e requer acesso root, mas pode executar scripts Shell. Além disso, possui versão de teste para que você possa experimentar antes de comprar.
Primeiro crie a tarefa. Vá para a guia Tarefa, toque em + sinal, digite o nome da tarefa. Agora vá novamente + assine e digite o
shell
filtro. Você encontrará a opçãoRun Shell
, a selecionará e a configurará de acordo com suas necessidades.Depois disso, volte para a primeira guia - Perfis, toque em + sinal para criar um novo. Selecione Evento como tipo, vá em Sistema e selecione Inicialização do dispositivo. Volte e você será solicitado a selecionar a tarefa. Agora selecione a tarefa criada anteriormente e você está pronto para começar!
fonte
Isso exige que você faça um zip com um zip, mas então você pode colocar seus scripts em / system / etc / startup e eles devem iniciar automaticamente com o telefone.
http://forum.xda-developers.com/showthread.php?t=2664645
Também do meu comentário sob a pergunta. Tentei procurar na minha história, mas não consegui encontrar o link em que as pessoas alegavam que o CM tinha seu próprio modo de executar scripts na inicialização.
Editar. Depois de um pouco mais de escavação, não é o CM, por exemplo, que faz o seu próprio para os scripts. É o núcleo. Nem todos os kernels suportam init.d para android. Se você postar qual dispositivo você está usando. Posso procurar um kernel que suporte scripts personalizados na inicialização para você.
fonte
Eu também tenho o mesmo problema ao executar o arquivo de script no terminal no CM12.1. A solução é copiar o script para a
/data
pasta e executá-lo. Então, eu acho que o CM 12 permite apenas scripts executáveis a partir de um determinado local.fonte
Maneira simples (trabalhando):
Prepare seus comandos pós-inicialização em um script, diga / system / xbin / post-boot (set exec perm)
Adicione o caminho do script personalizado acima no final de /system/etc/init.qcom.post_boot.sh
Por exemplo:
eco / system / xbin / pós-inicialização >> /system/etc/init.qcom.post_boot.sh
Feito!
(Se você não conseguir encontrar o qcom post_boot (dispositivos Qualcomm), procure por scripts post_boot)
fonte
Etapas a seguir para executar scripts no momento da inicialização. (Adb obrigatório)
isso funciona para mim. Espero que isso lhe ajude.
fonte