Почему некоторые телефоны на Android заставляют наше приложение генерировать ошибку java.lang.UnsatisfiedLinkError?

Мы'испытываетеjava.lang.UnsatisfiedLinkError на некоторых телефонах Android, которые используют наше приложение на рынке.

Описание проблемы:

static
{
    System.loadLibrary("stlport_shared"); // C++ STL        
    System.loadLibrary("lib2"); 
    System.loadLibrary("lib3"); 
}

Вылетает приложение наSystem.loadLibrary() линии с.java.lang.UnsatisfiedLinkErrorjava.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/app_id-2.apk,libraryPath=/data/app-lib/app_id-2]: findLibrary returned null

Подход к решению

Мы начали запускать некоторую пользовательскую диагностику на всех наших установках, чтобы проверить, распакованы ли все библиотеки в/data/data/app_id/lib папка.

PackageManager m = context.getPackageManager();
String s = context.getPackageName();
PackageInfo p;
p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;

File appDir = new File(s);
long freeSpace = appDir.getFreeSpace();

File[] appDirList = appDir.listFiles();
int numberOfLibFiles = 0;
boolean subFilesLarger0 = true;
for (int i = 0; i < appDirList.length; i++) {

    if(appDirList[i].getName().startsWith("lib")) {
        File[] subFile = appDirList[i].listFiles(FileFilters.FilterDirs);   
        numberOfLibFiles = subFile.length;
        for (int j = 0; j < subFile.length; j++) {
            if(subFile[j].length() 

Ответы на вопрос(4)

Ваш ответ на вопрос