What are the limitations of using SQLDelight in KMM (prod) - kotlin-multiplatform

SQLDelight is still marked as experimental library on maven repository here, though the first version seems to be released in October 2018.
I made a sample app in KMM where I'm able to insert/delete rows, and it seems to be working fine for our use case so far. But, can someone help me understand what aspects of it would not be safe for usage in prod. Are there any perf issues? Or is there any possibility of random crashes in prod? Or, do we know if there are apps which successfully use SqlDelight in Prod for their KMM applications?
Thanks!

I don't know why that link describes sqldelight as experimental for multiplatform. Many apps currently ship with sqldelight on iOS.
I wrote the underlying driver (https://github.com/touchlab/SQLiter/) and work with team and community to maintain the sqldelight implementation.
There's nothing that I don't think is production ready. Performance had some sore spots, but there's been considerable attention paid to that recently. I haven't run many benchmarks but I would expect sqldelight to compare favorably to anything out there doing similar work.

Related

Firebase-Unity Project: Exporting for iOS on Windows 10. Workaround?

Recently added Firebase Storage and Authentication to my Unity project. I work on Windows, have a single Unity Pro License, and want to export my App for iOS, as I have done many times before in this dev process.
However, since the addition of Firebase, I'm told I apparently can't export my Firebase-Enabled Unity project for iOS without swapping Unity to an OSX device (which I don't have in comparable quality).
I've noticed a singular thread here where a supposed workaround was discussed, but can't seem to pull it off myself:
"The plugin that comes with firebase depends on cocoapods to handle
transient dependencies. If you look at the Assets ->
PlayServicesResolver -> IOSResolver -> Settings
You can configure it to generate the podfile but not do the remaining
steps." - from user johnb003, March 18th 2017.
Can't seem to find the configuration settings described here. Scoured the forums/communities for solutions, but no results elsewhere.
So, that said, any other Firebase user have a workaround for this issue? I adore the collective Google has put together with their product, but I can't really afford to invest in another Unity Pro License just for the sake of working off of my sub-standard Macbook. Thoughts?
Looks like there's a Google Github project, Unity JAR resolver, describing how the Unity Play Services Resolver works for each target platform.
The documentation is pretty extensive, and solutions are use-case specific, so I can't give you much help on specific podfile settings, but hopefully you can sift through it yourself.

How do I check the stability of multiple beta versions of software that all needs to build together?

My team is developing an iOS app with ARKit in Unity. Until the release date in September, we have to rely on beta versions of Xcode, iOS 11, Unity, and the Unity ARKit plugin. We lost almost a day of development time trying to figure out what was breaking, which turned out to be these beta version issues.
I want to be able to know what combinations of different versions of each system work so we can quickly identify issues. For example, something that says "the ARKit sample app from Xcode 9 beta 2 builds with Xcode 9 beta 4 but not vice versa" and "the Unity ARKit sample app does not build with version 2 of the plugin and and Xcode 9 beta 4."
I've heard tools like Jenkins or Travis mentioned but I don't know what they do or how they get put together.
We're a team of four college students with no industry experience beyond internships, so perhaps that's relevant to making sure this isn't an XY problem.
[Lastly, apologies if this is not the right forum for the question. I'd be happy to close this and post somewhere else.]
Unfortunately that's the nature of the beast when using beta tools and API's. Things will break and change. You are on the bleeding edge as they say, so when you experience an incompatibility you may very well be the very first person to 'uncover' it. Be sure to file bug reports as you discover those and be active on forums and communities as much as possible.
Your best source of information is from the vendors themselves. Release notes specifically are a valuable piece of information. For Xcode and Apple technologies, go over to the downloads section of the developer portal and read the release notes of the relevant tools and platforms:
Take a look at the known issues:
Same thing for Unity or any other tools:
I'm not sure how build tools such as Jenkins will help you out. You might be able to set-up a working build pipeline with specific versions of the tools in question. But seeing as how these tools and API's are in constant flux (and this stage, for good reasons of course) those pipelines might get deprecated very quickly...

Can I code iPhone apps using Eclipse?

As you can probably guess, my knowledge of coding is very limited. Nonetheless, I do know a little Java. I have Eclipse and was wondering if I could use it to code for iOS iPhone/iPad applications. I know that I would almost certainly have to use a language other than Java, but I'm clueless as to what packages or plugins I would need to install in Eclipse to use it to code for iOS. If you guys could answer this question in extreme detail or link me to a very good sequence of video tutorials, I would be extremely grateful.
Yes you can!
If you can live with coding ActionScript, which should be easy to learn with a Java background, you can use Eclipse & AIR to code for iOS (and Android at the same time)
Some resources:
http://flex.apache.org/
http://labs.adobe.com/technologies/flashruntimes/
http://blogs.adobe.com/flashplayer/
http://flashdaily.net/
Be aware that many apps in the store have been build on this platform, and the community is pretty alive and supportive.
The short answer is, "not natively."
Apple pretty much restricts "native" iOS development to XCode which, as #Bob said in his answer, is only available for OS X. So that means no Eclipse or Java-based development. However, there are several cross-platform development frameworks and tools that work to varying degrees of quality. Here are a few, in no particular order:
PhoneGap
Appcelerator
Corona
Adobe AIR (see answer by #dogsgod)
There are others, but those are ones that I've at least heard of and might have tried a little bit. Some, like Appcelerator, have IDEs built on Eclipse, so at least the dev environment would be familiar.
IOS apps are written in Objective-C or Swift using XCode. (This also means you'll need a Mac to do so. XCode is only available for OSX.)
So unfortunately this means the answer to your question is no. You cannot use Eclipse to write an iOS app.

Node.JS Development on iOS?

I'm wondering if there is any chance to run Node.JS on iOS to develop as on desktop? I definitely realize I must have jailbroken iPad to install node or mongodb. The only I've found is good code editor Diet Coda with FTP/SSH support, but no more. How can I get node in "real" terminal on iPad, launching my .js files on certain port etc?
P.s. I'm not big fan of cloud9 'cause it's requires Internet connection and at this time supports only node 0.6
Found a so-so solution: connect to my server via ssh and develop my app in console. But it requires internet connection, that's not good.
A quick search reveals NodeJS on iOS.
The long story short is that I got NodeJS compiled on my jailbroken iPhone 4! It was a long quest to get it working properly but I've done the hard work and compiled a .deb file compatible with Cydia for your installing pleasure...
It's a year and a half old, so the article might be a little out of date, but it's definitely a good starting point. See also how to set up gcc if you need to do that on your iOS device.
Aside: If you're a rooted Android developer, you may be interested in anode.
I am working on an implementation of Node.js on non-jailbroken iOS devices.
http://www.youtube.com/watch?v=xzFH80-HYTo
It is not ready for a public consumption yet, but I am making a good progress and have a plan to open-source it soon.
You can use node.js on iOS without jailbreaking, and without violating any Apple
terms of service. LiquidCore is an open source project that enables node.js on both Android and iOS for deploying micro applications. iOS support is now available from version 0.5.0.
CodeSandbox for iOS works amazingly well, though it's not a console interface.
CodeSandbox for iOS offers a full-fledged development environment with all the tools you need to develop projects of any size. Create a sandbox to quickly prototype your ideas or work on a large codebase with CodeSandbox Projects: whatever your needs are we have you covered.
I've wondered how much work I could get in something like the IconFactory's WorldWideWeb. That company has been around a while, and WWW makes it easy to do work in a browser-hosted environment.
So CodeSandbox almost answers your question, and, if it disappears at some point, WorldWideWeb might be a fallback in a pinch.

Base SDK Missing

I get the "BASE SDK Missing" when re-opeing projects. (I got the latest build of xcode, and latest SDK installed.)
It seems to be happening when I quit a project, (not exiting xcode), and re-open the project after a while. I have tried both, with and without my iPhone plugged in. I have tried to fix the problem like described here, but it does not help for me. - It just makes it even worse! (unrecognizable SDK)
The only way I have managed to get it back to normal, is to do a manual re-boot of my mac, plugged in my phone, waited until it has checked my iPhone, and then, opened xcode. Time consuming and annoying!
Why does it happen and what is the trick to fix this?
Your recent upgrade of Xcode likely removed the earlier SDK that your project was set to use. There are a couple of solutions for the problem. The most simple solution is to always select the "Latest" SDK in your project's settings and not select a specific option. You may be uncomfortable with the idea and want to run your app on an older device but it's important you understand that all of the newer SDKs can generate code that works on older versions of iOS. There's a separate hard to remember option for setting the deploy target. (It took me a while to learn how/why to use this but it's well worth it.)
The second option is to actually find a version of the SDK that your project is set to and attempt to reinstall it. I suggest going this route only if necessary as it's not guaranteed to work in each case. Older SDKs may or may not work in later versions of Xcode (Eg. SDK 3.0 might not work in Xcode 4.3.2) due to major changes in the toolchains. Tools like gcc/gdb are deprecated in favor of llvm/lldb. Still, you may have a valid reason for using an older SDK. You may have to fix a bug that is present only when using the older toolchain or you may need to reproduce a problem that only happens with builds generated from your build server. In many of these cases it might be easier to upgrade where the problem occurs (Eg. upgrade the tools on the build server) or downgrade your dev environment. (Install an older version of Xcode.)
The reasoning behind the frustration is that Apple highly encourages rapid adoption of it's latest tools and technologies. It creates a better product as the dev community is forced to stay current and competitive while the users are forced to maintain upgrades to ensure apps continue to work. This is in contrast with the traditional model of backward compatibility allowing developers to support revision -n of a product/platform. It is also great for business since rapid adoption of the latest often encourages purchase of newer hardware and products to get the best experience. The rapid adoption ensures the more robust software along with bug fixes, enhancements make it to the majority of consumers overall increasing their penetration in the market.
You have to set your target and project's base SDK to "Latest" and not an explicit option. If you choose one explicitly it seems to break if you update xcode versions.

Resources