Pergunta

Estou usando o Xcode para construir um aplicativo para iPhone, onde eu gostaria de processar externamente o arquivo info plist da mesma maneira como a etapa de compilação XCode mostrado abaixo faz

Processing /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist TestAppGen-Info.plist
mkdir /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app
cd /Users/kte/Projects/TestAppGen
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
<com.apple.tools.info-plist-utility> TestAppGen-Info.plist -genpkginfo /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/PkgInfo -expandbuildsettings -format xml -o /Users/kte/Projects/build/Debug-iphonesimulator/TestAppGen.app/Info.plist

Este trecho do log de compilação refere-se a um com.apple.tools.info-plist-utilidade, que se reúnem a partir de várias fontes em torno da rede, é um utilitário XCode interno.

É possível executar o com.apple.tools.info-plist-utilidade de uma linha de comando?

Foi útil?

Solução

Você pode usar uma ferramenta chamada PlistBuddy, /usr/libexec/PlistBuddy, ter um olhar para sua página man.

Mas você também precisa converter parte de trás plist em um arquivo plist binário. Isto pode ser feito como este em um script de construção

plutil -convert binary1 "$TARGET_BUILD_DIR/$INFOPLIST_PATH"

Outras dicas

O "plutil" resposta é um grande começo. Infelizmente o processo de construção Xcode faz mais para o arquivo Info.plist de convertê-lo para binário, por exemplo no meu sistema ele adiciona os campos:

-MinimumOSVersion
-PlatformName
-CFBundleExecutable
-SDKName
-CFBundleResourceSpecification
-CFBundleSupportedPlatforms

De acordo com o documentação da Apple você não deve configurar alguns desses valores se:

MinimumOSVersion

MinimumOSVersion (String). Quando você construir um aplicativo para iPhone, Xcode observa o alvo OS (como determinado pela a selecção SDK base) como a propriedade MinimimOSVersion. Não especificar esta propriedade se no info.plist; é um propriedade escrito pelo sistema. Quando você publicar seu aplicativo para a App Loja, a loja indica o iPhone liberação OS em que a sua aplicação pode ser executado com base nesta propriedade. Isto é equivalente ao LSMinimumSystemVersion propriedade no Mac OS X.

Eu estou correndo em todos os tipos de problemas ao tentar re-assinar o meu pedido como parte do meu processo de compilação personalizada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top