Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.

Overview

Codename One - Cross Platform Native Apps with Java or Kotlin

Codename One is a mobile first cross platform environment for Java and Kotlin developers. It can compile Java bytecode to native OS executables (iOS, Android, UWP etc.). It's a complete mobile platform featuring virtual machines, simulator, design tools (visual theme/builder/css), IDE integrations, ports to multiple OS's and much more. It provides full access to the underlying native OS code (e.g. Objective-C, C#, Dalvik/ART) through a portable abstraction which enables 100% code reuse.

GitHub repo size GitHub top language GitHub last commit

Codename One is the only platform that...

  • Has Write Once Run Anywhere support with no special hardware requirements and 100% code reuse
  • Compiles Java or Kotlin into native code for iOS, UWP (Universal Windows Platform), Android and even JavaScript (with seamless PWA and Thread support)
  • Is Open Source and Free with an enterprise grade commercial offering
  • Is Easy to use with 100% portable Drag and Drop GUI builder
  • Has Full access to underlying native OS capabilities using the native OS programming language (e.g. Objective-C) without compromising portability
  • Has full control over every pixel on the screen! Just override paint and draw or use a glass pane to draw anywhere...
  • Lets you use native widgets (views) and mix them with Codename One components within the same hierarchy (heavyweight/lightweight mixing)
  • Supports seamless Continuous Integration out of the box

Here are some concrete benefits you can get with Codename One:

Codename One's Simulator Runs Instantly

Unlike emulators which you can see in Android etc. Codename One uses a simulator. This means it starts up fast even when debugging. You can enjoy IDE features such as live code reload to modify code in runtime etc.

This means faster debugging cycle and faster development process!

Large Selection of Device Skins

Choose from a large selection of device “skins” to see how your app will look on particular devices. The skin takes into account factors such as resolution and device density to provide a pixel-perfectre presentation of your app, as it would appear on the real device. Switching between device skins is nearly instant.

You can edit and contribute skins in their own open source project here.

Interactive Console

Interact with your application’s APIs at runtime using the interactive Groovy Console. Inspect the application state or experiment with changes all while the app is running.

This lets you investigate issues and experiment without even the small overhead of recompiling.

Live Reload

The Simulator let’s you take advantage of the "Reload Changed Classes" feature in IntelliJ (named "Apply Code Changes" in NetBeans) so that changes you make in your Java source code will be applied immediately to your already-running app in the simulator.

Note that this is often superior to the interactive console but there are limitations such as the ability to add methods/change structure of the code. These limits don't apply to the interactive console!

CSS Live Update

When you make changes to your app’s CSS stylesheet, the changes are reflected instantly in the simulator. This includes changing your theme, images, fonts etc. All changes are instantly refreshed on save, no need to reload/refresh or anything of the sort!

This makes the process of styling an application remarkably easy and fast.

Component Inspector

Use the powerful component inspector to browse the UI component hierarchy in your app. This tool makes it easy to find out where that extra padding is coming from or why something just isn’t lining up the way you’d like. You can also change the UIID (selector) of a component in runtime to see how it impacts the UI and see which component in the hierarchy maps to an element in the component tree (DOM equivalent).

Network Monitor

See all of the network connections that your app makes using the Network Monitor. This valuable tool comes in handy when you’re trying to figure out why an HTTP request isn’t working for you. Check the headers and bodies of both the request and the response. You can even throttle the network to simulate a slow network connection.

Record UI Unit Tests

Use the Test Recorder tool to record unit tests for your app. Once you start recording, it will save your interactions into a unit test that can be played back later to verify that behaviour remains correct.

You can then connect the recorded tests to your CI process including automated on device testing.

How Does it Work?

Codename One is a mature open source project with roots dating back to Sun Microsystems (2006) where one of its core underlying components was developed and open sourced. You can learn about its history and how it works in this video.

Codename One apps perform like native apps, because they are real native apps.

They are statically compiled into native binaries using the target platform’s official build tools.

On platforms that do not support Java natively, such as iOS, the app’s JVM bytecode is first transpiled into a form that the native build tools will accept. On iOS, the app’s JVM bytecode is transformed into C source code, in a real xcode project. On Android, since Java is supported natively, no such transformation is necessary. The app jar is bundled directly into an Android studio gradle project, which can be built directly using the Android SDK build tools.

The figure below shows the build process for each supported platform

You can click the image to enlarge or view a PDF version here.

Quick Start

TIP: We are currently transitioning to Maven, and have created a new, simpler method for creating projects. Check out https://start.codenameone.com to get started now.

There is a lot to know about Codename One, this 3 minute video gives a very concise high level view. Notice there are similar videos for Eclipse, IntelliJ/IDEA and Netbeans here:

Hello Codename One

Extensible

Codename One can be extended easily using 3rd party libraries that can include native OS code. There is an extensive list of these libraries (cn1libs) here. The libraries list is generated automatically based on this github project.

You can learn more about Codename One and its capabilities at the main site and you can see an extensive list of documentation and tutorials here.

Important Links & Docs

You can get started with the binary and the birds eye view in the download section. Additional important links are:

Setup & Getting Started With The Code

NOTE: We are in the process of migrating from Ant to Maven, which simplifies the process for building from source. This section still refers to the process for for building with Ant. See Maven Quick Start for the new Maven build instructions.

Setup is covered in depth in this article and video. Notice that this covers debugging the simulator and working with the code that requires the Codename One plugin for NetBeans. You can install that by installing NetBeans and typing "Codename One" in the plugin search section see the getting started tutorial.

Using The Codename One Source Code

While Codename One itself works with all major IDE's the code in this repository was designed to work with NetBeans.

Please notice that while we fully support IntelliJ/IDEA (both CE and Ultimate), we don't support Android Studio which diverted too much from the mainline IDE.

Quick Start

Getting and Building Sources

$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant

Running Unit Tests

$ ant test-javase

Running Samples

The Samples directory contains a growing set of sample applications. These samples aren't meant to be demos, but rather samples of how to use APIs.

You can launch the sample runner app from the command-line using:

$ ant samples

Quick Start with Maven

git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install

This will build and install Codename One in your local Maven repository.

To build the archetype projects from source, you should check out the cn1-maven-archetypes repository and build it also:

git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install

To get started building projects using Maven, see https://start.codenameone.com.

ParparVM

Codename One's iOS VM is quite unique and is open source as well. You can read more about it in its dedicated folder in this repository.

ParparVM is a uniquely conservative VM that translates Java bytecode to C code. Thus providing native performance and access while still providing a safety net. This approach is unique to Codename One and is essential for future compatibility!

Apple has a tendency to change things abruptly e.g. 64bit support, bitcode etc. Since ParparVM generates a standard Xcode project there were no code changes required for any of these tectonic shifts. It's as if you handcoded the project yourself!

You can even open the resulting project in xcode and debug it or profile it directly on the iOS device. This provides a lot of useful information such as readable callstacks and valuable/actionable performance tracking...

Traditional compilers fall flat in these cases.

Modified iKVM

Codename One maintains a fork of iKVM which is a JVM for CLR. This modified port allows us to run the Universal Windows Platform implementation of Codename One natively on Windows 10 devices.

Getting Help & FAQ

We provide support over at StackOverflow when you tag using codenameone, you can ask anything there and we try to be pretty responsive. The StackOverflow link also serves as an excellent community driven FAQ since it literally maps user questions to answers.

Codename One has a discussion group where you can post questions. However, due to the nature of that group we try to limit discussions over the source. The discussion forum is intended for simpler usage and more complex source code hacks/native compilation might create noise there.

Comments
  • [iOS] Memory leak in updating TextArea

    [iOS] Memory leak in updating TextArea

    There is memory leak in iOS when TextArea(maybe Label as well) setText() is called. The following codes can reproduce the issue after pressing the button for hundred times within a short period. The memory goes up after pressing the button and the memory will not be released. Please note that you have to press the button quickly for multiple times.

    protected void onMain_TestLabel2Action(Component c, ActionEvent event) { int iCounter = 0; while (iCounter < 100) { TextArea testTxtArea = findRandomTextArea(c); testTxtArea.setText("Random100_" + new Date().getTime()); testTxtArea.getParent().revalidate(); iCounter++; } }

    opened by jackyy415 101
  • push device id after registering for push is coming as null

    push device id after registering for push is coming as null

    Original issue 789 created by codenameone on 2013-07-20T17:13:49.000Z:

    Please clearly state whether the issue relates to a device/the simulator or the tools. This happens in real device. If related to a device be sure to specify exactly which device with as much details as possible.

    On iPhone 4, latest OS version and also on Android phones.

    What steps will reproduce the problem?

    1. Have a device register for push using following code: Hashtable meta = new Hashtable(1); meta.put(com.codename1.push.Push.GOOGLE_PUSH_KEY, "359276012902"); Display.getInstance().registerPush(meta, false);
    2. The PushCallback registeredForPush(String deviceId) is called by cn1 framework.
    3. The deviceId received in the registeredForPush() for iPhone 4 device is given below:

    b018aa2534e7abf5da59f9c673e255eb107cf3f771022db31d3a215c8e8f4c8b

    1. after this when you try to get the cn1 specific device id, it is coming as null from the following call: com.codename1.push.Push.getDeviceKey();

    What is the expected output? What do you see instead?

    the cn1 specific device id which is a long value should be available so that push to specific device can be made.

    What version of the product are you using? On what operating system?

    Latest cn1 version on build server and latest plugin.

    Please provide any additional information below.

    Type-Defect Priority-Medium 
    opened by codenameone 89
  • Added native android tiling support

    Added native android tiling support

    Border now uses the implementation tiling support Default drawTile now deals with its own limits, no need to clip rect outside

    PS: didn't have a use case for image border with an arrow here, please, double check this before merging. Also, please double check this with iOS just to be sure, couldn't test it here. I've also noticed it fixed the sidemenu covering the shadow.

    PS2: android native tiling is fast :+1:

    opened by FabricioCabeca 59
  • Sample program to crash ios.newVM

    Sample program to crash ios.newVM

    Original issue 1304 created by codenameone on 2015-01-23T22:53:30.000Z:

    The first time you run one of my apps it has to obtain data. this is normally done over the network but can also be done with a file copied to the device. Either way if the dataset is a small one, my apps work. However larger datasets consistently crash the new VM.

    In trying to narrow down the problem and create a test case I have come to the conclusion that it is not a particular operation that is causing the crash but the load.

    The sample program attached will read lines from a file and run them through your CSVParser. It crashes before completion. In order to run this app you will need to set the property ios.fileSharingEnabled to true and you will need to copy the sample data file to the app on your device using iTunes.

    This app runs fine on the old VM, it also runs a lot faster on the old VM, it takes about 18 seconds to complete. On the new VM it takes 38 seconds to crash without completing.

    This initial data load is key to my apps and so I can't really test my apps at all on the new VM because I can't get any data to them.

    I have attached the sample program, the data file you will need to run the program and the crash log I received from my iPod.

    Type-Defect Priority-High 
    opened by codenameone 55
  • RIM build with push support fails

    RIM build with push support fails

    Original issue 829 created by codenameone on 2013-08-08T04:48:34.000Z:

    Please clearly state whether the issue relates to a device/the simulator or the tools. Build server. If related to a device be sure to specify exactly which device with as much details as possible. Blackberry build

    What steps will reproduce the problem?

    1. Set the property of rim.pushBpsURL==https://cp12173.pushapi.eval.blackberry.com
    2. And send RIM build 3.

    What is the expected output? What do you see instead?

    The build should be successful. Instead the build fails with error as in the attached file.

    What version of the product are you using? On what operating system?

    Latest version. On Mac. Please provide any additional information below.

    Type-Defect Priority-Medium 
    opened by codenameone 51
  • J2ME build failed to run on Sony Ericsson (eg.W850i,K610i)

    J2ME build failed to run on Sony Ericsson (eg.W850i,K610i)

    Original issue 784 created by codenameone on 2013-07-16T04:32:41.000Z:

    My J2ME build works on Nokia devices but failed on SE devices as it occured a message "Application error" and unable to launch the app. It used be fine on SE devices but now it doesn't work though on new created sample project.

    What steps will reproduce the problem? 1.compile and send J2me build to server. 2.download the build and install to SE device 3.error message "application error" occurred after launching the app

    What is the expected output? What do you see instead? The app should be run successfully as it does on emulator/Nokia devices. Unfortunately, it fails and shows the error message when attempting to run the app.

    What version of the product are you using? On what operating system?

    Please provide any additional information below.

    Type-Defect Priority-Medium 
    opened by codenameone 50
  • iOS crash at startup

    iOS crash at startup

    Original issue 714 created by codenameone on 2013-05-18T23:56:00.000Z:

    I have just released the second version of my iOS app. Some maintenance and a couple of new features, nothing that major.

    I have one user that ran the first release without a problem. After installing second release it displays the splash screen and crashes. My app never starts. Just the one user.

    She has tried deleting the old app, reinstalling, rebooting the device. Nothing helps.

    She is using an original iPad running iOS 5.1.1. She sent me the crash log included below. Does this show anything relevant.

    I don't know how to debug this.

    Thanks

    Had to attach the log as a file, too long

    Type-Defect Priority-Medium 
    opened by codenameone 48
  • Location can't be work now using built hint codename1.ios.xcode_version=9.2

    Location can't be work now using built hint codename1.ios.xcode_version=9.2

    I have check your last commit changes and I could check that you commented the lines in the file CodenameOne_GLViewController.h

    //#define INCLUDE_CONTACTS_USAGE //#define INCLUDE_CALENDARS_USAGE //#define INCLUDE_CAMERA_USAGE //#define INCLUDE_FACEID_USAGE //#define INCLUDE_LOCATION_USAGE //#define INCLUDE_MICROPHONE_USAGE //#define INCLUDE_MOTION_USAGE //#define INCLUDE_PHOTOLIBRARYADD_USAGE //#define INCLUDE_PHOTOLIBRARY_USAGE //#define INCLUDE_REMINDERS_USAGE //#define INCLUDE_SIRI_USAGE //#define INCLUDE_SPEECHRECOGNITION_USAGE //#define INCLUDE_NFCREADER_USAGE

    Then I check that in the file IOSNative.m you need to instance the Location natively.

    But if you commented how the location it will work properly?

    opened by DurankGts 37
  • [BUG?] Blank white screen after waking up app from background using a link

    [BUG?] Blank white screen after waking up app from background using a link

    I tried to read more times my code and to do some trials, but I didn't find any error in my code.

    As I described here: https://stackoverflow.com/questions/52807700/intercept-an-url-with-a-given-domain-in-the-android-ios-and-javascript-ports-of

    the problem is that my code works fine if the app is killed and then opened from a link, but it doesn't work if the app is opened from the icon, then it is putted in background and then it is opened again from the link: in this case, the app will show a blank white screen.

    Tested on Android 7 (with this phone: https://www.gsmarena.com/huawei_honor_6x-8388.php)

    Build hint: android.xintent_filter=<intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:host="example.com" android:scheme="https" /></intent-filter>

    Code:

    public class MyApplication {
    
        private Form current;
        private Resources theme;
        private String arg;
    
        public void init(Object context) {
            // use two network threads instead of one
            updateNetworkThreadCount(2);
    
            theme = UIManager.initFirstTheme("/theme");
    
            // Enable Toolbar on all Forms by default
            Toolbar.setGlobalToolbar(true);
    
            // Pro only feature
            Log.bindCrashProtection(true);
    
            addNetworkErrorListener(err -> {
                // prevent the event from propagating
                err.consume();
                if (err.getError() != null) {
                    Log.e(err.getError());
                }
                Log.sendLogAsync();
                Dialog.show("Connection Error", "There was a networking error in the connection to " + err.getConnectionRequest().getUrl(), "OK", null);
            });
        }
    
        public void start() {
            if (current != null) {
                current.show();
                return;
            }
            Form hi = new Form("Hi World", BoxLayout.y());
    
            final SpanLabel message;
            arg = Display.getInstance().getProperty("AppArg", null);
            if (arg == null) {
                message = new SpanLabel("App launched from icon");
            } else {
                message = new SpanLabel("App launched from the url: " + arg);
            }
            hi.add(message);
            hi.show();
    
            hi.addShowListener(l -> {
                arg = Display.getInstance().getProperty("AppArg", null);
                if (arg == null) {
                    message.setText("App launched from icon");
                } else {
                    message.setText("App launched from the url: " + arg);
                }
                hi.revalidate();
            });
    
        }
    
        public void stop() {
            current = getCurrentForm();
    
            if (current instanceof Dialog) {
                ((Dialog) current).dispose();
                current = getCurrentForm();
    
            }
        }
    
        public void destroy() {
        }
    
    }
    
    opened by jsfan3 34
  • shouldLoadURL event support and executeAndReturnString()

    shouldLoadURL event support and executeAndReturnString()

    Original issue 459 created by codenameone on 2012-12-31T21:45:51.000Z:

    This is related to issue # 453 (http://code.google.com/p/codenameone/issues/detail?id=453). I have implemented two mechanisms necessary to support a robust Javascript interface in a minimal way. These are:

    1. A shouldLoadURL event that is called whenever the browser is about to try to load a URL. It gives the developer the ability to cancel the page load, and/or handle the URL processing itself. With respect to Javascript, this allows us to design our own custom URLs that Javascript calls via window.location to send messages back into Java.
    2. An executeAndReturnString() method on the BrowserComponent class that executes a javascript string and returns the string result of the processing. This method is synchronous so it makes it much more convenient to query the javascript environment and DOM from Java.

    I have added support for Android, iOS, and JavaSE, and have attached the patches for these ports all separately.

    I have also created a Test application to test all of this functionality (and will hopefully grow to include tests for much more CodenameOne functionality). I have added this project to the incubator: http://code.google.com/p/codenameone-incubator/source/browse/#svn%2Ftrunk%2Fshannah%2FCodenameOneTests

    However I need to clean it up to make it easier for others to set it up and use it. This project includes a separate package, ca.weblite.codename1.js that is a full two-way Javascript bridge built on top of this functionality.

    http://code.google.com/p/codenameone-incubator/source/browse/#svn%2Ftrunk%2Fshannah%2FCodenameOneTests%2Fsrc%2Fca%2Fweblite%2Fcodename1%2Fjs

    I will be factoring this out into its own subproject and will post usage examples and more tests later today.

    I have tested these changes on: iPhone 4S Android (Nexus 7) Android (HTC Magic running Android 2.1) JavaSE (the simulator)

    I don't have a Blackberry test environment up and running yet, or I would have also provided a patch for it also.

    Priority-Medium Type-Enhancement 
    opened by codenameone 29
  • [BUG] callback of Capture.capturePhoto(callback) on Android is not invoked the first time

    [BUG] callback of Capture.capturePhoto(callback) on Android is not invoked the first time

    The following bug can be reproduced on Android 7 only after the first capturing of a photo after that the app is just installed. To reproduce the bug again, it's necessary to remove the app and install it again (if you reinstall the app without removing it, or if you kill and restart the app, the bug cannot be reproduced). After the first taken photo, the bug disappears (until you will remove and install the app again).

    This bug cannot be reproduced in the Simulator.

    I report code and logs. However the same issue can be reproduced with the code published here (on Android, the first taken image after the app install is not placed in the Label): https://www.codenameone.com/blog/round-at-codemotion.html

    Code:

            // Avatar default picture
            int avatarSizeMM = 10; // the avatar size in mm
            Style s = new Style();
            s.setFgColor(ColorUtil.LTGRAY);
            Label avatar = new Label(createAvatar(FontImage.createMaterial(FontImage.MATERIAL_PERSON, s, avatarSizeMM)), "Avatar");
    
            // Callback after taking a photo (from photocamera or file chooser)
            ActionListener callback = e -> {
                Log.p("ActionListener callback invoked");
                if (e != null && e.getSource() != null) {
                    String filePath = (String) e.getSource();
                    Image capturedImage = null;
                    Log.p("Capured image filePath: " + filePath);
                    if (filePath != null) {
                        try {
                            FileSystemStorage fs = FileSystemStorage.getInstance();
                            InputStream fis = fs.openInputStream(filePath);
                            capturedImage = Image.createImage(fis);
                        } catch (IOException ex) {
                            Log.p("IOException in loading the image: " + filePath);
                            Log.e(ex);
                        }
                        if (capturedImage != null) {
                            createAvatar(capturedImage, avatarSizeMM, avatar);
                        }
                    } else {
                        Log.p("Error: \"filePath = (String) e.getSource()\" is null");
                    }
                }
                Log.p("The image capture was canceled by the user (e.getSource() is null)");
            };
    
            // Button to take a photo from photocamera
            Button camera = new Button("Fotocamera", FontImage.createMaterial(FontImage.MATERIAL_CAMERA, "Avatar", 5));
            camera.addActionListener((e) -> {
                Log.p("The native photocamera is going to be opened");
                Capture.capturePhoto(callback);
            });
    
    

    After the first taken photo, the callback is not invoked. The log is only: [EDT] 0:0:39,881 - The native photocamera is going to be opened

    After the second taken photo, the log is (note that the last line of log doesn't make sense, I didn't cancelled the image capture) :

    [EDT] 0:0:39,881 - The native photocamera is going to be opened
    [EDT] 0:7:54,190 - The native photocamera is going to be opened
    [EDT] 0:7:59,700 - ActionListener callback invoked
    [EDT] 0:7:59,700 - Capured image filePath: /storage/emulated/0/Pictures/Registrazione/IMG_20180509_204014.jpg
    [EDT] 0:8:0,45 - The image capture was cancelled by the user (e.getSource() is null)
    

    After the third taken photo, the log is:

    [EDT] 0:0:39,881 - The native photocamera is going to be opened
    [EDT] 0:7:54,190 - The native photocamera is going to be opened
    [EDT] 0:7:59,700 - ActionListener callback invoked
    [EDT] 0:7:59,700 - Capured image filePath: /storage/emulated/0/Pictures/Registrazione/IMG_20180509_204014.jpg
    [EDT] 0:8:0,45 - The image capture was canceled by the user (e.getSource() is null)
    [EDT] 0:15:2,647 - The native photocamera is going to be opened
    [EDT] 0:15:13,567 - ActionListener callback invoked
    [EDT] 0:15:13,568 - Capured image filePath: /storage/emulated/0/Pictures/Registrazione/IMG_20180509_204723.jpg
    [EDT] 0:15:13,840 - The image capture was canceled by the user (e.getSource() is null)
    
    Priority-High 
    opened by jsfan3 28
  • How can we make the wiki multi-language?

    How can we make the wiki multi-language?

    I really want to start to translate the wiki to Portuguese (Brazil), but, I didn't found a correct way to make the same wiki have multiple languages. So I want some opinions of how anybody that wants to translate wiki of CodenameOne can achieve that.

    opened by LuccaPrado 0
  • Maven Run Config

    Maven Run Config "Xcode iOS Project" fails

    Describe the bug this is the output at the end of the log:

    [INFO] Process return code is 0
    [INFO] Executing: 
    [INFO] javac -source 1.6 -target 1.6 -classpath *_omitted the paths here_*
    [INFO] Executing with timeout -1
    [INFO] Warning: [options] Bootstrap Classpath not specified with -source 6
    [INFO] Error: Source option 6 is no longer supported. Use 7 or higher.
    [INFO] Error: Target option 6 is no longer supported. Use 7 or higher.
    [INFO] Process return code is 2
    

    But I couldn't figure it out where 1.6 is set anywhere in the poms. This (with 1.8)is written in the root pom for example:

      <properties>
        <java.version>1.8</java.version>
        <cn1app.name>app</cn1app.name>
        <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
        <rhino.version>1.7.11</rhino.version>
        <cn1.plugin.version>7.0.95</cn1.plugin.version>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java-tests.version>11</java-tests.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <cn1.version>7.0.95</cn1.version>
        <maven.compiler.source>1.8</maven.compiler.source>
      </properties>
    

    To Reproduce just running "Xcode iOS Project" config via IntelliJ

    Expected behavior Generating a fresh xcode project

    Additional context I'm not sure if this is a bug, because the config is not that fresh (Beginning of 2022), but why is javac called with 1.6 when maven.compiler.target and maven.compiler.source are set to 1.8?

    opened by kutoman 1
  • App crash since manifest support of Android 12

    App crash since manifest support of Android 12

    Describe the bug CN1 seems to use deprecated Android API which isn't supported on Android 12 anymore

    To Reproduce Steps to reproduce the behavior: Just check the specific line of the AndroidLocationManager mentioned in the stacktrace

    Expected behavior No crash

    Smartphone (please complete the following information):

    • Device: Emulator
    • OS: Android 12

    Additional context

    2022-12-25 14:56:16.217 2188-2188/org.igmg.android E/AndroidRuntime: FATAL EXCEPTION: main
        Process: org.igmg.android, PID: 2188
        java.lang.UnsupportedOperationException: GpsStatus APIs not supported, please use GnssStatus APIs instead
            at android.location.LocationManager.addGpsStatusListener(LocationManager.java:2344)
            at com.codename1.location.AndroidLocationManager$2.run(AndroidLocationManager.java:150)
            at android.os.Handler.handleCallback(Handler.java:938)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loopOnce(Looper.java:201)
            at android.os.Looper.loop(Looper.java:288)
            at android.app.ActivityThread.main(ActivityThread.java:7839)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
    
    opened by kutoman 3
  • Codename App turns slowly after some time using it.

    Codename App turns slowly after some time using it.

    The App works quite well after login , but it becomes increaesily slow after some activities and finaly crashes. The issue occur´s only in iOs version (on Android works well).

    This behavior became more critical after upggrading iOS to 16.1 version. Running on iOs 15 this issue was not so critical.

    It seems like a memory retrieving issue. Is there any codenameone orientation about this ?

    opened by JTBrandao 2
  • Support

    Support "pointerHover" on real devices

    At the moment public void pointerHover(int x[],int y[]) { // as of 12/2022, this is called on the simulator but not on real devices }

    Is called on the simulator, but not on real devices. This ought to happen if the device has attached a bluetooth mouse, or has one natively as is the case for chromebooks and windows running android apps through windows subsystem for android.

    There logically ought to be corresponding classes of listeners, for these events, complementing the existing pointer dragged listeners.

    opened by ddyer0 0
Releases(7.0.95)
Owner
Codename One
Write Once Run Anywhere mobile first platform for Java and Kotlin developers
Codename One
VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS team, which is intended to speed up the first screen of websites working on Android and iOS platform.

VasSonic: A Lightweight And High-performance Hybrid Framework VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS

Tencent 11.6k Dec 30, 2022
A small, yet full-featured framework that allows building View-based Android applications

Conductor A small, yet full-featured framework that allows building View-based Android applications. Conductor provides a light-weight wrapper around

BlueLine Labs 3.9k Jan 6, 2023
A full-featured framework that allows building android applications following the principles of Clean Architecture.

EasyMVP A powerful, and very simple MVP library with annotation processing and bytecode weaving. EasyMVP eliminates the boilerplate code for dealing w

null 1.3k Nov 19, 2022
A data-binding Presentation Model(MVVM) framework for the Android platform.

PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED. As personal time contraints, I am currently unable to keep up. Please use official android da

RoboBinding open source 1.3k Dec 9, 2022
kotlin-core - A full framework for making Android apps. Based on Anko and Kotson.

kotlin-core This package is not Android-specific, and can be used across platforms. However, for a good example of use in Android, take a look at kotl

Lightning Kite 36 Oct 3, 2022
UltimateAndroid is a rapid development framework for developing your apps

UltimateAndroid Version:0.10.2 UltimateAndroid is a rapid development framework for developing apps Master branch: Dev branch: V0.7.0 Ui Demo screensh

MarshalChen 2.1k Dec 26, 2022
A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

This Project is Deprecated! Thanks to everybody who've used Android Priority JobQueue. It was designed in a world where there was no JobScheduler, RxJ

Yigit Boyar 3.4k Dec 31, 2022
A framework for hook java methods.

Legend Projects are out of date, plese move to: Whale Hook What is Legend? Legend is a Hook framework for Android Development, it allows you to Hook J

Lody 1.6k Dec 15, 2022
A plugin system that runs like a browser, but instead of load web pages, it load apk plugins which runs natively on Android system.

Android Dynamic Loader Android Dynamic Loader is a plugin system. The host application is like a browser, but instead of load web pages, it load plugi

Tu Yimin 1.4k Dec 28, 2022
Source++ is an open-source live coding platform. Add breakpoints, logs, metrics, and tracing to live production applications

Source++ is an open-source live coding platform. Add breakpoints, logs, metrics, and distributed tracing to live production software in real-time on-d

Source++ 40 Dec 14, 2022
A Model-View-Presenter / Model-View-Intent library for modern Android apps

Mosby A Model-View-Presenter and Model-View-Intent library for Android apps. Dependency dependencies { compile 'com.hannesdorfmann.mosby3:mvi:3.1.1

Hannes Dorfmann 5.5k Dec 25, 2022
LiteOrm is a fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line of code efficiently.

#LiteOrm:Android高性能数据库框架 A fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line

马天宇 1.5k Nov 19, 2022
Rosie is an Android framework to create applications following the principles of Clean Architecture.

Rosie The only way to make the deadline—the only way to go fast—is to keep the code as clean as possible at all times. — Robert C. Martin in Clean Cod

Karumi 1.8k Dec 28, 2022
Android Plugin Framework

Android Plugin Framework This project is pre-mature and may be changed very frequently. Introduction Android Plugin Framework (APF) aims to providing

Umeng Limited 322 Nov 17, 2022
MVVM framework for Android

RoboMVVM - MVVM Framework For Android RoboMVVM is an open source library that facilitates the use of the MVVM pattern in Android apps. The MVVM patter

Debdatta Basu 55 Nov 24, 2020
🔥 Android component-based routing framework

README-CN Latest version module krouter-core krouter-compiler krouter-annotation krouter-plugin version Features 支持通过路由获取intent 支持方法注解,通过路由调用方法 支持给fra

Jiaming Gu 6 Jun 24, 2022
🔪 AOP development framework implemented through *Annotation + ASM + Gradle Transform API* for Android🤖

?? AOP development framework implemented through *Annotation + ASM + Gradle Transform API* for Android??

Pumpkin 325 Nov 22, 2022
droidparts 6.7 0.0 L5 Java DI, ORM, JSON, ...

DroidParts a carefully crafted Android framework that includes: DI - injection of Views, Fragments, Services, etc. ORM - efficient persistence utilizi

DroidParts 779 Dec 21, 2022
🚀Plugin for Android Studio And IntelliJ Idea to generate Kotlin data class code from JSON text ( Json to Kotlin )

JsonToKotlinClass Hi, Welcome! This is a plugin to generate Kotlin data class from JSON string, in another word, a plugin that converts JSON string to

Seal 2.8k Jan 3, 2023