Open Source & Free  

Questions of the Week 44

This weeks release adds support for JavaScript push but I’d recommend you don’t use it in production yet…​ The main issue is that we might change the way JavaScript push keys are generated so it might be better to put this on hold or only experiment with this for now. Regardless it’s a pretty big Questions of the Week 44

Security Section

We’ve had a lot of security related posts in the past few months as we refined many edge cases with some customers. These posts are difficult to comb thru as they are all over the place and it’s hard to get a glance of “what’s available”. So we added a new security section to the Security Section

Push on JavaScript

Up until now push notification in Codename One only worked for Android & iOS devices. This is about to change this weekend when the JavaScript port should (almost) seamlessly start working with push! This is pretty cool as push to the web is a pain with every browser taking a somewhat different route but with Push on JavaScript

TIP: Lightweight Rich Text View

A very common request is support for rich text in Codename One, this is hard to do in a generic/performant cross platform way but can be done as I explained in my answer here. This is pretty common though so it might be worth it doing this in a generic way. Building a “proper” rich TIP: Lightweight Rich Text View

Questions of the Week 43

Surprisingly the big VM update we had last week didn’t trigger any major regressions but we did break some versioned build behavior with the string obfuscation feature. Todays update is far more tame and should mostly include minor bug fixes and not to many new/disruptive features. There were a lot of questions but most of Questions of the Week 43

ToastBar Actions & URLImage Caching

I wrote on the Friday post about a few cool pull requests from Diamond but I didn’t provide a usage example for that API. Probably the best usage example is gmail style undo. If you are not a gmail user then the gmail app essentially never prompts for confirmation! It just does whatever you ask ToastBar Actions & URLImage Caching

Obfuscated Constants

One of the first things a hacker will do when compromising an app is look at it. E.g. if I want to exploit a bank’s login UI I would look at the label next to the login and then search for it in the decompiled code. So if the UI has the String “enter user Obfuscated Constants

ParparVM Optimizations: Java on iOS now 2.8x Faster

TLDR: ParparVM is now up to 2.8x faster, and produces binaries that are 15%-20% smaller than before. If you build your app for iOS today, you may notice a performance boost due to some improvements to ParparVM – the AOT compiler we use to build Codename One apps for iOS. Read on for a short ParparVM Optimizations: Java on iOS now 2.8x Faster

TIP: Use iOS CocoaPods Dependencies in Native Code

Last week I talked about using gradle dependencies to build native code, this week I’ll talk about the iOS equivalent: CocoaPods. We’ve discussed CocoaPods before but this bares repeating especially in the context of a specific cn1lib like intercom. CocoaPods allow us to add a native library dependency to iOS far more easily than Gradle. TIP: Use iOS CocoaPods Dependencies in Native Code

Questions of the Week 42

This weeks update will go out a bit late or maybe even tomorrow. The reason for the postponing is the scope of the changes. We’ve made a lot of changes to ParparVM and we are very concerned that there will be regressions. So we would like this update to go in later in case we Questions of the Week 42

Moving to 64bit by Default

When building an iOS debug version of the app we only build a 32bit version to save build time. Otherwise the build will take almost twice as long as every file would be compiled twice. This worked well and was also fast enough. However, Apple started sending warnings to old 32bit apps and mistakes our Moving to 64bit by Default

Autosizing, Add All & iOS Redirects

One of the common requests we received over the years is a way to let text “fit” into the allocated space so the font will match almost exactly the width available. In some designs this is very important but it’s also very tricky. Measuring the width of a String is a surprisingly expensive operation on Autosizing, Add All & iOS Redirects