2012-07-27 143 views
0

我正在使用SBT并修改Jan Berkel的Android插件,并且我需要关于我正在尝试构建的Android项目的软件包名称的信息。使用SBT和Android插件从AndroidManifest.xml获取软件包名称

我知道包名称位于AndroidManifest.xml,但我想知道是否有任何方法使用SBT来获取该包名?

+0

你需要从SBT任务阅读或反之亦然? – 2012-07-27 10:27:29

+0

是的,如果有这样的方式。 – Lopina 2012-07-27 11:15:39

回答

1

不太确定,如果这是你所需要的,但无论如何。 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("") 
+0

Thx:D 这就是我需要的:D – Lopina 2012-07-27 12:18:28

相关问题