tanersener / mobile-ffmpeg

FFmpeg for Android, iOS and tvOS. Not maintained anymore. Superseded by FFmpegKit.
https://tanersener.github.io/mobile-ffmpeg
GNU General Public License v3.0
3.85k stars 787 forks source link

big sur 11.1 OSX with xcode 12.4 cannot build with --lts option #708

Closed wnpllrzodiac closed 3 years ago

wnpllrzodiac commented 3 years ago

./ios.sh --lts --enable-gpl --enable-x264 --enable-ios-videotoolbox --enable-fontconfig --enable-freetype --enable-fribidi --enable-libass

(*) LTS packages should be built using SDK 9.3 but current configuration uses SDK 14.4

refer to https://github.com/tanersener/mobile-ffmpeg/issues/270

Download Xcode 7.3.1 ad Command Line Tools for 7.3.1 from Apple

big sur 11.1 NOT compatible with xcode 7.3.1, cannot install and run well.

Any solution?

tanersener commented 3 years ago

Have you tried forcing the build with -foption?

wnpllrzodiac commented 3 years ago

Yes, I tried with "--force" and build is done! But I'm not sure the output framework is the right thing(support old ios devices, in other words "LTS") what I need.

And I'm confused about apple develpment OSX version, Xcode version, ios sdk version. Too many versions make me confused. In Android development, I can use VERY high sdk version(e.g. sdk 30) to build low api level requirement APP(api 16). Just need to change build.gradle file. Can IOS development use the same way? which I means I cannot install too old xcode (with according ios sdk 9.3) to make the build as you mentioned. I use xcode 12.4 installed from app store now.

tanersener commented 3 years ago

I know it is not easy to install older Xcode versions to the latest macOS releases. That's why there is a -f option there. To allow you to build the LTS version of the library with a newer Xcode/SDK.

Technically, you can build a binary that supports iOS 9.3+ from any Xcode you want. The reason why scripts are configured to find Xcode 7.3.1 there is because it was the version I used to test LTS releases when I first introduced support for them. And I know that LTS binaries generated from that Xcode/SDK can be used by the newer versions with no issues.

Unfortunately, Xcode sometimes break the compatibility between the versions. A binary created by a newer SDK version can not always be used on older Xcode versions. We had that kind of issue between Xcode 11.3 and Xcode 11.4 in this project. Anyway, that's the reason why I'm using Xcode 7.3.1 as reference.

Also, remember that some features are removed in newer Xcode versions. For example you can not build 32-bit architectures on Xcode 11 or later. They will automatically disabled by the scripts.

wnpllrzodiac commented 3 years ago

Thank you very much for your detail reply sincerely. It help me a lot.

wnpllrzodiac commented 3 years ago

push to cocoapod and it works!