Setelah jeda tiga tahun, versi sView saat ini sekarang tersedia lagi di macOS. Rilis sView 20.08 menjanjikan dukungan untuk macOS 10.10+ , tetapi ada yang tidak beres dan beberapa pengguna muncul dengan masalah aneh - sistem macOS 10.13 dan 10.14 menolak untuk meluncurkan aplikasi dengan pesan tentang perlunya memperbarui ke macOS 10.15 ...
Untuk mengatakan bahwa kesalahan itu membingungkan saya adalah terlalu meremehkan tingkat kemarahan saya, karena angka ajaib 10.15 tidak muncul di mana pun dalam skrip build atau di sumber daya sView! Selain itu, aplikasi tersebut telah diuji secara pribadi pada versi sistem yang lebih lama, yaitu macOS 10.10.
Sedikit latar belakang. Kembali pada tahun 2011, versi sView pertama untuk OS X 10.6 Snow Leopard dirilis , dan selama enam tahun versi sistem ini tetap menjadi persyaratan minimum untuk menjalankan sView. Dukungan untuk versi sistem operasi yang relatif lama memberikan cakupan maksimum bagi pengguna potensial, tetapi membutuhkan upaya tambahan.
Praktik mengembangkan aplikasi Windows, Linux, Android, dan macOS menunjukkan bahwa asumsi bahwa aplikasi yang dikompilasi "tampaknya berfungsi" pada semua versi sistem secara berkala gagal, dan masalah kompatibilitas muncul dengan cara yang tidak terduga. Dalam kasus seperti itu, kemampuan untuk menguji kinerja aplikasi pada sistem yang berbeda (termasuk yang tertua, yang didukung secara formal) menjadi penting.
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
!
Pertanyaan terakhir yang tersisa - di mana kesalahan merayap selama proses pembuatan aplikasi? Memeriksa paket sView mengungkapkan bahwa bidang itu minos
hanya ada di perpustakaan dan file yang dapat dieksekusi dari proyek itu sendiri, tetapi tidak di perpustakaan FFmpeg yang dibangun dengan cara yang sama. Artinya, masalahnya jelas ada di Makefile
proyek. Ternyata, flag tersebut -mmacosx-version-min
diteruskan ke compiler melalui variabel EXTRA_CXXFLAGS
, tetapi tidak diteruskan ke linker. Menambahkan bendera ke variabel EXTRA_LDFLAGS
akhirnya menyelesaikan masalah:
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)
Publikasi asli dalam bahasa Inggris dapat ditemukan di sini .