Omnis Technical Note TNEX0008 April 2020

Loading External Frameworks in macOS Catalina and Newer

For Omnis Studio 10.x
By Andrei Augustin, Omnis Engineering

Introduction
With macOS Catalina, Apple has introduced app notarization, aimed at delivering a much more secure operating system. As a consequence, the rules on loading external frameworks at runtime are more strict. This means that we will need to make some changes if we want Omnis to be able to load external libraries (dylibs). Examples of external dylibs that you may want to load at runtime include those comprising the Oracle InstantClient, or those comprising the SAP SQLAnywhere ODBC driver.

Traditionally, we would have created a symbolic link to those dylib(s) and placed them in a specific folder where macOS will look for them when Omnis loads them. A notarized app no longer has permission to access libraries that exist outside of the main application.

At the time of writing of this TechNote, the frameworks like Oracle's InstantClient, SAP's SQL Anywhere client and Microsoft's ODBC driver do not seem to meet Apple's requirements to be loaded dynamically at runtime. Because of this, we need to apply a workaround which involves:

  • adding their dylibs directly into the Omnis tree
  • changing where the dylibs will be loaded from with the help of a command-line tool
  • codesign and notarize

Search Omnis Developer Resources

 

Hit enter to search

X