私は SBT を使用し、Jan Berkel の Android プラグインを変更しています。ビルドしようとしている Android プロジェクトのパッケージ名に関する情報が必要です。
パッケージ名が にあることは知っていますがAndroidManifest.xml
、SBT を使用してそのパッケージ名を取得する方法があるかどうか疑問に思っていました。
私は SBT を使用し、Jan Berkel の Android プラグインを変更しています。ビルドしようとしている Android プロジェクトのパッケージ名に関する情報が必要です。
パッケージ名が にあることは知っていますが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("")