Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

About ''dlopen,dlsym'',we are rejected by appstore review.

Discussion in 'Unity Remote Config' started by KvenLee, Nov 18, 2020.


Have you ever come across this problem 'dlopen,dlsym' ?

  1. yes

  2. no

Multiple votes are allowed.
  1. KvenLee


    Nov 18, 2017
    We recently used the 'Remote Config' plug-in in our project.But the version was rejected by Apple's review team. They said we violated App Store Review Guideline 2.5.2 of the Apple Developer Program License Agreement.
    It means that we've called some forbidden methods.The original words are "This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior and/or call SPI, based on the contents of the downloaded script. "

    We upgraded the Unity version to ‘2018.4.29f’.And we changed the Scripting Runtime Version to '.Net 4.x Equivalent'.To find out reasion, we ran the following tests:
    1.We imported the Remote Config 2.0.0 in Package manager.And we created an empty project that contains only contains the Remote Config plug-in.There is no forbidden methods.

    2.We added a scriptto call Remote Config.

    Code (CSharp):
    1. using UnityEngine;
    2. using Unity.RemoteConfig;
    4. public class RemoteConfigMgr : MonoBehaviour
    5. {
    6.     public struct userAttributes { }
    7.     public struct appAttributes { }
    9.     public void Awake()
    10.     {
    11.         ConfigManager.FetchCompleted += ConfigManager_FetchCompleted;
    12.         ConfigManager.FetchConfigs<userAttributes, appAttributes>(new userAttributes(), new appAttributes());
    13.     }
    15.     public void OnDestroy()
    16.     {
    17.         ConfigManager.FetchCompleted -= ConfigManager_FetchCompleted;
    18.     }
    20.     public bool FetchNewConfig()
    21.     {
    22.         if (Application.internetReachability == NetworkReachability.NotReachable)
    23.         {
    24.             return false;
    25.         }
    27.         ConfigManager.FetchConfigs<userAttributes, appAttributes>(new userAttributes(), new appAttributes());
    28.         return true;
    29.     }
    31.     private void ConfigManager_FetchCompleted(ConfigResponse response)
    32.     {
    33.         switch (response.requestOrigin)
    34.         {
    35.             case ConfigOrigin.Default: break;
    36.             case ConfigOrigin.Cached: break;
    37.             case ConfigOrigin.Remote: break;
    38.         }
    39.     }
    40. }
    But we found it contains 'dlopen,dlsym'.It was this problem that led to the rejection of our review.

    Can you tell me what we should do now?

    This is my player setting.
    zhouxing likes this.
  2. vd_unity


    Unity Technologies

    Sep 11, 2014
    Hi @KvenLee ,
    Thanks for your feedback!
    We believe the error you encountered is not related to remote config package, but it would be great to trace back which method call actually generates dlsys call during il2cpp conversion.
    Could you provide some kind of stack trace or a log that could help us further with this issue?