Após um hiato de três anos, a versão atual do sView está disponível novamente no macOS. O lançamento do sView 20.08 prometia suporte para macOS 10.10+ , mas algo deu errado e vários usuários encontraram um problema estranho - os sistemas macOS 10.13 e 10.14 se recusaram a iniciar o aplicativo com uma mensagem sobre a necessidade de atualizar para o macOS 10.15 ...
Dizer que o erro me intrigou é subestimar muito o grau de minha indignação, porque o número mágico 10,15 não apareceu em nenhum lugar nos scripts de construção ou nos recursos do sView! Além disso, o aplicativo foi testado pessoalmente em uma versão mais antiga do sistema, ou seja, o macOS 10.10.
Um pouco de fundo. Em 2011, a primeira versão do sView para OS X 10.6 Snow Leopard foi lançada e, por seis anos, essa versão do sistema permaneceu como o requisito mínimo para executar o sView. O suporte para versões relativamente antigas de sistemas operacionais fornece cobertura máxima de usuários em potencial, mas requer esforços adicionais.
A prática de desenvolver aplicativos Windows, Linux, Android e macOS mostra que as suposições de que o aplicativo compilado "parece funcionar" em todas as versões dos sistemas falham periodicamente e os problemas de compatibilidade surgem de maneiras inesperadas. Nesses casos, a capacidade de testar o desempenho de um aplicativo em sistemas diferentes (incluindo os mais antigos, com suporte formal) torna-se vital.
OS X , , , . , macOS .
. , OS X SDK XCode. SDK XCode SDK XCode, .
OS X 10.6 Snow Leopard, sView OS X , MacBook. OS X .
, Apple , , . , XCode macOS SDK - , - macOS :
MACOSX_DEPLOYMENT_TARGET
(..,export MACOSX_DEPLOYMENT_TARGET=10.0
);
-mmacosx-version-min
(..,EXTRA_CXXFLAGS += -mmacosx-version-min=10.0
).
CMake CMAKE_OSX_DEPLOYMENT
, qmake - QMAKE_MACOSX_DEPLOYMENT_TARGET
.
XCode 11 OS X 10.6, Hello World 10.7 . , OS X 10.6 Snow Leopard 2009 - , - . ?
OS X 10.10 Yosemite 6 6 "" macOS 11.0 Big Sur. OS X Apple. , OS X 10.10 MacBook - , .

“” mid-2010 MacBook , macOS , macOS 10.13 High Sierra 2017 .
, Apple 7 ! Apple macOS - OS X 10.10 macOS 10.13 .
sView Makefile
10.10
, Info.plist
LSMinimumSystemVersion=10.0
. macOS 10.15, Mac mini ‘2018, OS X 10.10 - !
… , , sView macOS, . ! 10.15
, LSMinimumSystemVersion
10.10
- macOS ?
- 10.15
. macOS 10.13, . , sView !
, - sView, , otool -l
:
Load command 9
cmd LC_BUILD_VERSION
cmdsize 32
platform macos
sdk 10.15
minos 10.15
ntools 1
tool ld
version 450.3
minos
, , macOS . , - , OS X 10.10 sView , macOS 10.13-10.14 ? OS X 10.10 minos
!
A última questão permaneceu - onde o erro apareceu durante o processo de construção do aplicativo? O exame do pacote sView revelou que o campo estava minos
presente apenas nas bibliotecas e no arquivo executável do próprio projeto, mas não nas bibliotecas FFmpeg construídas de forma semelhante. Ou seja, o problema estava claramente no Makefile
projeto. No final das contas, o sinalizador foi -mmacosx-version-min
passado para o compilador por meio de uma variável EXTRA_CXXFLAGS
, mas não para o vinculador. Adicionar um sinalizador a uma variável EXTRA_LDFLAGS
finalmente resolveu o problema:
TARGET_OS_VERSION = 10.10
EXTRA_CFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
EXTRA_CXXFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
EXTRA_LDFLAGS += -mmacosx-version-min=$(TARGET_OS_VERSION)
A publicação original em inglês pode ser encontrada aqui .
