Извлечение содержимого файла ipa (согласно ответу @ TomSwift)
Я написал этот сценарий PHP cmd line, который будет конвертировать / распаковывать все изображения в каталоге. Это скрипт строки cmd, он протестирован только на OSX.
Аргументы:
- indir (каталог, содержащий PNG)
- outdir (каталог, в который будут помещены преобразованные PNG)
- pngcrushpath [ необязательно ] (путь к pngcrush, если не указан, по умолчанию будет стандартным)
Пример использования:
php uncrush.php - indir /MyIPAs/MyApp.app/ - outdir
/ MyIPAs / перекодировано /
Источник сценария:
<?php
$args = getopt('', array(
'indir:',
'outdir:',
'pngcrushpath::'
));
$inDir = @rtrim($args['indir'], '/');
$outDir = @rtrim($args['outdir'], '/');
$pngCrushPath = isset($args['pngcrushpath']) ? $args['pngcrushpath'] : '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush';
if(!is_dir($inDir)){
error('INPUT DIR IS NOT VALID - DIRECTORY NOT FOUND ' . $inDir);
}
if(!is_dir($outDir) && !mkdir($outDir)){
error('OUTPUT DIR IS NOT VALID - DIRECTORY WAS NOT FOUND AND COULD NOT BE CREATED ' . $outDir);
}
if(!is_file($pngCrushPath)){
error('PNGCRUSH BINARY NOT FOUND');
}
$pngs = glob($inDir . '/*.png');
foreach($pngs as $png){
msg('CONVERTING - ' . $png);
convert($png, $outDir . '/' . basename($png));
}
msg('DONE');
exit;
function error($str){
$f = fopen('php://stderr', 'w');
fwrite($f, $str . "\n");
fclose($f);
exit;
}
function msg($str){
$f = fopen('php://stdout', 'w');
fwrite($f, $str . "\n");
fclose($f);
}
function convert($inPng, $outPng){
global $pngCrushPath;
exec($pngCrushPath . ' -revert-iphone-optimizations -q ' . $inPng . ' ' . $outPng);
}
?>
Сегодня я написал этот скрипт для собственного использования, надеюсь, он пригодится кому-то еще. Не стесняйтесь изменять и размещать репосты в другом месте, но, пожалуйста, дайте ссылку на этот ответ на SO.