0
我正在使用SBT並修改Jan Berkel的Android插件,並且我需要關於我正在嘗試構建的Android項目的軟件包名稱的信息。使用SBT和Android插件從AndroidManifest.xml獲取軟件包名稱
我知道包名稱位於AndroidManifest.xml
,但我想知道是否有任何方法使用SBT來獲取該包名?
我正在使用SBT並修改Jan Berkel的Android插件,並且我需要關於我正在嘗試構建的Android項目的軟件包名稱的信息。使用SBT和Android插件從AndroidManifest.xml獲取軟件包名稱
我知道包名稱位於AndroidManifest.xml
,但我想知道是否有任何方法使用SBT來獲取該包名?
不太確定,如果這是你所需要的,但無論如何。 SBT任務都寫在Scala代碼,所以我們能夠找到該文件,然後讀取內容:
import java.io.File
import java.io.FileNotFoundException
def recursiveListFiles(f: File): Array[File] = {
val these = f.listFiles
if(these != null)
these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles)
else Array[File]()
}
val projectFiles = recursiveListFiles(new File("."))
val manifestFile = projectFiles
.filter(f => f.getCanonicalPath.endsWith("AndroidManifest.xml"))
.toList.headOption
.getOrElse(
throw new FileNotFoundException("Your project doesn't contain manifest")
)
val manifestXML = scala.xml.XML.loadFile(manifestFile)
val pkg = manifestXML.attribute("package").getOrElse("")
Thx:D 這就是我需要的:D – Lopina 2012-07-27 12:18:28
你需要從SBT任務閱讀或反之亦然? – 2012-07-27 10:27:29
是的,如果有這樣的方式。 – Lopina 2012-07-27 11:15:39