Build and project management tool for iOs build and dependencies - iphone

I have a Java, Apache Maven and Android background and I am dabbling a bit with iOS. Now I am wondering if there is some sort of standard tool chain that helps with things like
managing scm details (svn, git, mercurial, branching, tagging..)
release management (version numbering, managing dev vs prod configuration...)
working with dependencies (e.g. centralized for multiple project and developers, remote access)
IDE independent build
CI build
testing libraries (unit testing, integration testing, ui testing, mocking)
static analysis
project health reporting
other IDEs
and a whole bunch of other things that the Maven ecosystem provides like public library repositories and so on. From my initial research there does not seem much around, but I might just be looking in the wrong places.
What are the must have tools and libraries for iOS development?
Also I have the impression that Xcode rules it all and if a feature is not there you end up out of luck (e.g. git or hg support) and add other tools. Thats fine but you will always have to use Xcode right?

We open-sourced our XCode Maven plug-in some weeks ago. At SAP we use it to build all our iOS apps and libraries centrally in a product standard compliant way with Maven on a Hudson. Libraries and apps are deployed to Nexus and dependencies (to libraries) are resolved automatically by Maven.
Some overview documentation and binaries on Maven central are still missing, but the sources and technical documentation are already available on Github. If you have questions please write to our mailing list. We will try to help you.
http://sap-production.github.com/xcode-maven-plugin
https://github.com/sap-production/xcode-maven-plugin
Kind regards, Alex

managing SCM details: Xcode has limited support for some SCMs. There are good third-party SVN interfaces around: I use Versions by Sofa.
dependencies: Xcode does a good job here.
IDE-independent build: there's a command-line tool called xcodebuild that builds Xcode projects. If you want to try compiling and linking an iOS app project without using Xcode at all, then good luck, and go to make or your favourite build tool. You could look at the gnustep-make to see how to build apps with make, then port that to iOS projects. Notice that you'll still need to install Xcode in order to build even if you use other tools, because you need the SDK.
CI build: I use CruiseControl.rb, some people use Hudson.
static analysis: Xcode. Hit "build and analyze".

You can build unit tests right into your project in Xcode and they'll be run during the build process. For anyone with familiarity with junit it'll seem very straightforward and natural. There were sessions at the 2010 WWDC about automated testing with Instruments as well that would likely fill an integration testing role for you. It was session 306 if you want to look for the video and materials in the Apple developer site. I've looked into it but haven't actually done any of the UI testing so I can't say how easy or complete it is.

Related

How to debug SocialEngine through an IDE

I've downloaded SocialEngine source code, added few plugins to the website I'm testing.
Now, I'm trying to customize the plugins' and SocialEngine's code to fit my use cases.
How can I make a change to the source code of any of these plugins through Eclipse and reflect that on my website? I want to be able to debug the source code from Eclipse.
I understand that I need to create a module through SocialEngine SDK and install it via the package manager tool, but, I've already got the module source code for the plugins I mentioned above. So, speaking of a full development IDE like Eclipse, how can I tweak this code and have it deployed to my website and debug through it as well?
Thanks!
For customizations, you should understand, the plugins releases upgrades and bug fixes. So, you should add your work in such ways, that you merge easily with those updates regularly.
For debugging you should understand and follow zend framework application, on which socialengine is built.
Would be better, if you ask specific issues you are having in development.
Then, you would have better answers with insights.
Maybe this is helpful, for now.

what tools use for GUI/functional testing of Eclipse RCP apps?

We are developing RCP Eclipse based application,currently for functional/GUI tests we use RCPTT tool although we are not fully satisfied with it.
What are the other options beside SwtBot for GUI testing (on multiplatform Linux/Windows)? Abby,TFTP,Jubula are discontinued or not maintained any more.
Since i cannot write a comment yet:
Jubula is still in development and maintainedgit repository. Bugs are fixed and new Features are implemented. The last release was from may 2017 but the next release is planned before eastern 2018.
The Jubula ITE(Integrated Testing Environment) can be used or the newer Java API in which you also could write tests with java.

How I deploy my libgdx project to HTML/JS using TeaVM

I recently created a libGDX project using vis-runtime version 0.3.4. As due to long build times and requirement for separate runtime-gwt project, GWT support was dropped in 0.3.3 version of vis-runtime.
Maybe TeaVM can be used as web backend, so I am looking for integration of TeaVM with vis-runtime library ?
Take a look of this project (integration of libgdx with teaVM) that uses Maven as build system not Gradle.
Any help would be greatly appreciated.
I created TeaVM backend for libGDX as a prototype. I have no time to maintain it and thought someone from libGDX community becomes interested and picks this project. No one did, so backend is not maintained anymore. You can ask question on libGDX community forums and may be you find someone who is interested in developing my prototype. From my side I can help with fixing bugs in TeaVM and telling how this or that thing works in TeaVM.
Regarding Gradle, there's no official support, but 3rd party plugin is available: https://github.com/edibleday/teavm-gradle-plugin. You can examine source code and see that it's easy to write one. You can even write your own Gradle plugin if you are not satisfied with this one. However, I think that supporting Gradle is a little more complicated task than just wring Gradle plugin. For example, IDE integration is also needed (i.e. IDE must import and setup project from build.gradle).

Share java and android sdk versions in intellij

We have IntelliJ project and module files checked into version control. They great, but if we switch java or android sdks, everyone needs to do something on their own machine (update the sdk, add it to IntelliJ, etc.).
I found http://leolabs.org/blog/making-intellij-portable/, which explains how to set up configuration paths in IntelliJ, which allows us to share things like SDKs. My current plan is to follow that guide and check the IntelliJ install directory into our version control so everyone can run it from there, and it will have sdks all set up.
The problem I see with this technique is then other options are shared as well. That's great for coding style (though you can make coding style project specific, so that's not a real win), but not as good for things like visible white-space.
So my question is: Is there a more granular way to share java and android SDKs and have IntelliJ correctly point to them? Thanks.
SDKs and Global Libraries are referenced in the project files by names, like 1.7 for Java or Android 4.2.2 Platform for Android SDK.
The easiest solution is to agree about the common names for the SDKs and ask all the developers to configure the SDKs using these names (needs to be done only once and when you have to switch to the new major version of the SDK).
This configuration allows the developers to have actual SDK installations in different locations and is also OS independent.
If you decide to share global IDE configuration files (like jdk.table.xml), all the team members will need to have SDKs installed in the same place and it will fail between different operating systems.

Netbeans 7.3 annoyances

I recently switched from Eclipse to Netbeans 7.3 and experiencing a lot of quirks and i'm wondering if anyone else experienced them and/or got a solution. Because of these 'problems' i'm considering switching back to Eclipse again but i'm in doubt because NB has a lot of good things too !
These are the quirks:
when creating a new Java class, and make some typo's e.g. somewhere in a method, NB does not recognize / display the errors directly, but after a very long wait or a restart of NB.
This also happens to existing classes.
background scanning tasks is sometimes stuck at 100%
code completion does take forever. Don't even think about refactoring or renaming a class because it takes >3 minutes to scan the classpath (why, it's a new class for crying out load)
hot-deployment: changes are not always synchronized correctly with the (Glassfish) server.
Sometimes a complete undeploy and deploy is needed to reflect the changes made in the source.
NB manipules my pom.xml and glassfish-web.xml: it adds a deploy hint to the pom.xml and also changes or removes the context-root in the glassfish-web.xml. Please stop doing this!
Why o why can't i do a 'Fix imports' on my entire project. You can do a 'organize import' on the entire project, but this won't add the missing imports. See http://netbeans.org/bugzilla/show_bug.cgi?id=167031#c2
Running NB 7.3 on Windows XP, 3GB RAM, 2+GHz cpu
The project is a Java 7 maven project containing 12 modules / sub projects
I strongly recommend that you DO NOT attempt to install the ScanOnDemand plugin. It completely trashed my Netbeans, forcing me to use the Task Manager to kill the process. No existing projects were found; they were all listed as "unrecognized project; missing plug-in?". I had to re-install Netbeans.
One thing to look for is max heap allowed. Try adding "-J-Xmx2000M" to the Netbeans startup.
ref: Setting Heap Size
I suggest stick to your favourite IDE. Eclipse is still popular and Juno packages are doing good and Kepler is already available. You can try around latest packages.
IntelliJ IDEA looks better than other Java IDEs (light weight, faster, nice integration with SCM(source configuration) tools, possibility of easy cloud deployment, except that if you have freedom to choose your IDE whether you are part of a big/small teams, Otherwise there is no need to shift from one to other.
IntelliJ is the first IDE to give nice in-built support to Play framework
Google Android ADT is completely moving towards AndroidStudio based on community version of IntelliJ IDEA for faster and better GUI and app development.
As a Java developer it is not bad to try the other IDE to do some experiments or for any reason it strikes your mind.
Eg: Netbeans comes with sample apps in Java EE,Java7/Java2EE which looks better, nice examples for websockets, Servlet3.0, NIO examples etc,...but just try it or just ignore if it does not work. It is very easy to generate Entities from Database Tables, creating REST Endpoints in NetBeansIt may come with lot of in-built plugin-support for various java frameworks like RESTful webservice frameworks, JSF2.x, Primefaces3.x, SpringMVC, Struts but you may not sure to use the same version of framework. Some plugins may not work sufficient according to your business needs. Even if you okay with existing version it is not very friendly to develop Rich real-time UI development because Netbeans with Primefaces, instead you need to manually create XHTML templates.
Netbeans comes with nice support for Glassfish and tomcat, (other servers I am not sure but support is in-built). You can remote deployment with ease. Netbeans learning tutorials on JavaEE nice for beginners in the subject.
Netbeans also available as zipped bundle, hence no need to install even on Windows machines.
Eclipse has got better support with Java RoboCode learning tool (initiated by developed by IBM long ago.).
Also Netbeans comes with nice support for HTML5, Groovy, PHP, C++ as well (according to posts by users community, because I did not use them).