Ir para conteúdo



Foto

[framework apenas!] xposed - modificação da rom sem modificar apks


  • Por favor, faça o login para responder
4 respostas neste tópico

#1

seiken

    Membro Platinum PluS

  • Membro Prime
  • PipPipPipPipPipPipPip
  • 24.925 posts

Postado 29 Dez 2013 - 17:54

Neste tópico, vou apresentar a framework que oferece a possibilidade de modificar sua ROM - sem modificar nenhum APK (programadores) ou flashear (usuários)! :)

Guia rápido que tipo de mensagens é permitido neste tópico e que não é permitido.
Se você não seguir as regras, você pode ser notificado (às vezes amigável, às vezes com raiva) que você está fazendo errado, mas seu post poderia muito bem ser ignorado.


Não poste sem ler ao menos os dois primeiros posts e procurar no tópico => Eu e outras pessoas temos despendido centenas de horas desenvolvendo e prestando suporte ao Xposed, esperamos ao menos esse respeito
Sem suporte para qualquer módulo aqui => Ao invés disso use o tópico do módulo , nem mesmo tente postar aqui
Sem questões sobre se um module para fazer XYZ existe => Verifique o repositório e este tópico: http://forum.xda-developers.com/showthread.php?t=2327541
Sem pedidos para novos módulos => Verifique este tópico se ele já foi pedido antes, ou então pergunte aqui:
http://forum.xda-developers.com/showthread.php?t=2327541
Não, você não terá qualquer suporte via mensagem privada => para os pontos acima , faça como foi indicado, para coisas permitidas sempre poste neste tópico (a menos que você queira compartilhar logs com dados privados )
SIM, você pode relatar bugs na framework => tenha certeza que você seguiu as instruções e pode reproduzir o problema sem nenhum módulo ativo
SIM, você pode receber suporte se tiver problemas com Xposed Installer (e.g. você não consegue instalar o framework) => Tenha certeza que você leu as instruções e procurou no tópico por problemas semelhantes
SIM, irei suportar desenvolvedores de módulos com questões específicas (e.g. como ganchar um determinado método) => Você deve ler o Tutorial de Desenvolvimento e dar o máximo do contexto necessário para facilitar para mim ou outros membros responderem (código sempre ajuda!)
SIM, você pode sugerir novas características para a API (como um desenvolvedor de módulos) ou o Xposed Installer aqui => Novamente , sem pedidos sobre módulos


Para um início rápido, veja o XDA's "Android Basics 101" Xposed:



http://www.youtube.com/watch?v=uRR0Flqx9M8


Alguns detalhes técnicos:

Eu extendi o executável /system/bin/app_process para carregar um arquivo JAR na inicialização. As classes java deste arquivo vão agregar em todos processos ( incluindo os serviços do sistema ) e pode atuar com seus poderes. E ainda mais: Implementei algo que permite aos desenvolvedores substituir qualquer método em qualquer classe java ( seja na Framework, SystemUI ou app personalizado ). Isto faz Xposed muito poderoso. Voce pode alterar parâmetros de uma chamada de método, modificar os valores retornados ou ignorar a chamada ao método completamente - é tudo para você! Também a substituição ou adição de recursos é fácil .

Vantagens:
  • Não precisa modificar nenhum APK. Isto significa:
    • Não precisa decompilar , mudar coisas com smali, compilar, assinar, ...
    • Funciona com ROMs odexadas ou deodexadas.
    • Seu MOD não será vinculado a uma versão específica da ROM. A menos que haja uma grande mudança na chamada dos métodos para uma funcionalidade, seu MOD vai continuar funcionando mesmo quando atualizar a ROM . Bem, ele provavelmente irá funcionar com ROMs diferentes.
    • Multiplos MODs podem ser instalados ao mesmo tempo, mesmo se eles modificarem o mesmo pacote APK. Então pode usar esses ícones da bateria e os atalhos rápidos ( Quick Toggles ). Mesmo enganchando o mesmo método duas vezes é possível. Claro, isso só funciona corretamente se os mods não estão tentando fazer coisas incompatíveis.
  • Ele faz a sua magia em tempo de execução. Isso significa que você pode implementar opções para deixar o usuário decidir se eles preferem o quadro ser pintado em vermelho ou azul. Ou você pode ter alguma lógica extra para certas ROMs sem a construção de diferentes versões do mod.
  • Pode ser desabilitado facilmente sem ter de reflashear .
  • O código fonte é aberto.

Download:

Você pode baixar o instalador aqui: http://dl.xposed.info/latest.apk. O XposedBridgeApi*.jar anexado é necessário apenas para desenvolvedores .

Uma versão experimental para Gingerbread feita por liudongmiao pode ser encontrada aqui:
http://forum.xda-dev...34#post44034334
( embora sem o suporte por minha parte )

Como instalar:

Primeiro passo para de tudo a fazer: Criar um backup nandroid e ter certeza que você sabe como restaurá-lo!
Não sou responsável por nada que você fizer com seu aparelho/tablet/panela de arroz.
Existe também o riscod e matar ( soft-brick ) seu dispositivo. Neste caso, restaure um backup é a forma mais fácil de resolver (outras possibilidades mencionadas abaixo).

Para a framework:
  • Baixe o Xposed Installer APK e instale-o
  • Execute o Xposed Installer, vai na seção "Framework" e clique em "Install/Update"
  • Reinicialize
  • Pronto!

Você pode verificar iniciando o Xposed Installer de novo. Se app_process voltar para uma versão anterior (ou nenhuma), você provavelmente tem uma ROM com S-On ou semelhante, que reverte quaisquer mudanças do /system após o reboot . Então você pode tentar flashear esse arquivo:
http://forum.xda-dev...&postcount=2308

Para qualquer modulo você quiser instalar:
  • Download <módulo>.apk e instale-o
  • Execute o Xposed Installer e vai na seção "Modules" (você irá para cá se você clicar no aviso de notificação que o módulo não está habilitado ainda)
  • Habilite o módulo marcando a caixa de seleção
  • Reinicialize
  • Pronto!
(note que você pode instalar o framework e habilitar/desabilitar multiplos módulos de uma só vez e reinicializar depois)

No caso de ficar reinicializando em boot loop:
Você pode flashear o Xposed-Disabler-Recovery.zip by Tungstwenty anexado. Ele irá ser copiado no seu cartão SD (externo) quando você instalar o Xposed também. A única coisa ele faz é copiar o /system/bin/app_process.orig de volta no /system/bin/app_process, que você também pode fazer manualmente (e.g. com adb shell no modo Recovery).
Você também pode criar um arquivo /data/data/de.robv.android.xposed.installer/conf/disabled, que causará o Xposed ser evitado .

Módulos:

O repositório oficial de módulos do Xposed , que também pode ser acessado pelo próprio App (com download/update support), pode ser encontrado em :
http://repo.xposed.info

Você pode também dar uma olhada nesse índice :
http://forum.xda-dev...d.php?t=2327541

Por favor não use esse tópico para problemas com módulos!
Ao invés disso use o tópico do próprio módulo .

Como escrever um módulo:
Se você for um desenvolvedor, dê uma chance. O Tutorial de desenvolvimento irá ajudá-lo a começar. Outras documentações (e.g. como substituir recursos) está aqui. E é claro, você pode perguntar por dúvidas de desenvolvimento deste tópico.

Se você tiver sugestões para novas funções para a Framework possa oferecer (que significa eles devem ser úteis não somente para seu módulo), você pode fazer isto aqui também. Entretanto, pedidos que eu ou algum outro devemos escrever um modulo para xyz NÃO são permitidos aqui . Novamente, este tópico é apenas sobre a Framework.

Changelog:

1.0: Initial version
1.1: ???
1.2: Installer
1.5: Resource replacing
1.6: Some fixes and improvements [629 downloads]
2.0 rc2: Lots of thing redone. Supports (temporarily) replacing native libraries, lots of additions and changes for developers. [3,234 downloads]
2.0: Removed the native library replacement again, support for 4.1 and 4.2, Instagram crash fixed, ... [631 downloads]
2.0.1: Fixed a crash when a module tries to hook a function with "long" or "double" parameters [930 downloads]
2.0.2: Fixed a problem which resulted in a boot loop [4,310 downloads]
2.1: Various improvements, e.g. earlier callbacks for module loading. For details, see this post. [345 downloads]
2.1.1: Fixed a bug in drawable replacements [5,421 downloads]
2.1.2: Small fixes, added Chinese and Russian translations [11,415 downloads]
2.1.3: Reverted a change in 2.1.2 that caused bootloops; new translations and some more fixes [46,803 downloads]
2.1.4: Support for Galaxy S4 and HTC One plus a few minor fixes/enhancements (details) [208,176 downloads]
2.2: Builtin updater/module downloader, extended UI, support for Android 4.3 and more (details) [241,267 downloads]
2.3: x86, Knox, MIUI support (experimental), context menu in modules list and more (details) [18,219 downloads]
2.3.1: "Segmentation fault" during installation fixed [679,333 downloads]
2.4: Support for Android 4.4, performance improvements, log viewer, active check (details) [101,613 downloads]
2.4.1: Fixed bootloop on some x86 ROMs

Veja sempre o changelog mais recente no tópico original :

[FRAMEWORK ONLY!] Xposed - ROM modding without modifying APKs


Código Fonte:
https://github.com/rovo89/Xposed (the C++ part)
https://github.com/rovo89/XposedBridge (the Java part)
https://github.com/r...XposedInstaller (Installer app)

Agradecimentos:

Tungstwenty por suas muitas contribuições, tanto no código quando idéias
XDA admins, escritóres de notícias e suporte dos membros por fazer Xposed conhecido por tanta gente
Todos esses voluntários que ajudam respondendo dúvidas sobre o Xposed
As pessoas que doaram para me dar um Nexus 5 para o suporte KitKat inicial


aljohanei for Arabic translations
hero355 for Azerbaijani translations
David_Vaz for Spanish, Catalán, and Galician translations
kecinzer for Czech translations
BobQuentok for German translations
sirodoht for Greek translations
tonymanou for French translations
Adam77Root for Hungarian translations
AngSanley for Indonesian translations
Vincenzo Cerminara for Italian translations
DubelBoom for Hebrew translations
WedyDQ10 for Japanese translations
Martinusbe, Gertlily for Dutch translations
czeci for Polish translations
marciozom13 for Portugese translations
michfood for Russian translations
pyler for Slovak translations
TheNorth34 for Turkish translations
Cye3s, liveasx for Chinese translations


Se você quiser contribuir com mais traduções por favor use este arquivo como um modelo. Eu não posso aceitar traduções baseadas em APKs decompilados. Submissão no GitHub como solicitação de recebimento são os preferidos porque é mais fácil para mim.



http://forum.xda-developers.com/attachment.php?attachmentid=2232598&stc=1&thumb=1&d=1378237576 http://forum.xda-developers.com/attachment.php?attachmentid=2232599&stc=1&thumb=1&d=1378237576 http://forum.xda-developers.com/attachment.php?attachmentid=2232600&stc=1&thumb=1&d=1378237576 http://forum.xda-developers.com/attachment.php?attachmentid=2232601&stc=1&thumb=1&d=1378237576 http://forum.xda-developers.com/attachment.php?attachmentid=2232602&stc=1&thumb=1&d=1378237596

http://forum.xda-developers.com/attachment.php?attachmentid=2232603&stc=1&thumb=1&d=1378237596 http://forum.xda-developers.com/attachment.php?attachmentid=2232604&stc=1&thumb=1&d=1378237596


Xposed-Disabler-Recovery.zip (1.2 KB)
XposedBridgeApi-42.jar (109.1 KB)



Créditos: rovo89 do XDA
Não respondo dúvidas via email, caixa de entrada ou mensagem privada. Procure o fórum sobre seu aparelho e crie um tópico novo com a dúvida, assim não somente eu mas qualquer membro poderá ajudá-lo.


#2

seiken

    Membro Platinum PluS

  • Membro Prime
  • PipPipPipPipPipPipPip
  • 24.925 posts

Postado 29 Dez 2013 - 17:55

Precisa de acesso root ?
Sim, porque substitui arquivo em /system/bin. Uma vez que o framework está instalado, ele deve funcionar sem acesso root .

Para quais aparelhos/ROMs ele funciona?
Eu ( rovo89 ) desenvolvo o Xposed framework baseado no código fonte AOSP . Eu pessoalmente estou usando CM10.2 em um I9100 ( Samsung Galaxy S2 , comprado na Alemanha). Basicamente , ele deve funcionar em qualquer telefone com ROM baseada no Android 4.0 ou posterior e um processador ARM ou x86 ( esta é a arquitetura do processador , os smartphones e tablets quase todos tem um desses ) . Exceções podem ser ROMs que são diferentes do código do Android original, em algumas partes internas do código , muito centrais (que não precisa ser tocado para a maioria das modificações de temas e de melhorias). Mas isto está relacionado com a ROM , não o próprio telefone .
Os módulos destinam código de nível mais elevado, por isso eles são mais propensos a serem incompatíveis com a sua ROM. Basicamente, a questão é se os métodos e recursos que os módulos modificam são semelhantes entre sua ROM e a ROM do desenvolvedor. Digamos que um módulo precisa modificar o resultado de uma determinada chamada de método. Para isso, ele precisa especificar o nome e os parâmetros que identificam o método exato. Se a sua ROM, um parâmetro adicional for adicionado, o módulo não poderá encontrar o método mais e não vai funcionar. Se o método ainda puder ser encontrado, provavelmente vai funcionar (a menos que o resto do app / ROM mudou muito).

Não há resposta definitiva se ele vai funcionar. Basta experimentá-lo (é claro, fazer um backup nandroid antes nunca é uma má idéia). Se isso não funcionar, basta desativar o módulo. Você pode querer informar o desenvolvedor do módulo (não eu! rovo89 ) Sobre este fato e fornecer detalhes (por exemplo, um Logcat e / ou o conteúdo de /data/data/de.robv.android.xposed.installer/log/debug.log) .
Depois de instalar Xposed, o runtime se redefine de ART para Dalvik. Pode parar com isso, por favor?

Você pode ser feliz que eu implementei este, caso contrário, você estaria em um bootloop conhecido. Xposed não é compatível com ART (ainda). É uma arquitetura completamente diferente, com praticamente nenhuma documentação. Espero que eu possa reescrever Xposed para o runtime ART, mas não espere em um futuro próximo. Ele requer a compreensão do conceito, a estrutura de código e muitos detalhes para saber como ele funciona. Depois disso, eu tenho que pensar em formas de sequestrar ele e isso precisa ser implementado, testado e melhorado novamente e novamente. Então, por favor, não pergunte quando ele estará disponível - você certamente vai saber quando estiver pronto.

E sobre Gingerbread? Ou qualquer outra versão Android 4.0.3 antes?

Uma versão experimental para Gingerbread feita por liudongmiao pode ser encontrada aqui:

http://forum.xda-dev...34#post44034334

Note que eu não posso dar qualquer tipo de suporte para ela, envie sua opinião para @ liudongmiao.

Há incompatibilidades conhecidas?
Parece haver problemas com nightlies AOKP. Para mais informações, por favor leia este post.

Se você estiver com x86 e ver a mensagem cannot locate symbol "_Z15dvmChangeStatusP6Thread12ThreadStatus", Temo que Xposed não vai funcionar com sua ROM. Ele tem um parâmetro adicional para um método central, que rompe a compatibilidade. Como eu não sei o que o parâmetro significa (e quais outras mudanças incompatíveis a ROM contém), isso não será corrigido. No entanto, pode funcionar em outras ROMs para o dispositivo. Detalhes podem ser encontrados aqui.

Estas ROMs são conhecidas serem afetadas:
Asus ME302C, android version 4.2.2, kernel 3.4.21, Rom 4.7.1 WW
Chinese Tablet (Ramos i9) com chipset Z2580 e ROM Stock.
Se tiver acesso ao código fonte (dalvik/vm/Thread.cpp) dessas ROMs ou qualquer outra ROM com um terceiro parâmetro para dvmChangeStatus, por favor deixe-me saber .

Parece haver problemas (bootloops) com a Framework do Oppo, eu não tenho uma solução ainda.

Além disso, obviamente, não vai funcionar se as condições mencionadas acima não forem atendidas, por exemplo, se o telefone não está rooteado ou ele está sendo executado em uma ROM pré-ICS.
Final Fantasy (ou algum outro jogo da Square Enix) não funciona enquanto Xposed está habilitado, você pode corrigi-lo?

Depois de passar algumas horas analisando o que está acontecendo, eu não penso assim. Para mais detalhes, leia este post: http://forum.xda-dev...&postcount=1701
Sua única opção é desativar Xposed (ou seja, pressione o botão de desinstalação e reiniciar) enquanto você joga e ativá-lo novamente depois.

Como posso instalá-lo?

Veja o primeiro post. A instalação do quadro precisa ser feito apenas uma vez (e em atualizações), então ele pode ser usado para quaisquer módulos.

Será Xposed desativado se eu flashear uma nova ROM?

Sim, porque o arquivo que modifica, /system/bin/app_process, é parte de cada ROM e será substituído quando você flashear uma ROM. No entanto, desde que você não limpe os dados, o aplicativo Xposed Installer ainda será instalado, de modo que você pode apenas clicar em "Install/Update" novamente na seção Framework e reinicializar .

Para ROMs baseados na CyanogenMod, existe uma solução fácil: [1] e [2]. Isto irá reativar Xposed automaticamente depois que você flashear uma nova ROM / nightly.
Para outras ROMs, você pode tentar este. Tenha cuidado, ele irá desativar Xposed novamente, se você flashear duas vezes!
Não é este inseguro?

De certa forma, sim. Com grande poder vem grande risco. Por outro lado, outras formas de modificar o seu telefone também estão abertos a codificação maliciosa. Para mais detalhes veja este post.

Por que eu tenho para ativar um módulo após instalá-lo? Você não poderia ignorar este passo adicional?

Isto é por razões de segurança (veja a pergunta acima). Ao fazer a confirmação de que você quer usar um módulo, os aplicativos não podem conter módulos Xposed ocultos. O mesmo poderia ser feito com uma permissão adicional, mas eu não tenho certeza se todos reconhecem que e é mais difícil de implementar. Como um bônus, esta alternância permite que você desabilite temporariamente uma modificação ou para enviar um aplicativo que contém um módulo Xposed opcional.

Como faço para desenvolver minha própria modificação usando a Framework Xposed?

Primeiro certifique-se que Xposed está funcionando bem para você. Então leia este tutorial extenso.

Por que não é o Xposed Installer disponível via Play Store?

Tenho várias razões para isso. Eu escrevi sobre isso neste post. E como eu aprendi, o Google, de fato, às vezes remove aplicativos que interferem com outros aplicativos.
Do meu ponto de vista, você é livre para publicar os módulos que você desenvolver na Play Store (em seu próprio risco - Google pode removê-los). No entanto, tome cuidado se você pretende ganhar dinheiro com eles. As aplicações pagas são armazenados em recipientes criptografados, o que significa Xposed não pode carregá-los no momento da inicialização.

Onde posso doar algum dinheiro para apoiá-lo?

Eu estou fazendo ok com o meu trabalho de desenvolvimento em tempo integral. Xposed é um hobby e eu quero que ele fique assim. Se eu aceito o dinheiro para ele, seria de alguma forma se sentir como um segundo emprego, acumula-se as expectativas de mais suporte, etc

Então, por favor doe para a caridade em vez disso, eles precisam do dinheiro mais do que eu. Ou se você não pode dar ao luxo de gastar dinheiro, doar felicidade às pessoas ao seu redor com alguns atos aleatórios de bondade. Obrigado!

Estou autorizado a desembolsar Xposed e publicar a minha própria versão? O que devo considerar?
Eu escrevi este para baixo em um post separado: http://forum.xda-dev...&postcount=4372

Posso incluir Xposed na minha ROM?
Antes de tudo: Uma razão pela qual eu desenvolvi Xposed era evitar a necessidade de flash qualquer coisa apenas por algumas pequenas mudanças. Então Xposed é projetado para trabalhar em cima de ROMs, e não como uma parte delas.

Dito isto, eu não proíbo de incluí-lo. Aqui estão as condições:



  • Eu não vou apoiá-lo no processo de inclusão.[/B] Você vai ter que descobrir a melhor maneira de fazê-lo sozinho. A maneira mais fácil (o que também fará com que menos problemas) é, provavelmente, simplesmente colocar o instalador e os módulos em /system/app, então seus usuários só precisam clicar no botão "Install/Update", ativar os módulos que eles querem e reinicializar .
    Pode haver maneiras de realmente pré-instalar Xposed de modo que ele funcione, mas eu não recomendo isso. Você tem que ter muito cuidado com as permissões do arquivo, para que haja uma boa chance de que não vai funcionar. Mais uma vez, absolutamente nenhum apoio para isso.
  • Eu não vou dar suporte para seus usuários com problemas que podem ter sido causados por usar versão incluída ao invés de instalar normalmente.
  • Quando seus usuários reportarem problemas que provavelmente não tenham relação com inclusão do Xposed na ROM, por favor tente dar a eles algum suporte você mesmo. Se você não encontrar solução, envie-os para o tópico de ajuda correto. Por exemplo, está thread é apenas para a framework. Não para quaisquer módulos, nem mesmo meus próprios .
  • Espero que você inclua as últimas versões, que são as normalmente que funcionam melhor. Eu não dou suporte a versões antigas .
  • Seus usuários devem tercomo atualizar para a última versão, preferivelmente sem instalar uma nova versão da sua ROM. Novamente, eu não dou suporte para versões antigas .
  • Os pontos anteriores, segue que você precisa incluir os APKs originais, senão atualização não será possível por erro de certificado. Isto é ainda mais importante desde que atualizações são possíveis pelo app. Ele também evita confusão, como usuários procurando suporte para qualquer modificação que você tiver feito.
  • Você provavelmente precisa incluir alguns módulos. Existem muitos módulos que não são escritos por mim mesmo. Portanto, você precisa receber permissão dos autores dos módulos também. Para módulos escritos por mim, as mesmas condições que você está lendo se aplicam.
  • Por favor dê os devidos créditos (que inclui um link para este tópico para o Framework). Não venda como seu próprio trabalho.

[FRAMEWORK ONLY!] Xposed - ROM modding without modifying APKs

Você pode ter a impressão agora que eu não sou um grande fã de incluir Xposed em uma ROM . Esta impressão está correta. Não é tão difícil instalar o Xposed e qualquer tentativa de pre-instalar Xposed irá somente causar mais pedidos de suporte

Porquê você não só recomenda o Xposed no tópico da sua ROM, juntamente com o lugar onde se pode baixá-lo (esta discussão) e algumas instruções sobre como obter o máximo proveito dela para sua ROM? Dê aos seus usuários alguns escolha!

Créditos: rovo89 do XDA
Não respondo dúvidas via email, caixa de entrada ou mensagem privada. Procure o fórum sobre seu aparelho e crie um tópico novo com a dúvida, assim não somente eu mas qualquer membro poderá ajudá-lo.

#3

David

    Alone In The Blue!

  • Supervisor
  • 16.620 posts

Postado 23 Jan 2014 - 15:26

Muito bom.
Eu acompanho o Xposed há algum tempo. Gosto bastante, apesar de algumas instabilidades.

Shits Happen All the Time!


#4

Igorwill

    Membro

  • Membros
  • PipPip
  • 45 posts

Postado 12 Fev 2014 - 21:19

Bom eu utilizo no meu S DUOS

You tube adAway = ele impedi as propagandas quando vamos ver vídeos no Youtube ,, eu gostei

Greenify=versão paga hiberna aplicativos do sistema, é perfeito

HideBatteryLowAlert= Tira o alerta quando a bateria tá acabando,

 

Existe mais, mas ainda estou na fase de conhecimento



#5

David

    Alone In The Blue!

  • Supervisor
  • 16.620 posts

Postado 13 Fev 2014 - 07:32

Eu usava pra remover o relógio da área de trabalho, usava pra escolher quais apps iniciariam junto com o celular também.

Como estou usando meu N4 da forma mais Stock possível, eu removi.


Shits Happen All the Time!