В ходе исправления бага:
https://bugreports.qt.io/browse/QTBUG-68813
Разработчик фреймверка написал такой код:
https://codereview.qt-project.org/#/c/252757/2/src/android/jar/src/org/qtproj...
В нем есть такая функция:
public static String loadMainLibrary(final String mainLibrary, final String nativeLibraryDir)
{
final String[] res = new String[1];
res[0] = null;
m_qtThread.run(new Runnable() {
@Override
public void run() {
try {
String mainLibNameTemplate = "lib" + mainLibrary + ".so";
File f = new File(nativeLibraryDir + mainLibNameTemplate);
if (!f.exists()) {
try {
ActivityInfo info = m_activity.getPackageManager().getActivityInfo(m_activity.getComponentName(),
PackageManager.GET_META_DATA);
String systemLibraryDir = QtNativeLibrariesDir.systemLibrariesDir;
if (info.metaData.containsKey("android.app.system_libs_prefix"))
systemLibraryDir = info.metaData.getString("android.app.system_libs_prefix");
f = new File(systemLibraryDir + mainLibNameTemplate);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
if (!f.exists())
return;
System.load(f.getAbsolutePath());
res[0] = f.getAbsolutePath();
} catch (Exception e) {
Log.e(QtTAG, "Can't load '" + mainLibrary + "'", e);
}
}
});
return res[0];
}
Вопрос. Зачем он вместо создания строки создает массив строк, а потом возвращает первый элемент?