Benutzerdefinierte Klasse, die Android-native Klassen lädt / überschreibt

8

Hauptziel ist es, die Android-Systemklasse (Activity, View usw.) mit meiner eigenen Implementierung zu überschreiben.

Ссылка

ClassLoader zum Laden benutzerdefinierter Klassen ist implementiert, das Laden von Nicht-Systemklassen (benutzerdefinierte Klassen) funktioniert.

Aber wenn ich versuche, die Aktivität mit meiner Implementierung zu laden, wird sie nicht geladen, weil ClassLoader diese Klasse bereits in ihrem Cache hat:

%Vor%

Wie kann ich den Klassenlader ändern, um meine eigene Klasse anstelle des Systems zu injizieren?

    
user1083195 06.12.2011, 09:37
quelle

2 Antworten

3

Ich habe diese Lösung aus einem Blogpost gefunden. Ich weiß, es ist eher gegen Stack-Überlauf-Richtlinien, um einen Link zu posten, aber der Text ist zu groß, um übertragen zu werden.

Die Idee besteht darin, einen C-Code zu schreiben, der den Mechanismus zum Laden niedriger Klassen außer Kraft setzt und somit die Art, wie eine Methode ausgeführt wird, überschreibt. Ich hoffe, das könnte jemandem helfen.

    
Panayotis 10.10.2015 07:53
quelle
0

Sobald eine Klasse von RootClassLoader geladen wurde, kann sie nicht erneut geladen werden, es sei denn, sie wird zuerst entladen. Das Entladen einer Klasse ist jedoch ein Prozess, der automatisch vom DVM verwaltet wird. Ich bin auch von dem gleichen Problem betroffen.

    
user1786236 31.03.2013 19:38
quelle