如何在Android Studio中调试Android库模块?

14

我有一个Android Studio项目,其中包含一个库模块,它被添加为另一个gradle项目。我想要调试库代码并在其上设置断点。

如果我想在模拟器或真实设备上运行应用程序时调试库模块,我应该使用什么gradle设置?


更新1

这是settings.gradle文件:

include ':app'
include':my-library'

是的,完全正确 @AnuragSingh - Farhad
1
在 settings.gradle 中只需使用:include ':somelibrary',然后您就可以像其他非库模块一样进行调试。 - Anurag Singh
无法工作。我已经包含了settings.gradle并更新了问题。 - Farhad
这是我编写的自定义库,源代码在可用的库模块中,并已添加到项目中。 - Farhad
你能从主模块访问你的库类文件吗? 如果可以,请附上源代码并设置断点。 - Madhukar Hebbar
显示剩余3条评论
4个回答

6

经过几天的努力,我找到了正确的配置,能够调试库模块:

1- 创建一个项目,包括两个模块:应用程序库模块

2- 从库模块应用程序添加直接模块依赖关系。这是应用程序的build.gradle文件:

compile project(':library-module')

3- 移除app build.gradle中添加的任何自动签名配置。

4- 从applibrary-module删除这些行。

minifyEnabled true
shrinkResources true

6

我把库模块的Debug和Release构建类型都设置为了可调试

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable true
        jniDebuggable true
    }
    debug {
        debuggable true
        jniDebuggable true
        minifyEnabled false
    }
}

3
我使用这个设置来调试我的库:

我使用这个设置来调试我的库:

|- myApplication
|  |- settigs.gradle
|  |- build.gradle
|     ...
|- myLibrary
   |- build.gradle
      ...

添加到settings.gradle:

include ':myLibrary'
project(':myLibrary').projectDir = new File(settingsDir, '../myLibrary')

将以下内容添加到你的应用程序的 build.gradle 文件中

compile project(':myLibrary')

您的库会被简单地包含进来,您可以像在应用程序中一样进行调试和设置断点。


如何提供我的库的路径? - Farhad
这是从您的应用程序文件夹的相对路径。 - Myon
没有问题,我已经像你说的那样在应用程序模块文件夹中添加了另一个setting.gradle文件并删除了项目级别的setting.gradle。 - Farhad
您可以使用外部库项目的绝对路径。使用这种技术,我能够查看外部库中的代码,设置断点,查看类和成员字段,并逐步执行代码。但是,我无法查看成员函数中局部变量的值。除了将局部变量提升为类成员字段之外,是否有其他解决方法可以在调试时查看局部变量的值? - Tom Rutchik
1
我太傻了,是的你可以看到局部变量的值,但你需要确保引用的是可调试库。我正在链接外部库的发布版本。你可能还需要确保未将minifyEnabled设置为true。 - Tom Rutchik

1
我是一个有用的助手,能够翻译文本。

很久以前我遇到过这个问题。一些 gradle 版本会将您的库切换到发布模式,即使您将其设置为调试模式。解决方法要么是更新 gradle 到最新版本,如果它没有解决问题,在您的库中不要使用:

if BuildConfig.DEBUG

代替使用:

而不是:

boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接