2016-06-17 7 views
0

Ich habe eine App mit vielen benutzerdefinierten Symbolen im Ordner 'res' geschrieben. Ich habe kürzlich einen Großteil des Codes in eine Android-Bibliothek ausgelagert, einschließlich Schaltflächen, die die Ressourcen-Icons verwenden. Und es ist birnenförmig.Eclipse ADT - Bibliotheksprojekt kann keine eigenen Ressourcen verwenden?

Wenn sich eine Bibliotheksklasse auf eine Ressource bezieht, verweist sie speziell auf die Klasse com.example.library.R (nicht den tatsächlichen Paketnamen!). Das funktioniert gut zum Kompilieren, aber wenn ich die App auf einem Gerät ausführe, ist die Klasse com.example.library.R nicht in der apk, daher erhalte ich eine ClassNotFoundException. Ich sammle Bibliotheksprojekte, die ihre R-Klasse nicht in ihre JAR-Datei schreiben, was ihre Abwesenheit von der APK erklärt.

Meine Frage ist, wenn ich eine Schaltfläche in einem Bibliotheksprojekt codiere, wie kann ich auf ein Symbol in seinen Ressourcen verweisen? Ist das möglich? Wenn das so ist, wie? Wenn nicht, gibt es Workarounds? (Ich kann nicht die erste Person sein, die auf dieses Problem trifft!)

Antwort

0

Ich habe ein Workaround programmiert, alles in Java. Andere Lösungen, die ich für ähnliche Probleme gesehen habe, beinhalten das Wackeln von Eclipse/adts is-library-Einstellungen, oder auf andere Weise auf Schwäche in der IDE angewiesen zu sein. Hier ist mein Ansatz ...

(1) Halten Sie die Symbole in den Ordnern der Bibliothek und der App bereit.

(2) Kopieren Sie die R.java-Datei aus dem gen-Ordner der Bibliothek in ein Paket im Ordner src und benennen Sie sie in RR.java um.

(3) Schreiben Sie in der Hauptaktivität der App einen statischen Initialisierungscode, der jeden Wert aus der R-Klasse der Anwendung in die RR-Klasse der Bibliothek kopiert.

(4) Verwenden Sie in der Bibliothek die Klasse RR statt der Klasse R.

Es ist hässlich, aber es scheint zu funktionieren.

Verwandte Themen