我正在使用来自金丝雀频道的最新AS,以及随之而来的ndk。 我修改了我的Android项目以适应,我的应用程序(包括JNI)构建并正常运行。
我还没有(允许)工具自动处理构建JNI部分。现有的makefile中有很多特殊的酱汁,所以这将是很多工作。所以我的构建文件中没有android.ndk
部分。我还有一个gradle.build
文件。
我的调试版本类型如下所示:
android.buildTypes {
debug {
isMinifyEnabled = false
proguardFiles += file('proguard-rules.txt')
isDebuggable = true
isJniDebuggable = true
}
}
我添加了本机运行配置。当我尝试调试它时,我得到一个像LLDB server not found
这样的异常。
如果我切换到gdb,我会得到一个不同的异常。有什么想法吗?
Teapot
和hello-jni
等几个JNI样本工作正常。
以下是LLDB例外:
LLDB server not found
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:115)
at com.android.tools.ndk.run.lldb.AndroidLLDBDebuggerContext.launchLLDBServer(AndroidLLDBDebuggerContext.java:66)
at com.android.tools.ndk.run.lldb.AndroidLLDBDebuggerContext.startServer(AndroidLLDBDebuggerContext.java:55)
at com.android.tools.ndk.run.AndroidNativeDebugRunner$NativeDebugLauncher.launchDebug(AndroidNativeDebugRunner.java:109)
at org.jetbrains.android.run.AndroidRunningState.launchDebug(AndroidRunningState.java:835)
at org.jetbrains.android.run.AndroidRunningState.clientChanged(AndroidRunningState.java:814)
at com.android.ddmlib.AndroidDebugBridge.clientChanged(AndroidDebugBridge.java:879)
at com.android.ddmlib.Device.update(Device.java:721)
at com.android.ddmlib.Client.update(Client.java:938)
at com.android.ddmlib.HandleAppName.handleAPNM(HandleAppName.java:112)
at com.android.ddmlib.HandleAppName.handleChunk(HandleAppName.java:65)
at com.android.ddmlib.MonitorThread.callHandler(MonitorThread.java:414)
at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:322)
at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)
答案 0 :(得分:0)
我担心你需要用gradle而不是makefile编译你的C ++代码。 LLDB服务器将自动生成gradle。 Android studio还不支持任何其他外部构建系统(例如Makefile)。
答案 1 :(得分:0)
我们将调试器附加为Java,而不是本机附加。至于您提到的ndk,则应使用本机。但是任何尝试使用此方法来避免调试器分离和应用程序自动终止的方法。