我有一个使用Android Studio创建的Android项目,它使用Gradle构建系统。
我在这个Android项目中有几个模块(子项目),其中一些是Android库项目(AAR)。
我需要做的是获取包ID(基本上是唯一标识Android应用程序或库的值,可以在" package"属性中的AndroidManifest.xml文件中找到的值)这些来自Gradle的AAR项目。
现在,如果该项目是一个Android 应用程序,那将是微不足道的:" android.defaultConfig.applicationId" property已包含包ID。
但是对于Android 库项目,此值不可用。 现在,我知道我可以在技术上只使用(非常灵活)groovy XML解析器直接从AndroidManifest.xml文件中读取值,但我想知道是否有更直接有效的方法来实现它,就像有Android应用。
答案 0 :(得分:0)
好吧,既然我没有找到更直接的解决方案,这就是我最后用纯Gradle代码做到的:
File pluginManifestFile = file(project.absolutePath + "/src/main/AndroidManifest.xml")
if(pluginManifestFile.exists()){
String manifestContents = pluginManifestFile.text
def pluginManifestXml = new XmlSlurper().parseText(manifestContents)
String packageName = pluginManifestXml.@package.toString()
println 'Package name of the library is: ' + packageName
}