Please see robovm.com for more information.
robovm / robovm-idea Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v2.0
License: GNU General Public License v2.0
Please see robovm.com for more information.
Should also perform a debug build which should work with a valid license.
ProjectViewNodeDecorator
subclass with a custom folder/module icon for RoboVM modules in a multi module projects.<projectViewNodeDecorator id="robovm.module.node.decorator" implementation="org.robovm.tools.idea.ModuleNodeIconDecorator"/>
Generating projects with a single RoboVM Module works. Generating a RoboVM module in an existing project using Maven/Gradle fails. It looks like the modules aren't updated properly and the external build systems aren't refreshed.
Just like in Eclipse, see robovm/robovm-eclipse@be394f5
Two steps:
The release build of IDEA doesn't work. I get an exception at startup and IDEA disables the plugin. Seems to be a problem with the SDK. Nothing is extracted to .robovm-sdks/
. I have verified that the robovm-dist
included in the plugin JAR is for the correct version (1.1.0) and that /META-INF/robovm/version.properties
(which is what org.robovm.compiler.Version.getVersion()
reads) contains the correct version.
Here's the exception:
Plugin 'org.robovm.intellij' failed to initialize and will be disabled. Please restart IntelliJ IDEA.
java.lang.NullPointerException
at org.robovm.idea.RoboVmPlugin.getSdkLibraries(RoboVmPlugin.java:277)
at org.robovm.idea.sdk.RoboVmSdkType.setupSdkRoots(RoboVmSdkType.java:113)
at org.robovm.idea.sdk.RoboVmSdkType$1.run(RoboVmSdkType.java:151)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:937)
at org.robovm.idea.sdk.RoboVmSdkType.createSdkIfNotExists(RoboVmSdkType.java:146)
at org.robovm.idea.RoboVmPlugin.extractSdk(RoboVmPlugin.java:224)
at org.robovm.idea.components.RoboVmApplicationComponent.initComponent(RoboVmApplicationComponent.java:30)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter$1.getComponentInstance(ComponentManagerImpl.java:568)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:610)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:245)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:211)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponent(ComponentManagerImpl.java:125)
at com.intellij.openapi.application.impl.ApplicationImpl.createComponent(ApplicationImpl.java:359)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:116)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:87)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:101)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:504)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:486)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:170)
at com.intellij.idea.MainImpl$1$1$1.run(MainImpl.java:52)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:362)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
We currently assign a JDK instead of a RoboVM SDK. This results in wrong sources being used in debug mode.
When compiling, we should ignore the dependencies pulled in via Maven/Gradle just as in case of Eclipse.
For toolwindow, runconfigs, project templates.
Needed to pull in the dependencies and have IDEA play nice with us.
Maven is supposed to replace ${project.version}
in src/main/resources/META-INF/plugin.xml
with the version from the POM but that doesn't seem to work reliably. Works sometimes though. I had a look at the POM and the assembly and I think the cause of this problem is the fileSet
in the plugin-assembly.xml
:
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/resources/META-INF</directory>
<outputDirectory>/META-INF</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
This copies the unfiltered plugin.xml
file. The filtered one is already included in the project artifact which is also copied by the assembly:
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<excludes>
<exclude>org.robovm:robovm-dist</exclude>
</excludes>
</dependencySet>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<unpack>false</unpack>
<includes>
<include>org.robovm:robovm-dist</include>
</includes>
</dependencySet>
</dependencySets>
I believe the problem will be fixed by just removing the fileSet
. No need to copy what is already in the project artifact jar file.
I have a project using the IntelliJ plugin. The plugin was working fine at first, but now when I open my project I see a warning about a plugin exception (full log below). Probably as a consequence of this, the plugin doesn't seem to be fully loaded. When I try to create a new RoboVM iOS run configuration, all the select controls are empty, so I can’t pick any options for my run configuration.
Full stack trace follows:
null
java.lang.NullPointerException
at org.robovm.idea.RoboVmPlugin.isRoboVmModule(RoboVmPlugin.java:336)
at org.robovm.idea.interfacebuilder.IBIntegratorModuleComponent.moduleAdded(IBIntegratorModuleComponent.java:46)
at com.intellij.openapi.module.impl.ModuleImpl.moduleAdded(ModuleImpl.java:232)
at com.intellij.openapi.module.impl.ModuleManagerImpl$5.run(ModuleManagerImpl.java:587)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:937)
at com.intellij.openapi.module.impl.ModuleManagerImpl.fireModuleAddedInWriteAction(ModuleManagerImpl.java:584)
at com.intellij.openapi.module.impl.ModuleManagerComponent$3$1.run(ModuleManagerComponent.java:139)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:161)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:818)
at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:208)
at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:363)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:76)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:240)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:193)
at com.intellij.openapi.module.impl.ModuleManagerComponent.fireModulesAdded(ModuleManagerComponent.java:155)
at com.intellij.openapi.module.impl.ModuleManagerImpl.projectOpened(ModuleManagerImpl.java:572)
at com.intellij.openapi.project.impl.ProjectImpl.projectOpened(ProjectImpl.java:398)
at com.intellij.openapi.project.impl.ProjectImpl.access$200(ProjectImpl.java:73)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:433)
at com.intellij.openapi.project.impl.ProjectManagerImpl$3.projectOpened(ProjectManagerImpl.java:154)
at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectOpened(ProjectManagerImpl.java:938)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:461)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:562)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:182)
at com.intellij.ide.RecentProjectsManagerImpl.doOpenProject(RecentProjectsManagerImpl.java:46)
at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:357)
at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:384)
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:497)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:116)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:322)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:309)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:288)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:41)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:177)
at com.sun.proxy.$Proxy55.appStarting(Unknown Source)
at com.intellij.idea.IdeaApplication$IdeStarter$2.run(IdeaApplication.java:328)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Looks like it does that now. Better to just open the project and the project will focused in Xcode.
Set in RoboVmCompileTask
.
Need to have two SDKs, one for iOS, one for console excluding the cocoatouch rt. Idea can only assign a single SDK to a project.
Same as #4, but should compile in debug mode. Should also set source paths in addition to classpath. Should attach debugger once its done.
Should spawn a dialog similar to the one we have in Eclipse.
See other plugins, e.g. PhoneGap plugin: https://github.com/JetBrains/intellij-plugins/tree/master/phoneGap
Using the default. Need to set it to either robovm-build or the module path. Which IDEA can't give us...
We probably want our own tab at the bottom of the IDE. RoboVMPluginUtils should provide logging methods and a Logger implementation.
Probably related to #21
Otherwise the user has to trigger a build manually which is not ideal.
Should compile module based on classpath of module and dependencies. A few helpful snippets:
// this is how we get the classpath of a module
// ModuleRootManager.getInstance(ModuleManager.getInstance(project).getModules()[3]).orderEntries().classes().getRoots();
// this is how we get the source paths
// ModuleRootManager.getInstance(ModuleManager.getInstance(project).getModules()[3]).orderEntries().getSourcePathsList()
// need to recursively get the dependencies as well, both classes and sources
// should be simple
// attach debugger https://devnet.jetbrains.com/message/5522503#5522503
// Project project = e.getProject();
// System.out.println(project);
//GUI.main(new String[0]);
Hello roboVM Team,
I'm running into linker errors when trying to create an IPA. The project setup is:
roboVM 1.1.0,
libGDX 1.5.5
android.tools.build:gradle:1.1.2
org.robovm:robovm-gradle-plugin:1.1.0
org.robovm.idea-1.1.1-SNAPSHOT-plugin-dist-20150422_021132-51
Below is the error output. Do you have any ideas how to fix or workaround it, in a way that leads to a valid .ipa output?
Thank you.
[DEBUG] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/IOSLauncher -arch armv7 -Wl,-filelist,/Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/objects -L /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7 -ObjC -exported_symbols_list /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/exported_symbols -Wl,-no_implicit_dylibs -Wl,-dead_strip -F/Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/facebook-1.0.0.jar.extracted/META-INF/robovm/ios/libs -miphoneos-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.2.sdk -lrobovm-bc -force_load /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7/librobovm-rt.a -lrobovm-core -lgc -lpthread -ldl -lm -liconv -lsqlite3 -framework Foundation -framework Foundation -framework StoreKit -framework CoreData -framework SystemConfiguration -framework FacebookSDK -framework CoreLocation -framework CoreGraphics -framework UIKit -framework OpenGLES -framework QuartzCore -framework OpenAL -framework AudioToolbox -framework AVFoundation -force_load /Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/google-analytics-1.0.0.jar.extracted/META-INF/robovm/ios/libs/libgoogleanalytics.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libObjectAL.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx-freetype.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx.a -framework MobileCoreServices
[ERROR] ld: file not found: /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libObjectAL.a
[ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't create IPA
org.apache.commons.exec.ExecuteException: Command '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/IOSLauncher -arch armv7 -Wl,-filelist,/Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/objects -L /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7 -ObjC -exported_symbols_list /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/exported_symbols -Wl,-no_implicit_dylibs -Wl,-dead_strip -F/Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/facebook-1.0.0.jar.extracted/META-INF/robovm/ios/libs -miphoneos-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.2.sdk -lrobovm-bc -force_load /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7/librobovm-rt.a -lrobovm-core -lgc -lpthread -ldl -lm -liconv -lsqlite3 -framework Foundation -framework Foundation -framework StoreKit -framework CoreData -framework SystemConfiguration -framework FacebookSDK -framework CoreLocation -framework CoreGraphics -framework UIKit -framework OpenGLES -framework QuartzCore -framework OpenAL -framework AudioToolbox -framework AVFoundation -force_load /Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/google-analytics-1.0.0.jar.extracted/META-INF/robovm/ios/libs/libgoogleanalytics.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libObjectAL.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx-freetype.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx.a -framework MobileCoreServices' failed (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:346)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
at org.robovm.compiler.util.Executor.exec(Executor.java:344)
at org.robovm.compiler.util.ToolchainUtil.link(ToolchainUtil.java:300)
at org.robovm.compiler.target.AbstractTarget.doBuild(AbstractTarget.java:206)
at org.robovm.compiler.target.ios.IOSTarget.doBuild(IOSTarget.java:314)
at org.robovm.compiler.target.AbstractTarget.build(AbstractTarget.java:200)
at org.robovm.compiler.Linker.link(Linker.java:359)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:389)
at org.robovm.compiler.AppCompiler.createIpa(AppCompiler.java:683)
at org.robovm.idea.compilation.RoboVmCompileTask$1.doCompile(RoboVmCompileTask.java:110)
at org.robovm.idea.compilation.RoboVmCompilerThread.run(RoboVmCompilerThread.java:66)
[INFO] IPA creation complete, 0 errors, 0 warnings
Right now we just pick one by random. Would be nice with a proper dialog which allows the user to select a device by name (not UUID!).
This issue has a mirror issue for the Eclipse plugin: robovm/robovm-eclipse#67.
Need to use GPL for oss build, RoboVM license for proprietary build.
Should probably be part of an application component. Called on startup of IDE, checks if RoboVM home exists, extracts tar.gz if not or if newer and snapshot version. See Eclipse plugin for an implementation of that logic. Figure out the best place to place the SDK.
IDEA sends a class prepare event request on startup with id 0. This request has no constraints, so we are supposed to report all class prepare events. However, upon receiving such events, IDEA throws an NPE as it can't find the request corresponding to id 0. However, it never clears that request, so something is up in IDEA.
This issue doesn't have an impact on functionality, everything works as intended. It's just that you see a lot of NPEs when developing the IDEA plugin.
Should only work on modules with storyboards. Needs a new method in IBIntegrator.
DeviceType.getBestDeviceType() has the logic implemented already, need to wire it up with the UI.
Choosing the menu option Build -> Create IPA leads to the NullPointerException below. Versions in use are:
org.robovm.idea-1.1.1-SNAPSHOT-plugin-dist-20150422_021132-51
robovm 1.1.0
com.android.tools.build:gradle:1.1.2
org.robovm:robovm-gradle-plugin:1.1.0
ligGDX 1.5.5
Android Studio 1.2 RC0
null
java.lang.NullPointerException
at org.robovm.idea.RoboVmPlugin.isRoboVmModule(RoboVmPlugin.java:338)
at org.robovm.idea.interfacebuilder.IBIntegratorModuleComponent.moduleAdded(IBIntegratorModuleComponent.java:46)
at com.intellij.openapi.module.impl.ModuleImpl.moduleAdded(ModuleImpl.java:232)
at com.intellij.openapi.module.impl.ModuleManagerImpl$5.run(ModuleManagerImpl.java:587)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:937)
at com.intellij.openapi.module.impl.ModuleManagerImpl.fireModuleAddedInWriteAction(ModuleManagerImpl.java:584)
at com.intellij.openapi.module.impl.ModuleManagerComponent$3$1.run(ModuleManagerComponent.java:139)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:161)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:818)
at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:208)
at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:363)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:76)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:240)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:193)
at com.intellij.openapi.module.impl.ModuleManagerComponent.fireModulesAdded(ModuleManagerComponent.java:155)
at com.intellij.openapi.module.impl.ModuleManagerImpl.projectOpened(ModuleManagerImpl.java:572)
at com.intellij.openapi.project.impl.ProjectImpl.projectOpened(ProjectImpl.java:398)
at com.intellij.openapi.project.impl.ProjectImpl.access$200(ProjectImpl.java:73)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:433)
at com.intellij.openapi.project.impl.ProjectManagerImpl$3.projectOpened(ProjectManagerImpl.java:154)
at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectOpened(ProjectManagerImpl.java:938)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:461)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:562)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:182)
at com.intellij.ide.RecentProjectsManagerImpl.doOpenProject(RecentProjectsManagerImpl.java:46)
at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:357)
at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:384)
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:497)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:116)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:322)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:309)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:288)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:41)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:177)
at com.sun.proxy.$Proxy55.appStarting(Unknown Source)
at com.intellij.idea.IdeaApplication$IdeStarter$2.run(IdeaApplication.java:328)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.NullPointerException
at org.robovm.idea.RoboVmPlugin.isRoboVmModule(RoboVmPlugin.java:338)
at org.robovm.idea.interfacebuilder.IBIntegratorModuleComponent.moduleAdded(IBIntegratorModuleComponent.java:46)
at com.intellij.openapi.module.impl.ModuleImpl.moduleAdded(ModuleImpl.java:232)
at com.intellij.openapi.module.impl.ModuleManagerImpl$5.run(ModuleManagerImpl.java:587)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:937)
at com.intellij.openapi.module.impl.ModuleManagerImpl.fireModuleAddedInWriteAction(ModuleManagerImpl.java:584)
at com.intellij.openapi.module.impl.ModuleManagerComponent$3$1.run(ModuleManagerComponent.java:139)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:161)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:818)
at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:208)
at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:363)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:76)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:240)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:193)
at com.intellij.openapi.module.impl.ModuleManagerComponent.fireModulesAdded(ModuleManagerComponent.java:155)
at com.intellij.openapi.module.impl.ModuleManagerImpl.projectOpened(ModuleManagerImpl.java:572)
at com.intellij.openapi.project.impl.ProjectImpl.projectOpened(ProjectImpl.java:398)
at com.intellij.openapi.project.impl.ProjectImpl.access$200(ProjectImpl.java:73)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:433)
at com.intellij.openapi.project.impl.ProjectManagerImpl$3.projectOpened(ProjectManagerImpl.java:154)
at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectOpened(ProjectManagerImpl.java:938)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:461)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:562)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:182)
at com.intellij.ide.RecentProjectsManagerImpl.doOpenProject(RecentProjectsManagerImpl.java:46)
at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:357)
at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:384)
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:497)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:116)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:322)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:309)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:288)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:41)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:177)
at com.sun.proxy.$Proxy55.appStarting(Unknown Source)
at com.intellij.idea.IdeaApplication$IdeStarter$2.run(IdeaApplication.java:328)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.NullPointerException
at org.robovm.idea.RoboVmPlugin.isRoboVmModule(RoboVmPlugin.java:338)
at org.robovm.idea.interfacebuilder.IBIntegratorModuleComponent.moduleAdded(IBIntegratorModuleComponent.java:46)
at com.intellij.openapi.module.impl.ModuleImpl.moduleAdded(ModuleImpl.java:232)
at com.intellij.openapi.module.impl.ModuleManagerImpl$5.run(ModuleManagerImpl.java:587)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:937)
at com.intellij.openapi.module.impl.ModuleManagerImpl.fireModuleAddedInWriteAction(ModuleManagerImpl.java:584)
at com.intellij.openapi.module.impl.ModuleManagerComponent$3$1.run(ModuleManagerComponent.java:139)
at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:161)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:818)
at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:208)
at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:363)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:76)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:240)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:193)
at com.intellij.openapi.module.impl.ModuleManagerComponent.fireModulesAdded(ModuleManagerComponent.java:155)
at com.intellij.openapi.module.impl.ModuleManagerImpl.projectOpened(ModuleManagerImpl.java:572)
at com.intellij.openapi.project.impl.ProjectImpl.projectOpened(ProjectImpl.java:398)
at com.intellij.openapi.project.impl.ProjectImpl.access$200(ProjectImpl.java:73)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:433)
at com.intellij.openapi.project.impl.ProjectManagerImpl$3.projectOpened(ProjectManagerImpl.java:154)
at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectOpened(ProjectManagerImpl.java:938)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:461)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:562)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:182)
at com.intellij.ide.RecentProjectsManagerImpl.doOpenProject(RecentProjectsManagerImpl.java:46)
at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:357)
at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:384)
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:497)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:116)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:322)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:309)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:288)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:41)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:177)
at com.sun.proxy.$Proxy55.appStarting(Unknown Source)
at com.intellij.idea.IdeaApplication$IdeStarter$2.run(IdeaApplication.java:328)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:332)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:569)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
org.apache.commons.exec.ExecuteException: Command '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/IOSLauncher -arch armv7 -Wl,-filelist,/Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/objects -L /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7 -ObjC -exported_symbols_list /Users/usr/Library/Caches/AndroidStudio/tmp/robovm7571209546049977807.tmp/thumbv7/exported_symbols -Wl,-no_implicit_dylibs -Wl,-dead_strip -F/Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/facebook-1.0.0.jar.extracted/META-INF/robovm/ios/libs -miphoneos-version-min=5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.2.sdk -lrobovm-bc -force_load /Users/usr/.robovm-sdks/robovm-1.1.1-SNAPSHOT/lib/vm/ios/thumbv7/librobovm-rt.a -lrobovm-core -lgc -lpthread -ldl -lm -liconv -lsqlite3 -framework Foundation -framework Foundation -framework StoreKit -framework CoreData -framework SystemConfiguration -framework FacebookSDK -framework CoreLocation -framework CoreGraphics -framework UIKit -framework OpenGLES -framework QuartzCore -framework OpenAL -framework AudioToolbox -framework AVFoundation -force_load /Users/usr/.robovm/cache/ios/thumbv7/release/Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/libs/google-analytics-1.0.0.jar.extracted/META-INF/robovm/ios/libs/libgoogleanalytics.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libObjectAL.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx-freetype.a -force_load /Users/usr/Workspace/AndroidStudio/MyAwesomeProject/ios/build/libs/ios/libgdx.a -framework MobileCoreServices' failed (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:346)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
at org.robovm.compiler.util.Executor.exec(Executor.java:344)
at org.robovm.compiler.util.ToolchainUtil.link(ToolchainUtil.java:300)
at org.robovm.compiler.target.AbstractTarget.doBuild(AbstractTarget.java:206)
at org.robovm.compiler.target.ios.IOSTarget.doBuild(IOSTarget.java:314)
at org.robovm.compiler.target.AbstractTarget.build(AbstractTarget.java:200)
at org.robovm.compiler.Linker.link(Linker.java:359)
at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:389)
at org.robovm.compiler.AppCompiler.createIpa(AppCompiler.java:683)
at org.robovm.idea.compilation.RoboVmCompileTask$1.doCompile(RoboVmCompileTask.java:110)
at org.robovm.idea.compilation.RoboVmCompilerThread.run(RoboVmCompilerThread.java:66)
[INFO] IPA creation complete, 0 errors, 0 warnings
Creating Maven projects works, adding a Maven module to an existing project doesn't.
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.