I ran into this problem trying to load Gstreamer plugins that I had packaged as private libraries with my application. In Android N, they began adding an extra path element to where the private libraries are installed. Each time the app is installed, a new random name is used to create a directory for the libraries. (This is done to prevent other apps from using private libraries from another application.) I had to make a Native-to-Java call to get the path from the app context like this:
return MyCustomApp.getContext().getApplicationInfo().nativeLibraryDir;
Prepend this string to the file name in the dlopen call, and the library will be found.