什么样布署,代码中包蕴ndk

NDK

       刚开始做NDK 开垦的时候,Android Studio 尚未提供了 native C/C++
设置断点 调节和测验,大家都以透过输出 日志来调节和测验,那样勤奋耗力。Android Studio
应该是在 2.2 版本才提供的设置断点 debug 功用,同临时候在该版本也提供了 cmake
编写翻译。
     笔者日前在做 NDK 开辟的时候,依然习贯用 NDK-Build(也便是设置
Android.mk) 来支付,小编先简单说一下怎么用输出日志来调度:
1、首先在 Android.mk 设置MODULE 加多日志库,如下代码:

NDK 是 Native
Developmentit的缩写,是谷歌(Google卡塔尔国在Android开采中提供的大器晚成套用于急忙创制native工程的二个工具。
运用那几个工具得以很有益于的编排和调节和测量试验JNI的代码。

include $(CLEAR_VARS)
LOCAL_MODULE := ndktest
LOCAL_SRC_FILES := native_lib.c
LOCAL_LDLIBS += -llog 
include $(BUILD_SHARED_LIBRARY)

NDK可从官网或AndroidDevTools(个人网址卡塔尔下载。

 

1.并发错误:

2、然后在 native_lib.c 实现文件增加:

Error running app: Unable to open debugger port (localhost:8601):
java.net.ConnectException “Connection refused: connect”

#include <android/log.h>

//为了方便调用,将输出宏定义
#define LOG_TAG "NATIVE_OUTPUT"
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__))

2.出现气象:

 

原来项目中参与了ndk未来,debug现身难题(想要调节和测量试验的是原来的代码)。

3、最终就能够在 native_lib.c 完结公文的 方法里输出日志了,如:

3.缓慢解决措施:

LOGI("run here");
LOGI("run i=%d", i);

运用网络的片段艺术都未有成效

 

最终发掘必要改进Debug type(小编测量检验的是Java代码与Native无关)

上述是相比麻烦的调弄收拾方法,每便写完日志,又要重新编写翻译一下代码。今后描述一下怎么搭建
native C/C++ 断点调节和测量试验方法:
1、首先要把您的 Android Studio 进级到 2.2 或越来越高,且在Module下
build.gradle 的buildToolsVersion 参数 要 设置 25 或上述:
buildToolsVersion ‘25.0.0’

再只测量试验Java代码的时候须要选Java

2、如若你是新创造项目, 你能够在New Project 时候, 在 Application name
选项下 有个复选框(Include C++ support) 选上,IDE
在创设项目标时候,会帮你布置好了 debug 碰到。

冠亚体育手机网站 1

3、假使您是从旧项目移植过来的(也正是原先用 Android.mk配置),你可以展开Module下 build.gradle文件
defaultConfig节点中,添加ndk,如下:

设置实现之后,重新debug就可以

ndk {
     moduleName "imagetool"
     abiFilters "armeabi"//编译支持的平台
     // .. 根据自己的 Application.mk 的配置,按 gradle 规则配置一下
}

总结

 

如上所述是小编给我们介绍的Android studio
使用Debugger难题(代码中隐含ndk),希望对我们有所帮衬,倘若我们有其余疑问请给自身留言,小编会及时过来大家的。在这里也特别感激大家对剧本之家网站的帮衬!

接下来在Android 的节点中,增多 externalNativeBuild 节点:

您大概感兴趣的篇章:

  • 浅谈Android
    Studio如何Debug对应so文件C/C++代码
  • Android Studio
    报错“app:processDebugResources”祛除措施
  • Android
    Studio中debug功用详细明白
externalNativeBuild {
    ndkBuild {
        // Android.mk 的相对路径
         path "src/main/jni/Android.mk"
    }
}

 

随着 sync Project 同步一下档次,你会映珍视帘项目多了几个文本夹:

冠亚体育手机网站 2

当您点击 Run Debug 开关 右侧 的Attach debugger to Android process
按键,假使有 Native、Dual 接受:

冠亚体育手机网站 3

 

当你点击 Run Debug 开关 侧边 的Attach debugger to Android process
开关,借使有 Native、Dual 采取:

证明您安顿成功了, 可以在 native-lib.c 落成文件 设置断点来调治了。
上述截图 弹框 是debuger 配置,默许是 auto 选项,你能够安装 成 native
用来debug 你的natvie 代码。

debug 到 native 的时候如下:

冠亚体育手机网站 4

 

您能够行使 LLDB 作为你的Debug 支持理工科程师具,
LLDB怎么选取,那朝气蓬勃章不细说,你能够查看别的素材。

参照他事他说加以考查资料:

(Android 大陆官方网址)

tips:借令你早就配备好了NDK开垦情状,以至 LLDB 插件。

在 debug的时候如下现身如下错误:
Error:FAILURE: Build failed with an
exception.

* What went wrong:
Execution failed for task
‘:app:externalNativeBuildDebug’.
> Build command failed.
Error while executing process
E:\Android\Sdk\ndk-bundle\ndk-build.cmd with arguments
{NDK_PROJECT_PATH=null
APP_BUILD_冠亚体育手机网站,SCRIPT=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Android.mk
NDK_APPLICATION_MK=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Application.mk
APP_ABI=armeabi NDK_ALL_ABIS=armeabi NDK_DEBUG=1
APP_PLATFORM=android-15
NDK_OUT=G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj
NDK_LIBS_OUT=G:\project\Android\Anti-shake-arithmetic\app\build\intermediates\ndkBuild\debug\lib
G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj/local/armeabi/libNDKUtils.so}
[armeabi] StaticLibrary :
libclapack1.a
process_begin: CreateProcess(NULL,
E:/Android/Sdk/ndk-bundle/build//../toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar
crsD ….

很有望是您 defaultConfig节点中,ndk 节点的布署音信与 Application.mk
差异盟,供给你 在ndk 节点增添上去

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注