Support Linux #10

Open
BHSPitMonkey opened this Issue May 25, 2016 · 21 comments

Comments

Projects
None yet
Contributor

BHSPitMonkey commented May 25, 2016

Some work toward this milestone can be followed in #4 as well.

Contributor

gdowens commented May 25, 2016

👍

gdowens added the enhancement label May 25, 2016

OctoD commented May 26, 2016

👍 👍 👍

Fordi commented May 26, 2016

Someone comment on what sorts of things are needed for this / what made it hard for this to be part of the initial design.

I mean, if this is an electron.io app, it should be simple enough to port - I imagine the hardest bit might be some command line tool wrapping / substitution. Clearly there was some kind of showstopper, right?

Owner

dabbott commented May 26, 2016

@Fordi We had to prioritize one thing and do it really well. No showstoppers. But I think it would be a lot more useful if we had built-in Android emulator support first.

@namuol already built it successfully: https://twitter.com/louroboros/status/735569370886217728

A couple minor things to change off the top of my head:

  • we shouldn't run any xcrun or osascript
  • remove iOS devices from simulator list (I guess remove the simulator button entirely, if no Android support before then)
  • maybe style the toolbar in a generic linuxy theme

I think this could be pulled off with a real iOS device (not simulated). You'd need:

  • a pre-compiled, scaffolded application that you can drop the new .js/.plist into.
  • a program to sign executables using the user's developer key (Goole tells me that "isign" does this)
  • a way to install the signed application on the device (ideviceinstaller should do it)
  • and, ideally, a way to start and stop the application on the device. (I don't know how to do this offhand, but the libimobiledevice guys may have figured out the api that xcode uses.)
Owner

dabbott commented May 26, 2016

@dunhamsteve This sounds pretty awesome. We already ship a precompiled app with our Mac installer so that if you're building a plain js app you don't need to build/rebuild. Not sure how you'd swap out just a .js file, I don't know how the compiled ios binaries work well enough to comment. The rest seem reasonably legit - although I'm sure it will be a lot of effort to hook everything up.

Supporting iOS on Linux isn't on the roadmap for me or @gdowens. If someone very motivated wants to take it on, we're happy to help and review of course. It does sound very valuable, even if quite a bit of work to get right.

Yeah, I don't have a Linux desktop, but I thought it'd be worth sharing how it might be accomplished. Windows might be similar, but I don't know if the libimobiledevice stuff has been ported to windows.

Regarding the javascript files, I was presuming react-native works by having javascript files sitting next to the executable in the .app directory tree. I haven't actually looked. If this is the case, you need to re-sign every time the contents of the .app directory tree changes.

namuol commented May 26, 2016 edited

@dabbott I think it would be a lot more useful if we had built-in Android emulator support first.

Agreed! See discussion #12

@Fordi I imagine the hardest bit might be some command line tool wrapping / substitution.

See discussion #16

@dunhamsteve I think [iOS support for Linux/Windows] could be pulled off with a real iOS device (not simulated).

It'd probably make sense to open a separate issue for this since it's not really a roadblock for general Linux/Windows support, but would certainly be awesome to have.

Owner

dabbott commented May 26, 2016

@namuol so... I haven't tried building for Linux yet myself. I'm downloading an Ubunto VM now and I'll give it a shot.

What have you run into so far that we need to change for this to work?

namuol commented May 26, 2016

I mainly just needed to copy most of the contents of desktop/deco_unpack_lib to ~/.config/com.decosoftware.Deco/libs, and create dummy versions of an executable or two (see #4).

Encouragingly, I didn't need to make any code changes apart from a few console.logs and some other changes I used to figure out where things were failing.

That said, I only barely got the UI to show up -- there's certainly going to be more OS X-specific code I haven't crossed paths with that'll need to be made a little more general.

Ok, gave this a shot also. Like you mentioned, the UI pretty much seems to work. I just ignore the updater screen for now, since I didn't make a proper version file :)

Definitely not as useful as the OSX version without a built-in way to run your app though. The Android setup continually goes wrong for me on both OSX and Ubuntu. I think I have a better idea of how important it is to provide an Android emulator through Deco.

If anyone else wants to follow along, these are the steps I took to get the UI up: https://github.com/devinabbott/deco-ide/blob/linux/linux_install.sh

deco-linux

Its about time the Linux binaries were made available.

Owner

dabbott commented May 30, 2016

@solancer we first are making it more extensible to launch an app. Feel free to PR if you want to shorten the timeline on Linux binaries.

dabbott referenced this issue Jun 28, 2016

Closed

Linux&Windows? #109

Anyone currently working on this for Linux and Windows? Would love to contribute and maybe get this out on those platforms.

benoj commented Nov 29, 2016

Is there any update on this? really keen to give deco a try

any updates guys?

@privateOmega I wouldn't say that there is any progress because I actually don't know but I would suggest just working inside Nuclide (Built on Atom) instead. Deco isn't that flawless, I've run it a couple of times on my Mac but it was to unstable to work in for me.

Cheers

Is this still in development hell?

@jackbillstrom I read about this in an article and something like this would reduce so much effort in designing a React Native App. So i was very interested to see this in action.

@privateOmega I was obsessed about finally try to use Deco, and when I got my Macbook I found out that Avocode did a pretty darn good job for me anyways 👍

@jackbillstrom thanks for the pointer :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment