#android #scala #build #android-manifest #sbt
#Android #scala #сборка #android-манифест #sbt
Вопрос:
Я пытаюсь использовать sbt для компиляции Android-проекта, созданного на Java, который я только что унаследовал и хочу улучшить с помощью Scala.
Проект разделен на несколько модулей. Я создал проект sbt с « g8 jberkel/android-app -b sbt-0_11
«, скопировал все модули в src / оставив меня с:
my-android-project ls -l src
total 96
drwxr-xr-x 14 tiagoboldt staff 476 Oct 18 16:09 AndroidApplication
drwxr-xr-x 8 tiagoboldt staff 272 Oct 18 16:09 CRCCalculatioNTool
drwxr-xr-x 10 tiagoboldt staff 340 Oct 18 16:09 CaretakerIntegration
drwxr-xr-x 13 tiagoboldt staff 442 Oct 18 16:09 ConsoleSensorNetwork
... and so on
Эти модули имеют зависимости между ними, AndroidApplication — это основное приложение, которое я хочу создать. Я пытался отредактировать свой project / build.scala, который я изменил по сравнению с оригиналом, чтобы включить следующее :
object AndroidBuild extends Build {
lazy val AndroidApplication = Project (
"AndroidApplication",
file("."),
settings = General.fullAndroidSettings PlainJavaProject.settings
)
}
При попытке сборки я всегда получаю:
java.io.FileNotFoundException: (rest_of_dir)/my-android-project/src/main/AndroidManifest.xml (No such file or directory)
Я не могу понять, как настроить его, чтобы он искал этот файл в src/AndroidApplication/src/AndroidManifest.xml , вместо стандартного. Уже пытался поиграть со значением файла и безрезультатно :
Документация как sbt, так и его плагина для Android не помогла. Любая помощь будет оценена.
Ответ №1:
Наряду с libgdx, я просто использовал это:
lazy val android =
Settings.common
AndroidProject.androidSettings
TypedResources.settings
proguardSettings
AndroidManifestGenerator.settings
AndroidMarketPublish.settings
Seq (
platformName in Android := "android-7",
keyalias in Android := "change-me",
mainAssetsPath in Android := file("common/src/main/resources"),
manifestPath in Android := Seq(file("android/src/main/AndroidManifest.xml"))
)
Ответ №2:
Надеюсь, это поможет:
object AndroidBuild extends Build {
val AndroidApplication = Project (
"AndroidApplication",
file("AndroidApplication"),
settings = General.fullAndroidSettings PlainJavaProject.settings
) dependsOn xxxxx
lazy val CRCCalculatioNTool = Project (
"CRCCalculatioNTool",
file("CRCCalculatioNTool"),
settings = General.fullAndroidSettings PlainJavaProject.settings
) dependsOn yyy
lazy val CaretakerIntegration = Project (
"CaretakerIntegration",
file("CaretakerIntegration"),
settings = General.fullAndroidSettings PlainJavaProject.settings
) dependsOn zzz
}
Ответ №3:
если вы пытаетесь настроить плагин для изменения путей по умолчанию, я думаю, вам также необходимо настроить параметр manifestTemplatePath
:
settings = General.fullAndroidSettings inConfig(Android)(Seq(
manifestPath <<= (baseDirectory, manifestName in Android) (_ / _),
manifestTemplatePath <<= (manifestPath in Android) (mp => mp),
mainAssetsPath <<= baseDirectory (_ / "assets"),
mainResPath <<= baseDirectory (_ / "res")
))
Удалите manifestTemplatePath
, и вы получите ошибку, которую вы видите.