Подтвердить что ты не робот

Что такое <module>/release/output.json, созданный Android Studio

Недавно я заметил новый файл, сгенерированный в <module>/release/output.json для Android Studio 3 Canary 1, каждый раз, когда я запускаю BuildGenerate Signed APK..., у которого есть содержимое, которое выглядит следующим образом.

Может ли кто-нибудь подтвердить это поведение? Или это связано с некоторой локальной конфигурацией на моем ноутбуке?

И может ли кто-нибудь объяснить цель этого файла? Можно ли добавить в .gitignore?

[{
  "outputType": {
    "type": "APK"
  },
  "apkInfo": {
    "type": "MAIN",
    "splits": [],
    "versionCode": 32
  },
  "outputFile": {
    "path": "/path/to/the/generated/release/filename.apk"
  },
  "properties": {
    "packageId": "com.example.android",
    "split": ""
  }
}]
4b9b3361

Ответ 1

Вам не нужно беспокоиться об этом файле output.json. Android studio 3.0 отвечает за этот файл.

Позвольте мне объяснить вам это. Для более старой версии. Какая студия Android создала подписанный APK и поместила ее в папку "output". Даже если у вас было несколько параметров аромата для вашего apk, все они могли быть расположены в том же каталоге, который был выходной папкой. Из последней версии андроид-студии 3.0 (canary и stable) они организовали эту файловую структуру. Для каждого параметра вкуса каждый раз, когда вы подписали APK, у него будет отдельная папка с файлом output.json. Этот файл фактически не является описанием исходного APK. Если вы видите, что файл, который вы публикуете, описывает описываемый APK.

Ответ 2

ouput.json Файл является файлом метаданных для вашего сгенерированного APK. Этот файл создается по различным причинам. Я нашел некоторые из них, которые могут не перечислять все варианты использования, но вот список:

  • Сгенерировано, когда Generate Signed APK выполняется
  • Сгенерировано для AndroidManifest.xml файла в

    {module}/build/intermediates/manifest/androidTest/debug/ouput.json
    
  • не, сгенерированный для модульных тестов, но созданный только для AndroidTests (который зависит от рамки Android для выполнения)

  • Файл output.json, сгенерированный для AndroidManifest.xml в указанном выше местоположении, немного отличается от файла, сгенерированного для APK, как вы уже упоминали.
  • Как вы можете видеть, свойства, описанные в файле output.json, очень похожи на свойства, которые мы обычно указываем в нашем файле build.gradle, поэтому он должен использоваться и необходим для успешного выполнения процесса сборки (или это может быть созданный в результате успешной сборки и извлечения необходимых свойств из build.gradle).

После этого мы можем заключить, что он определенно зависит от структуры Android, которая будет создана, и она связана с описанием деталей/информации о файле APK или Манифест.

  • Я лично пытался обратиться к Google и найти правильный ответ на этот вопрос даже на веб-сайте Android Developers, но, похоже, что об этом файле ничего не документировано.

  • Я проверил несколько проектов на GitHub и проверил файл .gitignore для того же самого, я не смог найти ни одного подобного файла output.json в любом из проектов, размещенных на GitHub. Поэтому должно быть хорошей практикой, чтобы исключить их в ваших коммитах.

  • Короче говоря, этот файл представляет собой описательный файл, содержащий важные метаданные о проекте. Он должен быть там по какой-то причине. Я бы посоветовал вам не вмешиваться в это, так как мы не знаем, что это может привести.

Ответ 3

Я добавляю ../../ в начало outputFileName, а файл APK помещается в папку output

android{
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            output.outputFileName =   "../../output_name.apk"
        }
    }
}