1
私のプロジェクトでパッケージ名を変更すると、次のエラーが表示されます。 ネットをサーフィンしていますが、有用なデータはありません。 場合によっては、メソッドが静的であってはならないことがわかりました。静的メソッドを削除すると、 メソッドは静的でなければなりません。 事前 で おかげで、これは私の誤りで、この問題を解決するためにどんな提案:パッケージ名を変更したときにネイティブメソッドが見つかりません
ネイティブメソッドが見つかりません
com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors:()I
at com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors(Native Method)
at com.nooshindroid.yastashir.controller.JNIServer.runServer(JNIServer.java:27)
at com.nooshindroid.yastashir.game.FreebloksActivity.startNewGame(FreebloksActivity.java:520)
at com.nooshindroid.yastashir.game.FreebloksActivity$16.onClick(FreebloksActivity.java:774)
at com.nooshindroid.yastashir.game.ColorListDialog.onItemClick(ColorListDialog.java:79)
at android.widget.AdapterView.performItemClick(AdapterView.java:301)
at android.widget.AbsListView.performItemClick(AbsListView.java:1510)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3339)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
と、この私のコード:
public class JNIServer {
final static String tag = JNIServer.class.getSimpleName();
/* unfortunately Runtime.availableProcessors() returns only the number of online cores */
public static native int get_number_of_processors();
private static native int native_run_server(int game_mode, int field_size_x, int field_size_y, int ki_mode, int ki_threads);
private static native int native_resume_server(
int field_size_x,
int field_size_y,
int current_player,
int spieler[],
int field_data[],
int player_stone_data[],
int game_mode,
int ki_mode,
int ki_threads);
public static void runServer(Spielleiter spiel, int game_mode, int field_size, int ki_mode) {
int ki_threads = get_number_of_processors();
if (spiel == null)
native_run_server(game_mode, field_size, field_size, ki_mode, ki_threads);
else {
int player_stones_available[] = new int[Stone.STONE_COUNT_ALL_SHAPES * 4];
int i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < Stone.STONE_COUNT_ALL_SHAPES; j++)
player_stones_available[i * Stone.STONE_COUNT_ALL_SHAPES + j] = spiel.get_player(i).get_stone(j).get_available();
native_resume_server(
spiel.m_field_size_x,
spiel.m_field_size_y,
spiel.current_player(),
spiel.spieler,
spiel.get_game_field(),
player_stones_available,
game_mode,
ki_mode,
ki_threads);
}
}
static {
Log.d(tag, "loading server.so");
System.loadLibrary("server");
}
}
他の言語で実装されている場合、パッケージの変更によっておそらくネイティブコードのルックアップが破損する可能性があります。それも新しいパッケージに移しましたか? –
はい、自分のプロジェクトにjniフォルダがあります。どのように私はそれを再構築することができますか? – bmm