Lingkungan: NDK + Eclipse Juno + ADT + CDT terbaru. Semuanya mutakhir.
Saat saya mencoba men-debug aplikasi Android saya secara asli, saya mendapatkan kesalahan berikut:
warning: Unable to find dynamic linker breakpoint function.
GDB will retry eventurally. Meanwhile, it is likely
that GDB is unable to debug shared library initializers
or resolve pending breakpoints after dlopen().
Untuk memastikan ini bukan aplikasi spesifik saya, saya membuat aplikasi tiruan sederhana. Inilah langkah-langkah yang saya ambil.
- Dari Eclipse, buat proyek aplikasi Android baru (dengan min-sdk 16 dan target-sdk 21)
- Menambahkan kelas:
package com.test.mytest1;
public class MyNative {
static {
android.os.Debug.waitForDebugger();
System.loadLibrary("mytest1");
}
native public static void init();
}
Perhatikan bahwa saya telah menambahkan baris untuk menunggu debugger diinisialisasi.
Disebut MyNative.init() dari metode onCreate() MainActivity.
Dari preferensi, perbaiki NDK agar mengarah ke direktori C:\adt\ndk.
Dari menu proyek, pilih Alat Android-->Tambahkan Dukungan Asli.
Dari Properties->C++ Build, setel perintah build ke "ndk-build NDK_DEBUG=1"
Berikut kode di mytest1.cpp:
static int x = 0;
JNIEXPORT void JNICALL Java_com_test_mytest1_MyNative_init(JNIEnv *, jclass)
{
x++;
}
- Menambahkan Application.mk di direktori jni:
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16
Sekarang, ketika saya mencoba menjalankan aplikasi sebagai aplikasi asli, gagal dengan pesan yang disebutkan di atas.
Ketika saya melihat file apk, lib/armeabi-v7a memang berisi file gdbserver serta libmytest1.so.
Aplikasi ini berfungsi. Jika saya menambahkan pernyataan log() dalam metode asli saya, pernyataan itu akan ditampilkan di LogCat.
Saya bingung dan lelah. Hal sederhana seperti itu seharusnya berhasil. Ingin tahu apakah Anda dapat membagikan apa yang Anda lakukan secara berbeda agar berhasil. Salam.
android.os.Debug.waitForDebugger();
dalam penginisialisasi statis. Bila diperlukan, biasanya saya letakkan dionCreate
. Tapi saya tidak yakin itu penting untuk masalah Anda. - person jww   schedule 13.09.2014