使用java在android中使用swizzling方法有可能嗎?我想攔截系統方法並記錄其參數,然後正常處理它使用java在Android中使用Swizzling的方法
6
A
回答
3
我認爲該技術無法在任何環境中使用Java。
也許你可以使用AOP獲得類似的結果。
但是你可以做什麼,這看起來只限於Android。見Aspect-oriented programming in android。實際上,由於您不會編譯目標代碼(系統方法),因此編譯時編織(這似乎是您可以在Android上使用的所有東西)在這種情況下將毫無用處。我想這就是這個答案。
另外一個想法...我想你一定要做這個日誌記錄。但是如果你需要這個來調試一個問題,你可以用conditional breakpoint in Eclipse來完成。
條件表達式可以包含任意的Java代碼,並且可以 包含多個語句,使斷點條件 實現像跟蹤功能。例如,條件可以執行 打印語句,然後返回一個硬編碼值以永不暫停 (「System.out.println(...); return false;」)。
我不知道這是否適用於Android SDK中的方法。但它可以在Java SDK中使用方法。例如,下面是簡單的代碼:
System.err.println("foo");
我PrintStream.print做了一個條件斷點,這樣的:
System.err.println("hello: " + arg0);
return false;
和控制檯輸出時,在程序調試是這樣的:
hello: foo
foo
請注意,由於JDK不是用調試符號編譯的,因此我不能通過名稱引用方法參數,而是使用arg0..argn
。
相關問題
- 1. Swizzling - 在Objective-C中使用Swizzling的撤消方法選擇器iOS
- 2. Objective C方法使用動態庫Swizzling
- 3. NSArray swizzling的方法
- 4. Objective-C中的方法Swizzling
- 5. NSLocale使用方法swizzling改變currentLocale輸出爲測試目的
- 6. UIResponder的Swizzling複製方法
- 7. 使用Java中的方法
- 8. Android/Java:使用反射調用方法?
- 9. 在Android庫中使用用戶定義的方法Java
- 10. 簡單的方法在Java中使用
- 11. 在java中使用方法的錯誤
- 12. Java-使用方法
- 13. 在Android中使用SQLiteDataBase的rawQuery方法
- 14. google-http-java-client使用方法android
- 15. 在Java中使用Android的
- 16. 在Android中使用C++調用java方法類ID和方法ID
- 17. 調用Java方法在XML中的Android
- 18. 在java中使用方法時無法循環使用
- 19. 使用java的getClasses()方法
- 20. 使用Java的File.delete()方法
- 21. 如何在Java中使用readline()方法?
- 22. 在Java類文件中使用方法
- 23. 在Java中使用pow() - 方法
- 24. 如何使用hittable方法在Java中
- 25. 我想在java中使用printFrequency方法
- 26. 如何在Java中使用toString方法?
- 27. 在opencv java wrapper中使用convertTo方法
- 28. 在Java中使用Groovy添加方法
- 29. 如何在Java中使用getSource方法?
- 30. 在java中使用python類方法
這是否也適用於android sdk的api方法? –