У меня есть выпущенное приложение, в котором используется 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. Оба различных производителей ...
вы строите для различных ABI, как MIPS, x86, armeabi-v7a использования APP_ABI: = все, если не –
Ах да , хорошая точка зрения. Я только строю для APP_ABI: = armeabi armeabi-v7a. Я полагаю, что собственные библиотеки Vuforia, которые я использую, были написаны специально для архитектуры snapdragon (я использую APP_ABI, как в своих примерных приложениях). Полагаю, я могу заключить, что мои клиенты могут использовать другой архитектурный телефон ... в этом случае мне интересно, может ли Google Play отфильтровать это. – pilcrowpipe
на самом деле это я просто проверил, перейдите по адресу http://developer.android.com/google/play/filters.html >> другие фильтры >> Архитектура ЦП (ABI) –