Android 添加和调试外部项目

Android 添加和调试外部项目,android,gradle,module,Android,Gradle,Module,我正在开发一个android应用程序。我在gradle构建中添加了一个新项目,如下所示。。。。 在build.gradle中,我添加了 android { dependencies { implementation project(':code-scanner') } ... } include ":code-scanner" project(':code-scanner').projectDir = new File(settingsDir , "../Ext

我正在开发一个android应用程序。我在gradle构建中添加了一个新项目,如下所示。。。。 在build.gradle中,我添加了

android {
    dependencies {
        implementation project(':code-scanner')
    }
...
}
include ":code-scanner"
project(':code-scanner').projectDir = new File(settingsDir , "../External/code-scanner")
在settings.gradle中,我添加了

android {
    dependencies {
        implementation project(':code-scanner')
    }
...
}
include ":code-scanner"
project(':code-scanner').projectDir = new File(settingsDir , "../External/code-scanner")
该项目建设良好。但我希望能够浏览源代码,并将断点添加到代码扫描程序项目中,但它不会出现在Android Studio中

我已尝试导入模块,但随后的“选择文件夹”对话框中缺少该文件夹


如何将此代码添加到android studio,并设置断点和调试…

'code-scanner'项目,您必须将其作为库添加到当前项目中,对于您必须添加的code scanner build.gradle文件中的代码,如何将其添加到当前项目中 应用插件:“com.android.library” 请检查它是否丢失。

以防万一。基于依赖项应该在android块之外定义。也许Gradle Build可以计算出您的代码,但您的Android Studio无法找到库的源代码。
您使用的是哪个版本的Android Studio?

1-确保将
实施项目(“:代码扫描程序”)
放在应用程序级
build.gradle
文件中


2-
依赖项
块不应位于
android
块内:

不是这样的:

android {
    dependencies {
        implementation project(':code-scanner')
    }
}
android {
...
...
}

dependencies {
        implementation project(':code-scanner')
}
但就像这样:

android {
    dependencies {
        implementation project(':code-scanner')
    }
}
android {
...
...
}

dependencies {
        implementation project(':code-scanner')
}
我不知道您使用的是哪种IDE,但大多数IDE,如Android Studio或IntelliJ,如下图所示

或者,您可以在项目视图中查看文件夹结构,如下所示:

android {
    dependencies {
        implementation project(':code-scanner')
    }
}
android {
...
...
}

dependencies {
        implementation project(':code-scanner')
}


如果您没有意外删除它,它应该在那里。

实际的问题是项目的位置,它位于根项目目录之外:

include ":code-scanner"
// project(':code-scanner').projectDir = new File(settingsDir , "../External/code-scanner")
最好将其作为库模块添加到根项目中,这样代码就应该在IDE范围内

如果不想将项目移动到那里,可以将一个构建的工件放入
libs
目录中


添加一个符号链接也可能奏效(这是一个文件系统问题,而不是Gradle问题)。

我只有一个build.Gradle,在应用程序模块中没有build.Gradle。
依赖项可以在
android
中,Gradle不会抱怨,请继续尝试或阅读我对先前答案的评论。您是否有可能将Git同时用于
代码扫描程序和您的应用程序?如果它们位于两个独立的Git repo中,那么您可以使用Git子模块,并在应用程序中包含
代码扫描程序
,同时保持两个独立的提交历史记录。这样一来,你就有了一个单独带有
code scanner
的文件夹,你的应用程序中有一个
code scanner
的副本,你可以轻松地在其中放置断点。这个问题对我来说是个愚蠢的问题。基本上没有问题。没有答案将被标记为正确,因为没有问题来确认正确的解决方案。我猜您认为您可以在
代码扫描程序
库代码中以某种方式放置断点,即使项目没有源文件,对吗PNo我的项目显示项目,我可以浏览源文件,一切正常。我只是从一个不包含代码扫描程序代码的分支打开的。事实上,如果你尝试做同样的事情,它会起作用,我只是在考虑(理论上)之后做了,它确实起作用了,这是因为
android
block没有
依赖项的定义,所以它会在项目模型中被解析和调用,这就是
build.gradle
作为一个groovy脚本的好处依赖项块并不是完全错误的,它确实不常见,但它确实有效(查看我对前面答案的评论)@ahasbini我写了“应该”而不是“必须”。老实说,我从来没有检查过它是否真的有什么不同(这也可能是一个常见的误解)。尽管如此,在根项目的范围内移动该项目或其AAR工件应该使其代码可调试。