2013-03-10 77 views
0

我有一個使用Vuforia增強現實SDK的已發佈應用程序。對於我所有的設備和大多數用戶來說,該應用程序正在使用,沒有任何問題。不過,我已經收到了一些來自用戶的關於UnsatisfiedLinkErrors的ACRA自動報告。我不確定如何進一步診斷。某些用戶的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的(x)的拋出UnsatisfiedLinkErrors異常。

現在,正如我所說,這段代碼對我和我的大多數用戶運行良好,所以編程方式我認爲上述沒有問題。在這種情況下,我能否得出100%的結論,即帶有setX函數的庫尚未正確加載?或者是否意味着圖書館尚未完成加載?

我假設靜態{}調用加載庫在主線程上運行,所以調用setX應該在loadLibrary調用之後到來,因此庫將完成加載的嘗試,或者失敗或成功,但不是他們仍然在另一個線程上初始化的情況。

是否有其他人有類似的問題,如果是的話,你是如何處理它?

順便說一句,我看不到在有此問題的設備上有任何相似之處。一個是2.3.6,另一個是4.1.1。這兩種不同的製造商...

+1

你構建針對不同的ABI像MIPS,X86,armeabi-V7A使用APP_ABI:=所有,如果不 – 2013-03-11 12:10:43

+0

噢, 好點子。我只是建立APP_ABI:= armeabi armeabi-v7a。我相信我使用的Vuforia本地庫是專門爲snapdragon體系結構編寫的(我正在使用APP_ABI,就像它們的示例應用程序中那樣)。我想我可以得出結論,我的客戶可能會使用不同的體系結構手機......在這種情況下,我想知道Google Play是否可以將其過濾掉。 – pilcrowpipe 2013-03-12 19:45:03

+0

其實它只是檢查去http://developer.android.com/google/play/filters.html >>其他過濾器>> CPU體系結構(ABI) – 2013-03-13 05:21:46

回答

0

您的本機代碼不編譯。

,如果你使用eclipse開發的代碼,你必須添加NDK的支持編譯本地代碼