Unable to generate an Android apk from the codename one intializer

44 Views Asked by At

Basicly I am getting an app from https://start.codenameone.com/

If I do a Maven compile from command line it results in a BUILD SUCCESS and a jar file is produced.

I can run the app in Eclipse in the simulator that results in the hello world app.

When I try to build an android APK it results in an Eclipse build error.

In the build via Eclipse I first get this error

[DEBUG] Designer is up to date
[INFO] Running ANT build target android-source
[INFO] Generating android gradle Project to C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source...
[INFO] No Keystore found.  Generating one now
[INFO] Generated keystore with password 'password' at C:\work\programming\codenameone\exxxxdmobile\android\..\common\androidCerts\KeyChain.ks. alias=androidKey
[INFO] Starting android project builder...
[DEBUG] Request Args: 
[DEBUG] -----------------
[DEBUG] hyp.beamId=fc30a857-dc75-4a65-9a21-d7356b242e97
[DEBUG] java.version=8
[DEBUG] maven.codenameone-maven-plugin=7.0.86
[DEBUG] ios.newStorageLocation=true
[DEBUG] maven.codenameone-core.version=LATEST
[DEBUG] -------------------
[INFO] Executing with timeout -1
[INFO] Exception in thread "main" 
[INFO] java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)

[INFO]  at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
    ... 5 more
[INFO] 

[INFO] Process return code is 1
[DEBUG] Installed platforms: []
[DEBUG] Effective build tools version = 31
[DEBUG] Adding android permissions...
[DEBUG] PREFER_MANAGED_GRADLE flag is set.  Ignoring GRADLE_HOME and GRADLE_PATH environment variables.  Using managed gradle at C:\Users\peter\.codenameone\gradle instead
[INFO] Executing with timeout -1
[INFO] 

. .

and finally I get the android studio error

[DEBUG] -------
Gradle File end 

[DEBUG] Loading CSV mapping for android X from androidx-artifact-mapping.csv
[DEBUG] Replacing Android Support classes with AndroidX classes in C:\work\programming\codenameone\exxxxdmobile\android\target\codenameone\antProject\dist\android-build\exxxxdMobile\app
[INFO] Android project builder completed with result true
[INFO] Copying Gradle Project to C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source
[INFO] Trying to open project in Android studio
[WARNING] Failed to open project in Android studio
java.io.IOException: Cannot run program "start": CreateProcess error=2, The system cannot find the file specified
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
    at com.codename1.maven.CN1BuildMojo.openAndroidStudioProject(CN1BuildMojo.java:898)
    at com.codename1.maven.CN1BuildMojo.doAndroidLocalBuild(CN1BuildMojo.java:867)
    at com.codename1.maven.CN1BuildMojo.createAntProject(CN1BuildMojo.java:562)
    at com.codename1.maven.CN1BuildMojo.executeImpl(CN1BuildMojo.java:116)
    at com.codename1.maven.AbstractCN1Mojo.execute(AbstractCN1Mojo.java:195)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.base/java.lang.ProcessImpl.create(Native Method)
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:492)
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:153)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
    ... 28 more
[WARNING] Please open the project in Android studio manually.
[WARNING] The project is located at C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source
[INFO] ------------------------------------------------------------------------

I get roughly the same if I open the same project using Intelij and try to build an APK

[INFO] Running ANT build target android-source
[INFO] Generating android gradle Project to C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source...
[INFO] Android gradle project already exists.  Checking to see if it needs updating...
[INFO] Sources have not changed.  Skipping android gradle project generation
[INFO] Trying to open project in Android studio
[WARNING] Failed to open project in Android studio
java.io.IOException: Cannot run program "start": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start (ProcessBuilder.java:1128)
    at java.lang.ProcessBuilder.start (ProcessBuilder.java:1071)
    at com.codename1.maven.CN1BuildMojo.openAndroidStudioProject (CN1BuildMojo.java:898)
    at com.codename1.maven.CN1BuildMojo.doAndroidLocalBuild (CN1BuildMojo.java:719)
    at com.codename1.maven.CN1BuildMojo.createAntProject (CN1BuildMojo.java:562)
    at com.codename1.maven.CN1BuildMojo.executeImpl (CN1BuildMojo.java:116)
    at com.codename1.maven.AbstractCN1Mojo.execute (AbstractCN1Mojo.java:195)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create (Native Method)
    at java.lang.ProcessImpl.<init> (ProcessImpl.java:492)
    at java.lang.ProcessImpl.start (ProcessImpl.java:153)
    at java.lang.ProcessBuilder.start (ProcessBuilder.java:1107)
    at java.lang.ProcessBuilder.start (ProcessBuilder.java:1071)
    at com.codename1.maven.CN1BuildMojo.openAndroidStudioProject (CN1BuildMojo.java:898)
    at com.codename1.maven.CN1BuildMojo.doAndroidLocalBuild (CN1BuildMojo.java:719)
    at com.codename1.maven.CN1BuildMojo.createAntProject (CN1BuildMojo.java:562)
    at com.codename1.maven.CN1BuildMojo.executeImpl (CN1BuildMojo.java:116)
    at com.codename1.maven.AbstractCN1Mojo.execute (AbstractCN1Mojo.java:195)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
[WARNING] Please open the project in Android studio manually.
[WARNING] The project is located at C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source

Should this be "Running ANT build target android-source"?

When I open the app using android studio and try to do a build I am unable to as there are no menu options to do a build.

android build menu options

similar but does not help me. https://www.reddit.com/r/androiddev/comments/uqpefi/android_studio_build_menu_generate_apk_option/?rdt=34262

There should be a few more menu options here in the android build studio eg:

-> build bundle(s)

-> Generate signed bundle apk

Note, the android SDK is referenced by the environment variable.

ANDROID_HOME=C:\Android\sdk

The Android studio64.exe (c:\Android\Android Studio\bin) is in the system path

I am using windows 10 and the java version is 11.0.21

I hope all the above makes some sense to somebody. thank you for reading :)

Any ideas on what I am missing in making of the APK?

1

There are 1 best solutions below

0
Shai Almog On

The Android native build only works with Java 8 since it relies on JAXB which Java 9 removed from the JDK. Make sure JDK 8 is set in eclipse for the build. This should resolve the first error.

The second error you see is when we try to open the project for you in Android Studio. We can't find the windows start command which should do that, I'm not sure why that isn't working. It's not a fatal error since the project is generated to C:\work\programming\codenameone\exxxxdmobile\android\target\exxxxdmobile-android-1.0-SNAPSHOT-android-source and you can open it manually.

Should this be "Running ANT build target android-source"?

Yes. Maven code relies on some of our old Ant code and builds on top of that.

About the last error it's a bit hard to tell what's wrong with the project or the environment. I will need more details on your Android Studio setup and if there are any warnings when you open the project. I think Android Studio requires JDK 17 so make sure it has that.

Also it seems your start project uses an older version of Codename One (86) you can update to 133 as of now.