Please see robovm.com for more information.
robovm / robovm-eclipse Goto Github PK
View Code? Open in Web Editor NEWRoboVM Eclipse plugin
License: GNU General Public License v2.0
RoboVM Eclipse plugin
License: GNU General Public License v2.0
Please see robovm.com for more information.
Closing and reopening a project fixes the classpath problem.
DeviceType.getBestDeviceType()
has the logic implemented already, need to wire it up with the UI.
When deploying to the simulator, ios-sim
sometimes fails with:
12/25/14 12:11:48 PM: [ERROR] Session could not be started: Error Domain=LaunchServicesError Code=0 "Unable to run app in Simulator" UserInfo=0x7fc0d2d0fa50 {Error=PackagePatchFailed, ErrorDescription=Could not hardlink copy /Users/badlogic/Library/Developer/CoreSimulator/Devices/4EDDCB4C-D5BB-480A-B0BD-92ECD85CE767/data/Containers/Bundle/Application/B5086F76-A9F6-43AB-8D56-FFC37DCEC308/IOSLauncher.app to /Users/badlogic/Library/Developer/CoreSimulator/Devices/4EDDCB4C-D5BB-480A-B0BD-92ECD85CE767/data/Library/Caches/com.apple.mobile.installd.staging/temp.PDbQKB/extracted/Payload/IOSLauncher.app with manifest /Users/badlogic/Library/Developer/CoreSimulator/Devices/4EDDCB4C-D5BB-480A-B0BD-92ECD85CE767/data/Library/Caches/com.apple.mobile.installd.staging/temp.PDbQKB/extracted/com.apple.deltainstallcommands.com.mygdx.game.IOSLauncher, NSLocalizedFailureReason=An error was encountered while running (Domain = LaunchServicesError, Code = 0), NSUnderlyingError=0x7fc0d4b0f8d0 "The operation couldn’t be completed. (LaunchServicesError error 0.)", NSLocalizedDescription=Unable to run app in Simulator}
This will let the process hang, Eclipse' will keep it around, showing it in the Debug view.
Trying to get rid of the process via the stop button does not work.
Seems to happen for maven projects which lacks the test source folder.
Got the following simulators installed:
(lldb) platform select remote-ios
Platform: remote-ios
Connected: no
SDK Path: "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.0"
SDK Roots: [ 0] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2"
SDK Roots: [ 1] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3"
SDK Roots: [ 2] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.0"
SDK Roots: [ 3] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1"
SDK Roots: [ 4] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.0"
SDK Roots: [ 5] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.1"
SDK Roots: [ 6] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.0"
SDK Roots: [ 7] "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.0.3 (11B508)"
Crash:
java.lang.NullPointerException
at org.robovm.eclipse.internal.IOSSimulatorLaunchShortcut.customizeConfiguration(IOSSimulatorLaunchShortcut.java:45)
at org.robovm.eclipse.internal.AbstractProjectLaunchShortcut.launch(AbstractProjectLaunchShortcut.java:129)
at org.robovm.eclipse.internal.AbstractProjectLaunchShortcut.launch(AbstractProjectLaunchShortcut.java:66)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension.launch(LaunchShortcutExtension.java:431)
at org.eclipse.debug.internal.ui.actions.LaunchShortcutAction.run(LaunchShortcutAction.java:74)
at org.eclipse.debug.internal.ui.actions.LaunchShortcutAction.runWithEvent(LaunchShortcutAction.java:123)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:595)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:511)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:420)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4188)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.jface.action.ActionContributionItem$9.handleEvent(ActionContributionItem.java:1293)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4188)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4031)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
I'm getting a weird issue when launching the simulator from Eclipse. I banged my head on the wall until I found some conditions where it does not happen all the times, so I can make progress on my app.
Basically, the simulator freezes right after I launch it from Eclipse. The initial page is displayed, but then clicks are not handled, nor you can scroll if it is a table view. I reproduced it easily with the simple UICatalog from robovm-samples.
I found out that:
Here how I can reproduce it almost systematically on my own machines. I don't know why adding a class makes it worse.
Let me know if you want more details. I can send whatever you want/need to better understand the issue. I can also offer a remote session in case you need it to investigate the issue.
When you launch the app on the simulator via Eclipse and the app throws an uncaught exception, it can happen that in the Console view of Eclipse the app is still listed as running.
The nasty thing is that you cannot remove these instances by pressing the red stop button. The only way to remove them atm, is to restart Eclipse.
The purpose of the RoboVMClassBuilder
is to incrementally build classes as they change. When many classes are rebuilt (e.g. after a clean) we often see that classes are built in incorrect order (not in order of dependency) so that some classes still have to be recompiled on the next launch even if not changed.
The simplest way to fix this is to set the file modification timestamp of all object files to the same timestamp ('now') right after the incremental build is finished.
The compiler can now produce IPAs.
Base it on the template project https://github.com/robovm/robovm-templates.
Error on creating new project RoboVM project on Eclipse Platform
Version: 4.3.1.v20130911-1000
Build id: M20130911-1000
The selected wizard could not be started.
Plug-in org.robovm.eclipse.ui was unable to load class org.robovm.eclipse.internal.NewCocoaTouchProjectWizard.
An error occurred while automatically activating bundle org.robovm.eclipse.ui (824).
With this change the user only needs to install the Eclipse plugin and Xcode to get going. No need to download the RoboVM distribution and put it in /opt. (LLVM is now embedded in the compiler so it doesn't have to be downloaded either)
We need to start up the IBIntegrator for every RoboVM Eclipse project and make sure that new classpath folders and resource folders get registered and processed.
IBIntegrator integrator = new IBIntegrator();
integrator.start(); // Start the daemon.
integrator.addSourceFolders(...); // Add new source/classpath folders.
integrator.addResourceFolders(...); // Add new resource folders (specified in the robovm.xml).
The nightlies we build depend on SNAPSHOT versions of the robovm-compiler and this doesn't work with Tycho's reproducible version qualifiers. It doesn't take changed SNAPSHOT dependencies into account. Just use the default timestamps based on build time. When making a release we change the version to one without SNAPSHOT and tag so at least release builds will be reproducible.
Every project should have it's own IBIntegrator. The .ib folder will be generated in the project root. All resource folders specified in the robovm.xml should be watched by IBIntegrator, as well as all folders with compiled Java class files.
After JUnit launching was added
Need to be able to select which architectures to include in the create IPA dialog.
E.g. -debug:suspend=true in VM args of the launch config will kill other -rvm args when launching the process.
The second page is not needed for our uses.
Adds RoboVM nature to Java project. Removes JRE library and adds RoboVM library.
The simulator fails to correctly display an app when it relaunched after been modified.
Here is how to reproduce:
Workarounds:
Pressing the Finish button does nothing. I guess the templater needs to be disabled for the console project wizard.
java.lang.IllegalArgumentException: No main class specified
at org.robovm.templater.Templater.buildProject(Templater.java:184)
at org.robovm.eclipse.internal.NewProjectWizard.performFinish(NewProjectWizard.java:117)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:853)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:438)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4188)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4031)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3658)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:832)
at org.eclipse.jface.window.Window.open(Window.java:808)
at org.eclipse.ui.internal.actions.NewWizardShortcutAction.run(NewWizardShortcutAction.java:136)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:519)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:595)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:511)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:420)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4188)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4031)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
User should be able to create a new storyboard via File > New
Currently this is not possible due to Soot using statics all over the place. We can therefor only compile a single app at once. Similarily, the debugger is currently fixed to a single port.
When opening a storyboard or xib file in Eclipse, the IBIntegrator temporary XCode project should be opened displaying the selected storyboard or xib file.
First launch works as expected. Second launch fails with
12/2/14 4:36:54 PM: [ERROR] Session could not be started: Error Domain=LaunchServicesError Code=0 "Unable to run app in Simulator" UserInfo=0x7fd552d199f0 {Error=PackagePatchFailed, ErrorDescription=Could not hardlink copy /Users/niklas/Library/Developer/CoreSimulator/Devices/25321885-9CE5-4231-86DD-AAD81862BCF8/data/Containers/Bundle/Application/B4BCE8D6-E0F2-46CE-B6CA-E2F5209AEEE3/ContractR.app to /Users/niklas/Library/Developer/CoreSimulator/Devices/25321885-9CE5-4231-86DD-AAD81862BCF8/data/Library/Caches/com.apple.mobile.installd.staging/temp.PdZ1M9/extracted/Payload/ContractR.app with manifest /Users/niklas/Library/Developer/CoreSimulator/Devices/25321885-9CE5-4231-86DD-AAD81862BCF8/data/Library/Caches/com.apple.mobile.installd.staging/temp.PdZ1M9/extracted/com.apple.deltainstallcommands.org.robovm.samples.contractrTest, NSLocalizedFailureReason=An error was encountered while running (Domain = LaunchServicesError, Code = 0), NSUnderlyingError=0x7fd552f3e5d0 "The operation couldn’t be completed. (LaunchServicesError error 0.)", NSLocalizedDescription=Unable to run app in Simulator}
The work around is to delete the test app from the simulator before relaunching.
Seems to be a problem with the version of the jdt.debug dependency.
Shorter and easier to understand.
If a project's output folders are reconfigured by the user we need to update the IBIntegrator
. We already react to changes in the robovm.xml
file to track changes to <resource>
elements.
The AbstractLaunchConfigurationDelegate.filterPluginArguments() method throws IllegalArgumentException
for all args beginning with '-
' which aren't plugin arguments.
Not possible at the moment
As of the current IBIntegrator version, the temp XCode project will be generated in .ib/APP_NAME.xcodeproj
(project root).
The connector should look for a reference to the robovm maven plugin in the pom (and parents too?). If found it should add the org.robovm.eclipse.RoboVMNature
and the org.robovm.eclipse.RoboVMClassBuilder
to the Eclipse project and set up a classpath with the org.robovm.eclipse.ROBOVM_CONTAINER
and (if it's an iOS project) the org.robovm.eclipse.ROBOVM_COCOA_TOUCH_CONTAINER
.
It would be nice to be able to configure what signing identity is used when building a robovm project from eclipse. Currently it just picks the first one returned by find-identity.
Hi,
just a very minor one :)
I renamed my launchfile to
FindMeAMotif Simulator (3,5-inch).launch
after this the console has this error:
18.04.14 03:05:22: [ INFO] Building executable
18.04.14 03:05:26: [ INFO] Linking 5995 classes
18.04.14 03:05:47: [DEBUG] Building executable /Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/FindMeAMotif/FindMeAMotif Simulator (3,5-inch)/ios/x86/Find Me A Motif
18.04.14 03:05:47: [DEBUG] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o "/Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/FindMeAMotif/FindMeAMotif Simulator (3,5-inch)/ios/x86/Find Me A Motif" -g -arch i386 "-Wl,-filelist,/Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/FindMeAMotif/FindMeAMotif Simulator (3,5-inch)/ios/x86/objects" -L /Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/robovm-0.0.11/lib/vm/ios/x86 -ObjC -exported_symbols_list "/Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/FindMeAMotif/FindMeAMotif Simulator (3,5-inch)/ios/x86/exported_symbols" -Wl,-no_implicit_dylibs -Wl,-dead_strip -mios-simulator-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -lrobovm-bc -force_load /Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/robovm-0.0.11/lib/vm/ios/x86/librobovm-rt.a -lrobovm-debug -lrobovm-core -lgc -lpthread -ldl -lm -liconv -lsqlite3 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework CoreGraphics -framework CoreText -framework ImageIO -framework MobileCoreServices -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libjavafx_font.a -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libprism_common.a -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libprism_sw.a -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libprism_es2.a -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libglass.a -force_load /Users/XXX/Dropbox/git/FindMeAMotif/FindMeAMotif/jfx78/libjavafx_iio.a
18.04.14 03:05:47: [ERROR] ld: -filelist file '/Users/XXX/Documents/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/FindMeAMotif/FindMeAMotif Simulator (3' could not be opened, errno=2 (No such file or directory)
18.04.14 03:05:47: [ERROR]
18.04.14 03:05:47: [ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)
18.04.14 03:05:47: [ERROR] Build failed
I noticed this report:
http://www.cocoabuilder.com/archive/xcode/264712-xcode-link-error-what-does-this-mean.html
so maybe it is xcode-related, but I don't know which parameters are generated and which are given to xcode. Maybe the comma can be replaced before calling xCode.
Thanks :)
It would be nice to have a template selection page, similar to Xcode.
Currently the Eclipse plugin always builds against the latest available SDK. We could expose this in either the project wide settings or launch configuration. There may be other options that we could expose that way.
Alternatively we could keep it all in robovm.xml similar to Android (though that also exposes some things through dialogs).
One consideration with exposing build options is keeping the Eclipse side and robovm.xml in synch.
Removes the tmp app dir.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.