Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

viewcompiler
Скомпилировать файлы макета XML в код Java

Тип файла: команда
  Рус  
viewcompiler: Compile XML layout files into equivalent Java language code

  example usage:  viewcompiler layout.xml --package com.example.androidapp

  Flags from external/gflags/src/gflags.cc:

  • -flagfile (load flags from file) type: string default: ""

  • -fromenv (set flags from the environment [use 'export FLAGS_flag1=value']) type: string default: ""

  • -tryfromenv (set flags from the environment if present) type: string default: ""

  • -undefok (comma-separated list of flag names that it is okay to specify on the command line even if the program does not define a flag with that name. IMPORTANT: flags in this list that have arguments MUST use the flag=value format) type: string default: "" Flags from external/gflags/src/gflags_completions.cc:

  • -tab_completion_columns (Number of columns to use in output for tab completion) type: int32 default: 80

  • -tab_completion_word (If non-empty, HandleCommandLineCompletions() will hijack the process and attempt to do bash-style command line flag completion on this value.) type: string default: "" Flags from external/gflags/src/gflags_reporting.cc:

  • -help (show help on all flags [tip: all flags can have two dashes]) type: bool default: false currently: true

  • -helpfull (show help on all flags -- same as -help) type: bool default: false

  • -helpmatch (show help on modules whose name contains the specified substr) type: string default: ""

  • -helpon (show help on the modules named by this flag value) type: string default: ""

  • -helppackage (show help on all modules in the main package) type: bool default: false

  • -helpshort (show help on only the main module for this program) type: bool default: false

  • -helpxml (produce an xml version of help) type: bool default: false

  • -version (show version and build info and exit) type: bool default: false Flags from frameworks/base/startop/view_compiler/main.cc:

  • -apk (Compile layouts in an APK) type: bool default: false

  • -dex (Generate a DEX file instead of Java) type: bool default: false

  • -infd (Read input from the given file descriptor) type: int32 default: -1

  • -out (Where to write the generated class) type: string default: "stdout"

  • -package (The package name for the generated class (required)) type: string default: ""
  •    

    Комментарии
    Android Q содержит новый экспериментальный инструмент командной строки viewcompiler.

    Он расположен в /bin/viewcompiler.
    Загрузите файл макета xml (теги слияния и включения не поддерживаются) и будет создан файл CompiledView.java.
    Добавьте его в свой проект и вызовите setContentView(CompiledView.inflate(this))
    вместо традиционного setContentView(R.layout.my_layout).

    Количество вещей, которые он компилирует, кажется ограниченным,
    однако он по-прежнему извлекает атрибуты из исходного файла my_layout.xml, которые должны присутствовать.

    https://android.googlesource.com/platform/frameworks/base/+/master/startop/view_compiler/README.md

    Экспериментальный компилятор для файлов макетов.

    Он возьмет XML-файл макета и создаст файл CompiledLayout.java
    со специальной функцией расширения макета.

    Чтобы использовать его, предположим, что у вас есть макет в my_layout.xml,
    а ваше приложение находится в языковом пакете Java com.example.myapp.

    Выполните следующую команду:
    viewcompiler my_layout.xml --package com.example.myapp --out CompiledView.java

    Это создаст CompiledView.java, который затем можно будет скомпилировать
    в ваше приложение для Android. Затем, чтобы использовать его, в местах,
    где вы заполнили бы R.layouts.my_layout, вместо этого вызовите CompiledView.inflate.

    Подобная предварительная компиляция представлений обычно сокращает время,
    необходимое для их заполнения.

    Этот инструмент все еще находится на ранних стадиях и имеет ряд ограничений.

    В настоящее время одновременно может быть скомпилирован только один макет.
    узлы слияния и включения не поддерживаются.

    Компиляция представления — это ручной процесс, который требует внесения изменений в код приложения.
    Это работает только для приложений, которые не используют надувной модуль пользовательского макета.
    Другие ограничения еще предстоит обнаружить.