From Xcode 12.5 start Apple force Action target must set
APPLICATION_EXTENSION_API_ONLY to true. If you didn’t set it, you will get an error “
Application extensions and any libraries they link to must be built with the `APPLICATION_EXTENSION_API_ONLY` build setting set to YES.“.
But normally we share a lot of codes between App targets and Action targets. So codes in Action target will contain some codes that don’t obey extension-only API requests. Like
UIApplication.shared.keyWindow and so on.
So we can warp these codes using
#if !ACTION_EXTENSION, like this:
#if !ACTION_EXTENSION //codes that don't obey extension-only API requests #else //normal codes #endif
4 replies on “Xcode 12.5 start force Action target must set APPLICATION_EXTENSION_API_ONLY to true”
hi tinyfool，tks your article， but I still don‘t know how to solve this problem. ACTION_EXTENSION is a system macro or custom? how to conditionally open or close, usually build one framework for all dependency
Do you have a target is action type?
Open your source code file cause error, click menu View->inspectors-File, check the inspector the source file must in some action type target.
When you code in action type target, ACTION_EXTENSION will be set automatically.
hi tinyfool, thanks a lot, I know your meanings, but My project only has a share extension, Does it also has SHARE_EXTENSION just like ACTION_EXTENSION?
You can look at your targets’ “Build settings”, select “All”, “Levels”, Other Swift Flags.
You may find -D ACTION_EXTENSION.
I can’t sure share extension must include ACTION_EXTENSION, but may it introduce by some mistake operation?