Настройка AndroidManifest.xml в Gluon

Если я не создам файл src/android/AndroidManifest.xml в своем проекте Gluon, то команда mvn gluonfx:package создаст его для меня с некоторыми относительно разумными значениями по умолчанию. Однако мне нужно внести некоторые изменения в сгенерированный файл AndroidManifest.xml для моего приложения (например, указать поддержку нескольких разрешений экрана и добавить разрешение BILLING).

Если я скопирую сгенерированный AndroidManifest.xml в src/android/AndroidManifest.xml, как было предложено во время gluonfx:package, то Gluon больше не будет обновлять для меня поля кода версии и имени версии. Я также не уверен, есть ли какие-либо другие побочные эффекты при ручном редактировании файла AndroidManifest.xml.

Итак, мои вопросы:

  1. Как лучше всего управлять AndroidManifest.xml для проекта Gluon?
  2. Как люди справляются с обновлением кода версии и имени версии в редактируемом вручную файле в рамках конвейера CI/CD, когда я не хочу вручную редактировать AndroidManifest.xml для каждой сборки?
  3. Есть ли подводные камни в управлении AndroidManifest.xml вне команды gluonfx:package?

1 ответ

Как описано здесь , вы должны использовать <releaseConfiguration/>для определения значений, которые требуются или должны быть обновлены для каждого нового выпуска.

Для Android, помимо свойств подписи хранилища ключей, вы также можете определить:

  • код версии
  • название версии
  • ярлык приложения

как:

          <plugin>
                <groupId>com.gluonhq</groupId>
                <artifactId>gluonfx-maven-plugin</artifactId>
                <version>${gluonfx.maven.plugin.version}</version>
                <configuration>
                    <target>${gluonfx.target}</target>
                    <releaseConfiguration>
                        <versionCode>2</versionCode>
                        <versionName>3.0</versionName>
                        <appLabel>MyHelloFX</appLabel>
                    </releaseConfiguration>
...

Поэтому, если вам нужно добавить AndroidManifest в src/Android(тот, который был создан в target/gluonfx/aarch64-android/gensrc/android/AndroidManifest.xml), чтобы добавить/изменить его часть, он всегда будет обновляться для этих трех значений всякий раз, когда вы меняете их в файле pom.

Что касается CI/CD, взгляните на пример HelloGluon CI .

У него нет пользовательского манифеста, но он показывает, как бороться с ReleaseConfigurationи обновление значений выпуска в среде CI.

pom определяет некоторые свойства, которые используются блоком releaseConfiguration :

      <properties>
        ...
        <main.class>com.gluonhq.hello.HelloGluonApp</main.class>
        <app.identifier>${main.class}</app.identifier>
        <app.description>The HelloGluon app</app.description>
        <version.code/>
        <provided.keystore.path/>
    </properties>
...
            <plugin>
                <groupId>com.gluonhq</groupId>
                <artifactId>gluonfx-maven-plugin</artifactId>
                <version>${gluonfx.maven.plugin.version}</version>
                <configuration>
...
                   <releaseConfiguration>
                        <vendor>Gluon</vendor>
                        <description>${app.description}</description>
                        <packageType>${package.type}</packageType>
                        <!-- for macOS/iOS -->
                        <macAppStore>${mac.app.store}</macAppStore>
                        <bundleShortVersion>${bundle.short.version}</bundleShortVersion>
                        <bundleVersion>${bundle.version}</bundleVersion>
                        <!-- for Android -->
                        <versionCode>${version.code}</versionCode>
                        <providedKeyStorePath>${provided.keystore.path}</providedKeyStorePath>
...

Эти свойства в конечном итоге определяются для каждого профиля :

              <profile>
            <id>android</id>
            <properties>
                <gluonfx.target>android</gluonfx.target>
                <app.identifier>com.gluonhq.samples.hellogluon</app.identifier>
                <version.code>${env.GITHUB_RUN_NUMBER}</version.code>
...

При запуске задания Android используются необходимые переменные и секреты:

            - name: Gluon Build
        run: mvn -Pandroid gluonfx:build gluonfx:package
        env:
          GLUON_ANDROID_KEYSTOREPATH: ${{ steps.android_keystore_file.outputs.filePath }}
...
Другие вопросы по тегам