同一個含 native 方法的類別,在 Activity 呼叫正常,在 Service 中報 UnsatisfiedLinkError。
類別的靜態初始化區塊 static { System.loadLibrary("mylib"); } 只有在類別**首次被主動使用**時才執行。若 Service 啟動時該類別已被 Activity 載入,則庫已載入;若 Service 獨立進程(android:process=":remote"),則**不共享記憶體**,需再次載入。
public class JniWrapper {
static { System.loadLibrary("mylib"); }
public native int doWork();
}
onCreate 中顯式呼叫 System.loadLibrary("mylib") 或觸發類別初始化 Class.forName("com.example.JniWrapper")。AndroidManifest.xml 的 android:process 屬性,預設同進程不需額外處理。