我有一个Android Studio项目,其中包含一个库模块,它被添加为另一个gradle项目。我想要调试库代码并在其上设置断点。
如果我想在模拟器或真实设备上运行应用程序时调试库模块,我应该使用什么gradle设置?
更新1
这是settings.gradle文件:
include ':app'
include':my-library'
我有一个Android Studio项目,其中包含一个库模块,它被添加为另一个gradle项目。我想要调试库代码并在其上设置断点。
如果我想在模拟器或真实设备上运行应用程序时调试库模块,我应该使用什么gradle设置?
更新1
这是settings.gradle文件:
include ':app'
include':my-library'
经过几天的努力,我找到了正确的配置,能够调试库模块:
1- 创建一个项目,包括两个模块:应用程序和库模块
2- 从库模块向应用程序
添加直接模块依赖关系。这是应用程序
的build.gradle文件:
compile project(':library-module')
3- 移除在app
build.gradle中添加的任何自动签名配置。
4- 从app
和library-module
中删除这些行。
minifyEnabled true
shrinkResources true
我把库模块的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
}
}
我使用这个设置来调试我的库:
|- myApplication
| |- settigs.gradle
| |- build.gradle
| ...
|- myLibrary
|- build.gradle
...
添加到settings.gradle:
include ':myLibrary'
project(':myLibrary').projectDir = new File(settingsDir, '../myLibrary')
将以下内容添加到你的应用程序的 build.gradle 文件中
compile project(':myLibrary')
您的库会被简单地包含进来,您可以像在应用程序中一样进行调试和设置断点。
很久以前我遇到过这个问题。一些 gradle 版本会将您的库切换到发布模式,即使您将其设置为调试模式。解决方法要么是更新 gradle 到最新版本,如果它没有解决问题,在您的库中不要使用:
if BuildConfig.DEBUG
而不是:
boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );