Ich bin kürzlich in einem Projekt auf eine Notwendigkeit gestoßen: APK- und IPA-Pakete analysieren und dann die darin enthaltenen Symbole auf den Server hochladen.
Frage
Der Parsing- und Upload-Prozess ist relativ einfach. Ich verwende JSZip, um die APK und IPA zu dekomprimieren und dann das darin enthaltene Symbol auf den Server hochzuladen. Allerdings tritt das Problem auf, wenn ich Bilder in Webseiten verwende. Es gibt kein Problem mit den Symbolen in der APK, aber die in der IPA analysierten Bilder können in Safari normal angezeigt werden, in keinem anderen Browser jedoch.
Grund
Nach Google habe ich festgestellt, dass Apple PNG-Bilder optimiert hat. Weitere Informationen finden Sie in diesem Artikel:
Apple uses PNGCursh open source library to crush png images inside iPA files。
Lösung
Als Front-End-Ingenieur hoffe ich, dieses Problem mit Javascript lösen zu können. Tatsächlich hat es schon einmal jemand im Ausland gelöst. NodeJS-PNGDefry ist leider nicht mehr lauffähig.
Ich konnte keins finden, also musste ich selbst genug Essen und Kleidung herstellen und selbst eines schreiben. Daher node-pngdefry. Die Funktion von node-pngdefry ist sehr klar: Sie verwendet Javascript, um von Apple verarbeitete PNG-Bilder wiederherzustellen.
node-pngdefry ist sehr einfach zu verwenden und unterstützt die Befehlszeile und reguläre Node.js:
Befehlszeilenverwendung
Installieren:
$ npm install -g pngdefry
dann ausführen:
$ pngdefry -i icon.png -o icon.new.png
Verwendung in Node.js
$ npm install pngdefry --save-dev
var pngdefry = require('pngdefry'); var path = require('path'); var input = path.join(__dirname, 'icon.png'); var output = path.join(__dirname, 'icon.new.png'); pngdefry(input, output, function(err) { if (err) { return; } console.log('success'); });
Testen
$ npm test
Projektadresse