wie legen Sie den Pfad an, wo aapt add Befehl fügt die Datei
Ich bin mit aapt-tool zum entfernen Sie einige Dateien aus verschiedenen Ordnern meine apk. Dies funktioniert sehr gut.
Aber wenn ich wollen, um Dateien hinzufügen und die apk, die aapt-tool " add " - Befehl nicht lassen Sie mich geben Sie den Pfad an, wo ich will die Datei, die Hinzugefügt werden, daher kann ich hinzufügen, Dateien nur in den root-Ordner der apk.
Das ist merkwürdig, denn ich glaube nicht, dass Entwickler würde nie wollen, um Dateien in einem Unterordner des apk (res-Ordner zum Beispiel). Ist das möglich mit aapt oder eine andere Methode? Ursache entfernen von Dateien aus einem beliebigen Ordner funktioniert einwandfrei, und das hinzufügen von Datei funktioniert nur für den root-Ordner der apk. Kann es nicht verwenden, für alle anderen Ordner.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Des aapt-tool behält die Verzeichnis-Struktur angegeben, in der " add " - Befehl, wenn Sie etwas hinzufügen möchten, um einen vorhandenen Ordner aus, in einer apk muss man einfach haben, eine ähnliche Ordner auf Ihrem system und angeben müssen jede Datei, die Sie hinzufügen voll-listing-die directory. Beispiel
Die pic1.png, der Hinzugefügt wird, befindet sich in einem Ordner in das aktuelle Verzeichnis im terminal res/drawable-hdpi/, hoffe, das beantwortet deine Frage
Es ist tatsächlich ein bug in
aapt
zu machen, dass diese nach dem Zufallsprinzip unmöglich. Die Art, wie es funktionieren soll ist, wie die anderen Antwort behauptet: Pfade gespeichert, es sei denn, Sie übergeben-k
. Mal sehen, wie das umgesetzt wird:Das flag, die steuert, ob der Pfad ignoriert wird
mJunkPath
:Diese variable ist in einer Klasse namens
Bundle
, und wird gesteuert durch zwei Zugriffsmethoden:Wenn der angegebene Benutzer
-k
auf der Kommandozeile, es isttrue
:Und, wenn die Daten der Datei Hinzugefügt wurde, wird geprüft:
Leider, die eine Instanz von
Bundle
verwendet, die von der Anwendung zugewiesen ist, immain
auf dem stack, und es ist keine Initialisierung desmJunkPath
im Konstruktor, so wird der Wert der Variablen ist zufällig, ohne dass ein Weg, um explizit den Wertfalse
auf meinem system habe ich (scheinbar deterministisch) nicht in der Lage bin zum hinzufügen von Dateien in die angegebenen Pfade.Aber Sie können auch einfach verwenden
zip
als APK ist einfach eine Zip-Datei, und diezip
tool funktioniert einwandfrei.(Für das Protokoll, ich habe nicht eingereicht die triviale Lösung für dieses Problem, da ein patch für Android noch, wenn jemand anderes will, wäre die Welt wahrscheinlich ein besserer Ort sein. Meine Erfahrung mit dem Android-code-Vorlage Prozess hatte oben zu setzen mit einem unglaublich komplexen Vorlage-Mechanismus, der am Ende dauerte sechs Monate, für jemanden zu Holen Sie sich zurück zu mir, in einigen Fällen mit geringfügigen änderungen könnten nur an Ihrem Ende waren Ihre Einreichung nicht so furchtbar Komplex. Da gibt es eine wirklich einfache Lösung für dieses problem, ich halte es nicht für wichtig genug, um mit Mühe das alles wieder.)
zip
. ;Pclasses.dex
(gebaut mitdx
), um eine vorhandene APK durchzip my.apk classes.dex
ohne Problem.