Java 如何在android Studio中调试android库模块?

Java 如何在android Studio中调试android库模块?,java,android,android-studio,gradle,android-library,Java,Android,Android Studio,Gradle,Android Library,我有一个Android Studio项目,其中包含一个库模块,作为另一个gradle项目添加到其中。我想调试库代码并设置断点 如果我想在emulator或real设备上运行应用程序时调试库模块,我应该使用什么梯度设置 更新1 这是settings.gradle文件: include ':app' include':my-library' 我正在使用此设置调试我的库: |- myApplication | |- settigs.gradle | |- build.gradle |

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

如果我想在emulator或real设备上运行应用程序时调试库模块,我应该使用什么梯度设置


更新1

这是settings.gradle文件:

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

我正在使用此设置调试我的库:

|- myApplication
|  |- settigs.gradle
|  |- build.gradle
|     ...
|- myLibrary
   |- build.gradle
      ...
添加到settings.gradle:

include ':myLibrary'
project(':myLibrary').projectDir = new File(settingsDir, '../myLibrary')
添加到build.gradle(应用程序的)


您的库将被简单地包括在内,您可以像在应用程序中一样调试和设置断点。

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

1-创建一个包含两个模块的项目,即应用程序库模块

2-
库模块
应用程序
添加
直接模块依赖项。这就是
应用程序的build.gradle:

compile project(':library-module')
3-删除
app
build.gradle中添加的任何自动签名配置

4-
应用程序和
库模块中删除这些行

minifyEnabled true
shrinkResources true

我将库模块调试和发布构建类型都设置为可调试

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

我很久以前就面临过这个问题。即使您将库设置为“调试”,某些gradle版本也会将库切换到“发布”模式。修复程序是将gradle更新为最新版本。如果它没有解决它。在库中,不要使用:

if BuildConfig.DEBUG
而是使用:

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

AnoGradel项目,意味着您已将库的源添加为编译项目(“:somelibrary”)?完全正确@AnuragSinghIn settings.gradle只需使用:include::somelibrary”,您可以像其他非库模块一样进行调试。不工作。我已包括settings.gradle并更新了问题。这是我编写的自定义库,源代码位于可用的库模块中,并已添加到项目中。如何提供指向我的库的路径?这是来自应用程序文件夹的相对路径不可能,我已在app module文件夹中添加了另一个setting.gradle文件,并删除了项目级别的setting.gradle,正如您所说,您可以使用外部库项目的绝对路径。使用这种技术,我能够在外部库中查看代码,设置断点,查看类和它的成员字段,并逐步完成代码。我无法看到成员函数中局部变量的值。除了将局部变量提升到类成员字段之外,是否有人能解决调试时如何查看局部变量值的问题?愚蠢的我,是的,您可以看到局部变量的值,但您需要确保您引用的是可调试库。我正在链接外部库的发布版本。您可能还必须确保没有将minifyEnabled设置为true。
boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );