Nach einer dreijĂ€hrigen Pause ist die aktuelle Version von sView nun wieder unter macOS verfĂŒgbar. Die Veröffentlichung von sView 20.08 versprach UnterstĂŒtzung fĂŒr macOS 10.10+ , aber etwas ging schief und mehrere Benutzer hatten ein seltsames Problem - macOS 10.13- und 10.14-Systeme weigerten sich, die Anwendung mit der Meldung zu starten, dass ein Update auf macOS 10.15 erforderlich ist ...
Zu sagen, dass der Fehler mich verwirrt hat, bedeutet, den Grad meiner Empörung stark zu unterschĂ€tzen, da die magische Zahl 10.15 nirgendwo in den Build-Skripten oder in den sView-Ressourcen auftauchte! DarĂŒber hinaus wurde die Anwendung auf einer Ă€lteren Version des Systems, nĂ€mlich macOS 10.10, persönlich getestet.
Ein bisschen Hintergrund. Bereits 2011 wurde der erste sView-Build fĂŒr OS X 10.6 Snow Leopard veröffentlicht . Sechs Jahre lang war diese Version des Systems die Mindestanforderung fĂŒr die AusfĂŒhrung von sView. Die UnterstĂŒtzung relativ alter Betriebssystemversionen bietet maximale Abdeckung fĂŒr potenzielle Benutzer, erfordert jedoch zusĂ€tzliche Anstrengungen.
Die Praxis der Entwicklung von Windows-, Linux-, Android- und MacOS-Anwendungen zeigt, dass Annahmen, dass die kompilierte Anwendung auf allen Systemversionen "zu funktionieren scheint", regelmĂ€Ăig fehlschlagen und KompatibilitĂ€tsprobleme auf unerwartete Weise auftreten. In solchen FĂ€llen ist die Möglichkeit, die Leistung einer Anwendung auf verschiedenen (einschlieĂlich der Ă€ltesten, formal unterstĂŒtzten) Systemen zu testen, von entscheidender Bedeutung.
Die Àltere Version von OS X erfordert jedoch dasselbe alte GerÀt , da es hÀufig nicht möglich ist, das System auf einem GerÀt zu installieren, das spÀter als das System selbst freigegeben wurde. Virtualisierungstools könnten das Problem lösen, aber im Fall von macOS sind sie nicht gut.
. , 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
!
Die letzte Frage blieb offen: Wo hat sich der Fehler wÀhrend des Anwendungserstellungsprozesses eingeschlichen? Die Untersuchung des sView-Pakets ergab, dass das Feld minos
nur in den Bibliotheken und der ausfĂŒhrbaren Datei des Projekts selbst vorhanden war, nicht jedoch in den auf Ă€hnliche Weise erstellten FFmpeg-Bibliotheken. Das Problem lag eindeutig im Makefile
Projekt. Wie sich herausstellte, wurde das Flag -mmacosx-version-min
ĂŒber eine Variable an den Compiler ĂŒbergeben EXTRA_CXXFLAGS
, jedoch nicht an den Linker. Das HinzufĂŒgen eines Flags zu einer Variablen EXTRA_LDFLAGS
löste schlieĂlich das Problem:
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)
Die Originalveröffentlichung in englischer Sprache finden Sie hier .