Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

android-studio 不能显示源码和调试 #5

Open
imkerberos opened this issue May 27, 2020 · 6 comments
Open

android-studio 不能显示源码和调试 #5

imkerberos opened this issue May 27, 2020 · 6 comments
Labels
contribution welcome enhancement New feature or request help wanted Extra attention is needed

Comments

@imkerberos
Copy link

imkerberos commented May 27, 2020

描述问题

使用 xmake-gradle 编译 JNI, 在 build.gradle, xmake.lua 中配置 debug 模式,
在 jni 的 c++ 代码中设置的断点无效. 对比 CMAKE 工程:

  1. CMAKE 工程可以在 project 区显示 CPP 源代码的文件, xmake-gradle 没有显示.
  2. CMAKE 工程在调试状态断点工作正常, xmake-gradle 编译的工程断点工作不正常.

期待的结果

  1. 在 android-studio 的 project 区可以正常显示 xmake 搜索到的 jni 源文件列表.
  2. 调试模式下, jni 源文件中的断点工作正常.

错误信息

无错误信息.

相关环境

OS: MacOSX Catalina 10.15.4
xmake: 2.3.3
xmake-gradle: 1.0.7
android-studio: 3.6.3
android-ndk:

 Path                                     | Version | Description                             | Location
  -------                                  | ------- | -------                                 | -------
  build-tools;28.0.3                       | 28.0.3  | Android SDK Build-Tools 28.0.3          | build-tools/28.0.3/
  build-tools;29.0.3                       | 29.0.3  | Android SDK Build-Tools 29.0.3          | build-tools/29.0.3/
  cmake;3.10.2.4988404                     | 3.10.2  | CMake 3.10.2.4988404                    | cmake/3.10.2.4988404/
  emulator                                 | 30.0.12 | Android Emulator                        | emulator/
  patcher;v4                               | 1       | SDK Patch Applier v4                    | patcher/v4/
  platform-tools                           | 30.0.1  | Android SDK Platform-Tools              | platform-tools/
  platforms;android-19                     | 4       | Android SDK Platform 19                 | platforms/android-19/
  platforms;android-28                     | 6       | Android SDK Platform 28                 | platforms/android-28/
  system-images;android-29;google_apis;x86 | 10      | Google APIs Intel x86 Atom System Image | system-images/android-29/google_apis/x86/
  tools                                    | 26.1.1  | Android SDK Tools 26.1.1                | tools/
@waruqi
Copy link
Member

waruqi commented May 27, 2020

CMAKE 工程可以在 project 区显示 CPP 源代码的文件, xmake-gradle 没有显示.

这个暂时支持不了,不能跟cmake比,人家是google官方给直接内置支持的,肯定跟as整合的更好些,而xmake-gradle只是作为gradle插件的方式扩展支持,目前暂时没精力去支持这个,先这么凑合着用吧,如果你有兴趣可以提个pr帮忙支持上。

CMAKE 工程在调试状态断点工作正常, xmake-gradle 编译的工程断点工作不正常.

这个我可以看看,如果支持起来不麻烦,我会考虑支持上,如果太花时间,那就只能先这样了。。

@waruqi waruqi added enhancement New feature or request contribution welcome labels May 27, 2020
@imkerberos
Copy link
Author

显示这个倒是可以凑合, 如果调试不行就很麻烦了.
另外, 对于 gradle java 之类的东西一点都不懂, 估计很难能提 PR 了.

@waruqi
Copy link
Member

waruqi commented May 28, 2020

调试那个我可以先看看 不行也没办法,实在是忙不过来这么多东西,我通常也都是print调的 很少会去断点。

@waruqi
Copy link
Member

waruqi commented Jun 1, 2020

我试了下确实不行,稍微看了看,似乎android studio跟gradle/build-tools里面内置的cmake/ndkBuild两边是配合同步的

gradle tools内置的cmake模块会去生成一些配置文件到.cxx目录,尤其是下面这个文件:

./nativelib/.cxx/cmake/debug/arm64-v8a/android_gradle_build.json

ndkbuild也去写一些配置到.cxx目录提供给as加载。

当android studio点击调试的时候,会判断如果是cmake模式,就回去加载这个文件,读取一些so库相关的信息来支持断点调试。

而xmake模式下,xmake不会去写入.cxx,即使模拟写入这些文件,Android Studio判断当前不是cmake,也不会去从.cxx加载任何文件。

所以目前看,是android studio/gradle两端同时配合原生支持的cmake/ndkbuild来实现的断点调试。

而xmake是通过gradle插件的方式提供,只能影响gradle,没法扰Android Studio,除非再整个Android Studio的插件,去hack调试这块。

有没有更省事的支持方式,我暂时还不清楚,理论上只要花时间肯定能支持上,但是目前我可能没法花太多精力在这块上,如果你有兴趣,可以帮忙研究下。

@waruqi waruqi added the help wanted Extra attention is needed label Jun 1, 2020
@waruqi
Copy link
Member

waruqi commented Jun 1, 2020

我估计源码目录显示也跟.cxx里面配置相关,但是可能也需要as配合支持

@imkerberos
Copy link
Author

我最近也有些忙, 先 Open 着吧, 等忙完了我仔细看看.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution welcome enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants