我为Native Android开发的第一步需要一些帮助。我将armv7 gdbserver复制到我的手机上并编译了#34;你好的话"用C ++编写的测试应用程序。现在我想用android ndk包中的gdb调试我的应用程序。
我启动gdb并通过目标远程命令连接到手机并获取此消息并在" s"命令gdb成立。
(gdb) target remote 192.168.1.157:1235
Remote debugging using 192.168.1.157:1235
Reading /data/local/Test from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /data/local/Test from remote target...
Reading symbols from target:/data/local/Test...done.
Reading /system/bin/linker from remote target...
Reading /system/bin/linker from remote target...
Reading symbols from target:/system/bin/linker...(no debugging symbols found)...done.
0xb6fdf654 in __dl__start () from target:/system/bin/linker
(gdb) s
Single stepping until exit from function __dl__start,
which has no line number information.
我做错了什么?为何如此?以及如何生成符号/调试信息?我试着设置"设置(CMAKE_BUILD_TYPE Debug)"但没有生成新文件。
我的CmakeLists.Txt
set(PROJECT_NAME Test)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_TOOLCHAIN_FILE android-cmake/android.toolchain.cmake)
set(ANDROID_NDK /home/drem1lin/Android/Sdk/ndk-bundle)
set(ANDROID_NATIVE_API_LEVEL "android-19")
set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi-4.9")
set(ANDROID_ABI "armeabi-v7a")
project(${PROJECT_NAME})
cmake_minimum_required(VERSION 3.1)
include_directories(include)
file(GLOB SOURCES source/*.c*)
add_executable(${PROJECT_NAME} ${SOURCES})
foreach (module_src ${MODULES})
get_filename_component(module ${module_src} NAME_WE)
string(TOLOWER ${module} module)
add_library(${module} SHARED ${module_src})
set_target_properties(${module} PROPERTIES PREFIX "")
set_target_properties(${module} PROPERTIES SUFFIX ".m")
target_link_libraries(${module} ${LIBRARY_DEPS})
endforeach(module_src)
最诚挚的问候保罗。
答案 0 :(得分:1)
对于那些使用新的NDK工具链(不使用Sub ToggleVisibility(oSh as Shape)
oSh.Visible = Not oSh.Visible
End Sub
但在with recursive nodes as (
select serial_id, upline, left pos, 1 lvl from customers where upline = 0
union all
select c.serial_id, c.upline, n.left + c.left, n.lvl + 1
from nodes n
inner join customers c on c.upline = n.serial_id
)
select *
from nodes
order by lvl desc, pos desc
limit 1
中添加Android.mk
之类的用户),请按以下步骤操作:
第1步:如下更改externalNativeBuild
。
注意::如果您的ndk在库中使用,请更改您的库的gradle文件,而不是您的主应用程序
build.gradle
第2步:构建项目(对我来说是build.gradle
,但对于本机Android项目,您知道的。)
第3步:现在您的带有符号的android {
defaultConfig {
packagingOptions {
doNotStrip '**.so' // ADD THIS! #1
}
externalNativeBuild {
cmake {
cppFlags "-Wl,--build-id -g" // ADD THIS! #2
}
}
}
}
在这里:(这是 sample 位置,其中库名是vision_utils,我的.so文件名是libvision_utils.so)
flutter build apk --debug
或
.so
Bonus1:如果您想要apk中的“实际” .so文件,请像./build/vision_utils/intermediates/cmake/debug/obj/arm64-v8a/libvision_utils.so
那样找到它。
Bonus2:如果您使用的是bloaty,则可以运行以下命令:./build/vision_utils/intermediates/stripped_native_libs/debug/out/lib/arm64-v8a/libvision_utils.so
答案 1 :(得分:0)
如果您的编译器是gcc或clang,那么在编译时只需传递-g
选项即可生成调试符号。
答案 2 :(得分:0)
我有这个麻烦,因为我知道linux构建系统非常糟糕。在"EDIT"
文件夹