Что такое <module>/release/output.json, созданный Android Studio
Недавно я заметил новый файл, сгенерированный в <module>/release/output.json
для Android Studio 3 Canary 1, каждый раз, когда я запускаю Build
→ Generate 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": ""
}
}]
Ответы
Ответ 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"
}
}
}