Указание местоположения AndroidManifest.xml в Java-проекте, скомпилированном с помощью sbt android-плагина

#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 , и вы получите ошибку, которую вы видите.