在玩这个谜题(这是一个Java关键字琐事游戏)时,我遇到了native关键字.
Java中的native关键字用于什么?
我有一个在Windows 10下由Android Studio 2.2.3创建的android项目,该项目通过其包装jar(通过JNI)使用本机库.本地库是由qmake在Android Studio之外构建的,它将在android NDK r13b中使用GCC 4.9来生成本机共享库,代码是使用-g选项编译的.
要使用这个本机库,我将包装jar放在<proj_path>/app/libs目录下<proj_path>/app/src/main/jniLibs/armeabi-v7a,本机库下,一切正常,我可以从java代码成功调用本机库中实现的方法.
问题是,当我调试这个android项目时,我在cpp文件中设置的断点没有生效,请注意cpp文件不在android项目的源代码树中,我只是从android studio打开它.我已经安装了最新的LLDB并且我使用'Hybrid'调试类型启动调试,我还使用'image list'LLDB命令来确认调试时加载的本机库映像是未剥离的版本.但断点不会受到打击.
我的配置有什么问题?
有人能给我一些建议吗?
谢谢!
c++ debugging java-native-interface android-ndk android-studio
很久以前,Google代码票据被打开,因为Gradle插件不会传播,无论您是对依赖的android库进行调试构建还是发布构建:
描述:
无论您是对依赖的android库进行调试构建还是发布构建,Gradle插件都不会传播.版本信息:
gradle插件:0.3 gradle:1.4
这是一个问题,特别是当release库的配置阻止代码版本或调试过程正常发生时(本机方法的红色突出显示,因为IDE在正常链接时不再发现,Java逐步断开)一步调试......).
这在Google Code和Stack Overflow上进行了彻底的讨论,而Kane O'Riley提出了一个非常有趣(干净)的解决方法:
把它放在你的应用程序中:
dependencies { debugCompile project(path: ':custom_lib', configuration: "libraryDebug") releaseCompile project(path: ':custom_lib', configuration: "libraryRelease") }
并在你的库的build.gradle中添加:defaultPublishConfig 'release' publishNonDefault true productFlavors { library { } }
我试了一下,但是我在Gradle同步时有以下消息:
Error:Configuration with name 'libraryDebug' not found.
Run Code Online (Sandbox Code Playgroud)
我尝试使用" debug"和" release"(这是我在lib中使用的构建配置名称),但结果是一样的.
有什么想让这个有趣的解决方案有效吗?(我正在运行Android Studio 2.0 beta 2)
附录:
我的lib build.gradle文件(包括我目前正在使用的丑陋的解决方法):
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
// THIS IS WHERE I …Run Code Online (Sandbox Code Playgroud)