2013-03-10 9 views
0

У меня есть выпущенное приложение, в котором используется SDK дополненной реальности Vuforia. Для всех моих устройств и большинства пользователей приложение используется без проблем. Однако у меня было несколько автоматических отчетов ACRA от UnsatisfiedLinkErrors от пользователей. Я не уверен, как диагностировать дальше.UnsatisfiedLinkError для некоторых пользователей

В статическом {} блок в основной деятельности у меня есть следующий код:

static { 
    loadLibrary("QCAR"); 
    loadLibrary("MYLIB"); 
} 

Нет там проблемы .. а потом у меня есть куча родных побочных функций заявила, первые из которых является :

public native void setX(int x); 

Java_domain_mine_MainActivity_setX(JNIEnv *env, jobject, jint x) { 

В методе MainActivity в OnCreate(), небольшое количество не-JNI кода, связанного выполняется, а затем самый первый вызов JNI, который Setx (х) бросает исключение UnsatisfiedLinkErrors.

Теперь, как я уже сказал, этот код подходит для меня и большинства моих пользователей так программно, я думаю, что это все в порядке. В таких обстоятельствах могу ли я сделать вывод на 100%, что библиотека с функцией setX не загружена должным образом? Или это может означать, что библиотека просто не закончила загрузку?

Я предполагаю, что static {} вызывает загрузку библиотек, запущенных в основном потоке, поэтому вызов setX должен появляться после вызова loadLibrary, и, следовательно, библиотеки завершили свою попытку загрузить, либо сбой или преуспевающий, но не тот случай, когда они все еще инициализируются в другом потоке.

У кого-то еще были подобные проблемы, и если да, то как вы справились с этим?

Кстати, я не вижу никаких сходств на устройствах, у которых была эта проблема. Один из них был 2.3.6, другой - 4.1.1. Оба различных производителей ...

+1

вы строите для различных ABI, как MIPS, x86, armeabi-v7a использования APP_ABI: = все, если не –

+0

Ах да , хорошая точка зрения. Я только строю для APP_ABI: = armeabi armeabi-v7a. Я полагаю, что собственные библиотеки Vuforia, которые я использую, были написаны специально для архитектуры snapdragon (я использую APP_ABI, как в своих примерных приложениях). Полагаю, я могу заключить, что мои клиенты могут использовать другой архитектурный телефон ... в этом случае мне интересно, может ли Google Play отфильтровать это. – pilcrowpipe

+0

на самом деле это я просто проверил, перейдите по адресу http://developer.android.com/google/play/filters.html >> другие фильтры >> Архитектура ЦП (ABI) –

ответ

2

Если вы строите для различных ABI, как MIPS, x86, использование armeabi-v7a

APP_ABI := all в файле тк

Но я не думаю, что проблема лежит там, как Google имеет фильтр для их проверки http://developer.android.com/google/play/filters.html

Перейти к >> другие фильтры >> Архитектура процессора (ABI)

0

родной код не компилируется.

если вы разрабатываете код с помощью Eclipse, вы должны добавить поддержку NDK компилировать родной код

 Смежные вопросы

  • Нет связанных вопросов^_^