È possibile eseguire il metodo di swizzling in Android usando java? Vorrei intercettare un metodo di sistema e registrare i suoi parametri, quindi elaborarlo normalmenteMetodo Swizzling in Android usando java
risposta
Penso che questa tecnica non possa essere utilizzata utilizzando Java in qualsiasi ambiente.
Forse potresti ottenere un risultato simile utilizzando AOP.
Ma quello che puoi fare con quello sembra limitato su Android. Vedi Aspect-oriented programming in android. Infatti, dal momento che non compilerai il codice di destinazione (metodo di sistema), la tessitura in fase di compilazione (che sembra essere tutto ciò che potresti usare su Android) sarà inutile per questo caso. Come è questa risposta, suppongo.
Un altro pensiero ... Immagino che vogliate fare questo logging in modo coerente. Ma se ti servisse per eseguire il debug di un problema, potresti farlo usando uno conditional breakpoint in Eclipse.
un'espressione condizionale può contenere codice Java arbitrario e può contenere più economico, consentendo condizioni punto di interruzione per implementare funzioni come il tracciamento. Ad esempio, una condizione può eseguire un'istruzione print e quindi restituire un valore hard coded per non sospendere mai ("System.out.println (...); return false;").
Non so in modo specifico se questo funziona con i metodi nell'SDK di Android. Ma funziona con i metodi nel Java SDK. Ad esempio, qui è semplice codice:
System.err.println("foo");
Ho fatto un punto di interruzione condizionale in PrintStream.print, in questo modo:
System.err.println("hello: " + arg0);
return false;
E l'uscita della console durante il debug del programma è questo:
hello: foo
foo
Si noti che poiché il JDK non è compilato con i simboli di debug, non posso riferirmi ai parametri del metodo per nome, ma usando lo arg0..argn
.
- 1. Metodo swizzling in Swift
- 2. App Store - Metodo Swizzling Legality
- 3. Metodo di swizzling per "alloc"?
- 4. Prestazioni di swizzling del metodo Objective-C
- 5. Utilizzo di dispatch_once nel metodo swizzling
- 6. Swift isa puntatore remapping o altro metodo supportato swizzling
- 7. Metodo Java per Android: layout_gravity
- 8. Il mio isa-swizzling si interrompe KVO
- 9. Come richiamare un metodo in java usando la riflessione
- 10. Usando il metodo privato da un'altra classe in Java
- 11. Come postare qualsiasi dato usando il metodo POST in Android
- 12. Come debuggare correttamente Java (Android) usando Eclipse?
- 13. Android glSurfaceView con overlay usando XML/Java
- 14. Sleep() in java (Android)
- 15. repaint() Metodo in Java
- 16. metodo clone() in Java
- 17. Metodo ArrayList.toArray() in Java
- 18. Come leggere i dati da Firebase ONCE usando java/android?
- 19. Swizzling un metodo con argomenti variabili e inoltrare il messaggio - Bad Accesso
- 20. Associazione dati Android: "Riferimenti al metodo usando '.' è deprecato"
- 21. Metodo parametri d'ordine in Java
- 22. Understanding Collections.reverseOrder() metodo in Java
- 23. Mock un enum usando Mockito in Java
- 24. Metodo di collegamento/ancoraggio in Java
- 25. Trilaterazione in Android usando iBeacons
- 26. Android/Java: la chiamata di un metodo mediante la riflessione?
- 27. parametro finale in un metodo in Java
- 28. python usando il metodo argparse.ArgumentParser
- 29. Modificare un metodo usando le annotazioni
- 30. Java: metodo JIT inlining
questo si applica anche ai metodi API dal sdk di Android? –