Reputation: 53
I am using HelloFX project from gluon-samples repository. I've used a keystore (which was generated for a different project) and tried to build APK of this app.
COMPILE TASK and LINK TASK completed successfully. But PACKAGE TASK failed with following log message.
Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] Caused by: com.android.builder.errors.EvalIssueException: Failed to parse XML in /home/manikandan/eclipse-workspace/HelloFX - Build signed APK/target/gluonfx/aarch64-android/gvm/android_project/app/src/main/AndroidManifest.xml
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.builder.errors.IssueReporter.reportError(IssueReporter.kt:106)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.builder.errors.IssueReporter.reportError$default(IssueReporter.kt:102)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.builder.errors.IssueReporter.reportError(IssueReporter.kt)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.build.gradle.internal.ide.ModelBuilder.createVariant(ModelBuilder.java:616)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.build.gradle.internal.ide.ModelBuilder.buildAndroidProject(ModelBuilder.java:361)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.build.gradle.internal.ide.ModelBuilder.buildAll(ModelBuilder.java:195)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at com.android.build.gradle.internal.AppModelBuilder.buildAll(AppModelBuilder.kt:63)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:104)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:134)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:100)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
[Mon Jan 03 19:06:32 IST 2022][FINE] [SUB] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
Full log can be found here.
Following is the pom.xml file.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hellofx</groupId>
<artifactId>hellofx</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HelloFX</name>
<properties>
<main.class>hellofx.HelloFX</main.class>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>11</maven.compiler.release>
<javafx.version>15.0.1</javafx.version>
<javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
<gluonfx.version>1.0.10</gluonfx.version>
<charm.version>6.0.6</charm.version>
<glisten.afterburner.version>2.0.5</glisten.afterburner.version>
<attach.version>4.0.10</attach.version>
<connect.version>2.0.1</connect.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- Added jackson dependency here -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<!-- Added JavaTime data type -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.12.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>${gluonfx.version}</version>
<configuration>
<target>${gluonfx.target}</target>
<mainClass>${main.class}</mainClass>
<reflectionList>
<list>com.fasterxml.jackson.core.JsonFactory</list>
</reflectionList>
<nativeImageArgs>
<nativeImageArg>--allow-incomplete-classpath</nativeImageArg>
</nativeImageArgs>
<releaseConfiguration>
<providedKeyStorePath>${keystore.path}</providedKeyStorePath>
<providedKeyStorePassword>${keystore.password}</providedKeyStorePassword>
<providedKeyAlias>${key.alias}</providedKeyAlias>
<providedKeyAliasPassword>${key.password}</providedKeyAliasPassword>
</releaseConfiguration>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>desktop</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<client.target>host</client.target>
</properties>
</profile>
<profile>
<id>ios</id>
<properties>
<gluonfx.target>ios</gluonfx.target>
</properties>
</profile>
<profile>
<id>android</id>
<properties>
<gluonfx.target>android</gluonfx.target>
<keystore.path>/keystore/path/keystore.jks</keystore.path>
<keystore.password>someKeystorePath</keystore.password>
<key.alias>someKeyAlias</key.alias>
<key.password>someKeyPath</key.password>
</properties>
</profile>
</profiles>
</project>
Following is the AndroidManifest file:-
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hellofx" android:versionCode="3" android:versionName="1.0">
<supports-screens android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />]
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
<application android:label="Forest Parent" android:icon="@mipmap/ic_launcher">
<!-- Below one is for solving apache commons logger issue -->
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<activity android:name='com.gluonhq.helloandroid.MainActivity'
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTop">
<intent-filter>
<category android:name='android.intent.category.LAUNCHER'/>
<action android:name='android.intent.action.MAIN'/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity android:name='com.gluonhq.impl.attach.android.PermissionRequestActivity'/>
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.fivedtech.parent.app.forestse" />
</intent-filter>
</receiver>
<service android:name="com.gluonhq.helloandroid.PushFcmMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.gluonhq.helloandroid.PushInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar"/>
</service>
<service android:name="com.gluonhq.helloandroid.PushNotificationJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true" />
<activity android:name="com.gluonhq.helloandroid.PushNotificationActivity"
android:parentActivityName="com.gluonhq.helloandroid.MainActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value="com.gluonhq.helloandroid.MainActivity"/>
</activity>
</application>
</manifest>
Why does this issue occur and how to fix this?
And another doubt, does current version of gluonfx plugin use files under /target folder or the files under actual project while building APK?
Upvotes: 0
Views: 161