MAS Rejection because of Xojo ODBCPlugin.dylib

Hi,

Today I got my app rejected. Reason: Guideline 2.5.1 - Performance

They say: Your app links against the following non-public framework(s):

• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetConnectAttr
• Contents/Frameworks/ODBCPlugin.dylib/_SQLAllocEnv
• Contents/Frameworks/ODBCPlugin.dylib/_SQLDescribeColW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLExecute
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFreeHandle
• Contents/Frameworks/ODBCPlugin.dylib/_SQLAllocStmt
• Contents/Frameworks/ODBCPlugin.dylib/_SQLPrimaryKeysW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLPrepareW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFetchScroll
• Contents/Frameworks/ODBCPlugin.dylib/_SQLStatisticsW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetInfoW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLSpecialColumnsW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetInfo
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetInfoW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLAllocConnect
• Contents/Frameworks/ODBCPlugin.dylib/_SQLSetStmtAttr
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetData
• Contents/Frameworks/ODBCPlugin.dylib/_SQLSetEnvAttr
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetDiagRec
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetDiagRecW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLDataSources
• Contents/Frameworks/ODBCPlugin.dylib/_SQLBindParameter
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetDiagRecW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetTypeInfoW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLColumnPrivilegesW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLBindCol
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFreeConnect
• Contents/Frameworks/ODBCPlugin.dylib/_SQLTransact
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFreeStmt
• Contents/Frameworks/ODBCPlugin.dylib/_SQLRowCount
• Contents/Frameworks/ODBCPlugin.dylib/_SQLMoreResults
• Contents/Frameworks/ODBCPlugin.dylib/_SQLNumResultCols
• Contents/Frameworks/ODBCPlugin.dylib/_SQLDriverConnect
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFetch
• Contents/Frameworks/ODBCPlugin.dylib/_SQLFetchScroll
• Contents/Frameworks/ODBCPlugin.dylib/_SQLSetConnectAttr
• Contents/Frameworks/ODBCPlugin.dylib/_SQLTablesW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLForeignKeysW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLPrepare
• Contents/Frameworks/ODBCPlugin.dylib/_SQLPrepareW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLSetConnectOption
• Contents/Frameworks/ODBCPlugin.dylib/_SQLColumnsW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLExecDirectW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLDisconnect
• Contents/Frameworks/ODBCPlugin.dylib/_SQLProcedureColumnsW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLGetConnectOption
• Contents/Frameworks/ODBCPlugin.dylib/_SQLProceduresW
• Contents/Frameworks/ODBCPlugin.dylib/_SQLTablePrivilegesW

Note that this app is on the App Store with this OBDC stuff since the App Store was created. Not sure what has changed. I use the ODBCPlugin that comes with Xojo as usual, the version that comes with Xojo 2021r1.1 I submitted the app with App Wrapper 4.

Anybody else has seen this problem?

:bearded_person:t2: Stan Busk (Maxprog Support)

Fill a feedback case to have someone from Xojo Inc. check this.
You could try MBS Xojo SQL Plugin instead…

I have done that and the app has been submitted again. I will let you know about the result. :crossed_fingers:

:bearded_person:t2: Stan Busk (Maxprog Support)

1 Like

I don’t understand - the listed dylib is internal to your app. Yes, it’s private to it, but the rule in question is about using non-public system frameworks, which these aren’t.

I wonder if the reviewer just doesn’t understand the difference and you need to educate her/him.

2 Likes

It may be the linking references to libiodbc.2.dylib and libiodbcinst.2.dylib libraries. Our plugin loads it at runtime.

I know that Apple is really worried about apps using “Private” API, but this seems like their system failed.

I mean it must be really hard for the worlds wealthiness tech company to only scan for API that they know is private, it’s not like they have a list or know what is private and what isn’t.

1 Like

Seems like they marked some C APIs as private, which are shipping for over a decade with the system.