Alcatraz plugin for Xcode

On March 13, 2014, in iOS, new, objective-c, technical, xcode, by Axel

Alcatraz is an open-source package manager for Xcode 5. It lets you discover and install plugins, templates and color schemes without the need for manually cloning or copying files. It installs itself as a part of Xcode Download the plugin https://github.com/supermarin/Alcatraz Did you like this? Share it:

Alcatraz is an open-source package manager for Xcode 5.

It lets you discover and install plugins, templates and color schemes without the need for manually cloning or copying files. It installs itself as a part of Xcode

Download the plugin
https://github.com/supermarin/Alcatraz

Did you like this? Share it:
 

TestFlight replacement for Android

On February 25, 2014, in new, by Jan Pannecoeck

The mobile app testing platform TestFlight became one of the major players in their field. A lot of mobile developers have been using TestFlight, that supported iOS as well as Android, to distribute their apps towards their testers. On the 21th of February 2014 Apple announced acquiring Burstly, the company behind the testing platform. Unfortunately […]

The mobile app testing platform TestFlight became one of the major players in their field. A lot of mobile developers have been using TestFlight, that supported iOS as well as Android, to distribute their apps towards their testers. On the 21th of February 2014 Apple announced acquiring Burstly, the company behind the testing platform. Unfortunately together with this announcement, Burstly also announced TestFlight will no longer support Android. At JArchitects, we have been using TestFlight on several projects for both iOS and Android test distribution. Luckily for all the Android developers, there are plenty of other solutions one could use to replace TestFlight. This blogpost will highlight some possible replacements…

Send by e-mail or website

To distribute an Android app, it needs to be signed with some kind of certificate. Currently, this can be done with a self-signed certificate, this means that everybody can create such a certificate and everybody can distribute apps signed with a certificate. Since an Android app is distributed as an APK file, one could easily create an APK file, sign it with a certificate and send it to all the testers via e-mail or put it available on your website. The only thing the users would have to do is tell Android to allow installs from 3th party resources.

Using this solution, you’ll not only will have to maintain a website or e-mail, you’ll also have to provide some kind of feedback functionality yourself. Any information about crashes, bugs, … can only be traced based on input from your testers.

HockeyApp

A proper replacement for TestFlight, which will also keep on supporting Android, is HockeyApp. This is a (paying) service which is supporting most of the features TestFlight is also providing: distribution, crash-reports, analytics and feedback from your user. Providing also apps for iOS, Android, Mac and Windows, HockeyApp is a great (but expensive, keep in mind TestFlight is free) replacement for TestFlight.

Google Developer Console

There are probably some others providing a proper replacement for TestFlight, but the one everybody should start using is of course Google’s build in support for alpha and bèta testing. Last year at Google I/O, Google announced they will add support for alpha and bèta testing. Within the Google Developer Console it became possible to distribute your app, towards a limited group of developers.

The major benefit with this solution is that you’ll be working the same way as you will while releasing the official version of your app and also Crash-reports will be gathered with the Developer Console. A smaller drawback, as we are using a Google product, is that selecting your testers will be based on Google+ Communities or Google Groups. This makes it a little bit more complex to set up your test group.

Of course Google Developer Console isn’t covering all features TestFlight is providing you. For example, Google isn’t providing a user-friendly solution for capturing users feedback. What you can do is provide an e-mail address or website to allow your testers to provide you with some feedback. Furthermore, more extensive analytics about your app aren’t captured by Google. Therefore you’ll have to use other tools like Crittersism

 

As you will have noticed by now, TestFlight ending its support for Android isn’t a major fallback. Instead it is an opportunity for all Android developers to start using other tools. In case you would have any question or are having problems with your apps, don’t hesitate to contact us. We are always ready to help you!

 

 

Did you like this? Share it:
Tagged with:  

JazzHands Library for iOS

On February 13, 2014, in new, by Axel

Jazz Hands is a simple, keyframe based animation framework for UIKit. Animations can be controlled via gestures, scroll views, kvo, or ReactiveCocoa. Jazz Hands is used extensively in IFTTT for iPhone, most famously in the app intro. https://www.cocoacontrols.com/controls/jazzhands Did you like this? Share it:

Jazz Hands is a simple, keyframe based animation framework for UIKit. Animations can be controlled via gestures, scroll views, kvo, or ReactiveCocoa.

Jazz Hands is used extensively in IFTTT for iPhone, most famously in the app intro.

https://www.cocoacontrols.com/controls/jazzhands

Did you like this? Share it:
Tagged with:  

Project Jigsaw and Compact Profiles

On November 13, 2013, in devoxx 2013, by Sven

Today Mark Reinhold, Chief Architect of the Java Platform Group at Oracle, gave us an update on Project Jigsaw at Devoxx 2013. Project Jigsaw aims to create a scalable standard module system for the Java platform. The project’s high level goals are: scalability performance security The release of Project Jigsaw is scheduled for Java 9. […]

Today Mark Reinhold, Chief Architect of the Java Platform Group at Oracle, gave us an update on Project Jigsaw at Devoxx 2013.

Project Jigsaw aims to create a scalable standard module system for the Java platform.
The project’s high level goals are:

  • scalability
  • performance
  • security

The release of Project Jigsaw is scheduled for Java 9.

Notes on Java SE 9:

  • the sun.* and *.internal.* packages will not be available anymore
  • rt.jar and tools.jar will no longer exist

So be aware that the arrival of Jigsaw may break existing projects!

 

In the meantime, Compact Profiles will be introduced in Java SE 8 as an interim solution.

A Java SE Profile is a well-defined subset of the Java SE Platform. Profiles allow applications that use just part of the Platform to run on resource-constrained devices. An application that, e.g., does not use the Swing/AWT/2D graphics stack can achieve considerable space savings by running on a Profile that does not include an implementation of those APIs.

Oracle currently envisions defining three Profiles, arranged in additive layers so that each Profile contains all of the APIs in Profiles smaller than itself. Each Profile will specify a specific set of Java API packages; the corresponding JRE will include, to the extent feasible, only the classes, native code, and other resources required to support those APIs.

In the latest draft the Profiles are named compact1, compact2, and compact3:

  • compact1 (= core, Object, String, I/O,…) ≈ 11MB
  • compact2 (= compact1 + jdbc, rmi, jta,…) ≈ 16MB
  • compact3 (= compact2 + auth, naming, prefs,…) ≈ 30MB
  • full JRE (= compact3 + crypto, corba, jaxws,…) ≈ 54MB
Did you like this? Share it:
 

CocoaPods dependency management

On April 30, 2013, in dependency management, iOS, new, objective-c, xcode, by Axel

Cocoapods is a dependency manager for Mac and iOS projects built on Ruby and based on the Ruby community’s “rubygem bundler”. Each “pod” has a “spec” that is utilized in order to know how to integrate a given component with your project and resolve any dependencies your project may have with other libraries. An introduction […]

Cocoapods is a dependency manager for Mac and iOS projects built on Ruby and based on the Ruby community’s “rubygem bundler”. Each “pod” has a “spec” that is utilized in order to know how to integrate a given component with your project and resolve any dependencies your project may have with other libraries.

An introduction to cocoapods can be found here

http://nsscreencast.com/episodes/5-cocoapods

http://nsscreencast.com/episodes/28-creating-a-cocoapod

Also check the blog of Ray Wenderlich

http://www.raywenderlich.com/12139/introduction-to-cocoapods

 

What is a Spec?

The basis behind how cocoapods is able to function is on a project’s “podspec”. Podspecs are created by maintainers of a project (or sometimes just other developers who want to use a component as a pod) and submitted to a public repository of specs in an organized git repository on github.

Specs identify everything about a library or component that needs to be performed before you can properly use it in your project. This includes everything from supported platform, ARC-readiness and required frameworks to other C flags that might need to be switched on.

 

Semantic Versioning

Cocoapods highly suggests using semantic versioning to version your cocoapods. Without semantic versioning, it becomes much more difficult if not impossible to resolve some cross-dependencies between similar pod dependencies in your project, if any exist. All that was very complicated to say – use semantic versioning (e.g. “v1.1.0”). Tag your code in your repository with a tag corresponding to the version number of your component (for v3.0.0 of your component, tag your code 3.0.0).

Did you like this? Share it:
 

New UIAutomator testing

On November 18, 2012, in new, by Axel

In addition to unit testing the individual components that make up your Android application (such as activities, services, and content providers), it is also important that you test the behavior of your application’s user interface (UI) when it is running on a device. UI testing ensures that your application returns the correct UI output in […]

In addition to unit testing the individual components that make up your Android application (such as activities, services, and content providers), it is also important that you test the behavior of your application’s user interface (UI) when it is running on a device. UI testing ensures that your application returns the correct UI output in response to a sequence of user actions on a device, such as entering keyboard input or pressing toolbars, menus, dialogs, images, and other UI controls.

Functional or black-box UI testing does not require testers to know the internal implementation details of the app, only its expected output when a user performs a specific action or enters a specific input. This approach allows for better separation of development and testing roles in your organization.

One common approach to UI testing is to run tests manually and verify that the app is behaving as expected. However, this approach can be time-consuming, tedious, and error-prone. A more efficient and reliable approach is to automate the UI testing with a software testing framework. Automated testing involves creating programs to perform testing tasks (test cases) to cover specific usage scenarios, and then using the testing framework to run the test cases automatically and in a repeatable manner.

Read more

Did you like this? Share it:
Tagged with:  

Objective-C Categories

On July 13, 2012, in iOS, iphone, by Axel

Categories are one of the most useful features of Objective-C. Essentially, a category allows you to add methods to an existing class without subclassing it or needing to know any of the details of how it’s implemented. This is particularly useful because you can add methods to built-in objects. If you want to add a […]

Categories are one of the most useful features of Objective-C. Essentially, a category allows you to add methods to an existing class without subclassing it or needing to know any of the details of how it’s implemented.

This is particularly useful because you can add methods to built-in objects. If you want to add a method to all instances of NSString in your application, you just add a category. There’s no need to get everything to use a custom subclass.

For example, if I wanted to add a method to NSString to determine if the contents is a URL, it would look like this:

#import <Cocoa/Cocoa.h> 
@interface NSString (Utilities) 
- (BOOL) isURL; 
@end

This is very similar to a class declaration. The differences are that there is no super class listed, and there’s a name for the category in parenthesis. The name can be whatever you want, though it should communicate what the methods inside do.

Here’s the implementation. Keep in mind this is not a good implementation of URL detection. We’re just trying to get the concept of categories across:

#import "NSString-Utilities.h" 
@implementation NSString (Utilities) 
- (BOOL) isURL { 
      if ( [self hasPrefix:@"http://"] ) 
          return YES; 
      else 
          return NO; 
  } 
@end

Now you can use this method on any NSString. The following code will print “string1 is a URL” in the console:

NSString* string1 = @"http://www.jarchitects.be"; 
NSString* string2 = @"Jarchitects"; 
if ( [string1 isURL] ) 
   NSLog (@"string1 is a URL"); 
if ( [string2 isURL] ) 
   NSLog (@"string2 is a URL");
Did you like this? Share it:
Tagged with:  

AngularJs framework

On July 13, 2012, in new, by Axel

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.   For more info Visit the AngularJS website Basic example <html ng-app="project"> <head> […]

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.

 

For more info Visit the AngularJS website

Basic example

<html ng-app="project">
<head>
    <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
    <script src="http://code.angularjs.org/angular-resource-1.0.1.min.js">
    </script>
    <script src="project.js"></script>
    <script src="mongolab.js"></script>
</head>
<body>
    <h2>JavaScript Projects</h2>
    <div ng-view></div>
</body>
</html>
Did you like this? Share it:
 

Co2 Tax calculator 2012 APP

On February 12, 2012, in iOS, iphone, by Axel

Vandaag werd onze ‘VAA tax calculator’ gereleased in de apple APP-store. Met deze app krijgt u in een oogopslag zicht op de te betalen voordeel alle aard op uw bedrijfswagen.   U krijgt ook dadelijk het verschil te zien met 2011 alsook de kost voor werkgever en werknemer worden duidelijk weergegeven. Deze app wordt u […]

Vandaag werd onze ‘VAA tax calculator’ gereleased in de apple APP-store.

Met deze app krijgt u in een oogopslag zicht op de te betalen voordeel alle aard op uw bedrijfswagen.   U krijgt ook dadelijk het verschil te zien met 2011 alsook de kost voor werkgever en werknemer worden duidelijk weergegeven.

Deze app wordt u gratis aangeboden door JArchitects en is nu beschikbaar voor iPhone en iPad

Nieuw in versie 1.1

Er wordt nu ook rekening gehouden met de leeftijd van de wagen voor de berekening van het voordeel alle aard. Volgens een recent wetsvoorstel zal de aankoopprijs met 6 procent per jaar dalen tot de bodemgrens van 70% bereikt is.

 

Did you like this? Share it:
Tagged with:  

Xcode Tips and Tricks – Tips 1 to 10

On January 12, 2012, in iphone, new, by Axel

Tip #1 – Split Editor View Vertically If you like to have multiple code windows open at once, the Split Editor option is your friend (see the little square grid icon shown below). By default, the windows are split horizontally. If you prefer to view your code side-by-side (nice for comparing), here’s how to tell […]

Tip #1 – Split Editor View Vertically

If you like to have multiple code windows open at once, the Split Editor option is your friend (see the little square grid icon shown below).

By default, the windows are split horizontally. If you prefer to view your code side-by-side (nice for comparing), here’s how to tell the split to be vertical

Hold down Option key when clicking the Split Window icon
Tip #2 – Comment Out a Block of Code
You can quickly comment out a block of code as follows:

  1. Select one or more lines of code to comment
  2. Command-/

To uncomment a block of code, repeat the steps above.
Tip #3 – Toggle Between .h and .m Files (aka Switch to Counterpart)
Within your current code window, you can swap between the .h and .m file as follows:

  1. Command-Option Up-Arrow

Tip #4 – Map Keys to Actions (Key Bindings)
The Switch to Counterpart tip above is a real time saver. However, I often find that if I map logical key-strokes to actions I’m much more likely to get into the habit of using them. For example, I mapped the Switch to Counterpart to Option-S, as in Swap or Switch.

Here’s how to set key bindings in Xcode

  1. From the Xcode menu choose Prefereces
  2. Select Key Bindings
  3. Click on one of the Actions in the list
  4. Tap on the Keys column on the right
  5. Enter the keystroke you want to map to the action
  6. Click Ok to save your change

 

Tip #5 – Jump to API Documentation

Showing relevant API documentation for anything within the SDK(s) is as simple as:

Option Double-Click on relevant code
Tip #6 – Traverse File History
As you open and edit various files, Xcode keeps a history list of your actions, not unlike when using a web-browser. You can move through the list using the directional arrows as shown below:

The keystoke equivalent for the above is:

  1. Option-Command Left-Arrow goto to previous file
  2. Option-Command Right-Arrow goto to next file

 

Tip #7 – Set a Bookmark

I can’t imagine coding without having the option to set a bookmark as a placeholder for what I’m working on. I do this regularly when I need to segue to another file to find a snippet or otherwise poke around outside the current file I’m working on.

Setting a bookmark is as simple as:

Control-D
Enter a name for the bookmark
Tip #8 – Jump to Bookmark
There are two options to jump to a bookmark. First, you can select the bookmark icon in the upper right corner of the Editor window.

You can bring up the same menu as shown in the above figure using this keystoke:

  1. Control-4

 

 

Tip #9 – Indent / Un-indent Code

You can indent a line of code or a selected block of code as follows:

Command-[ move code left
Command-] move code right

The above works regardless of where you are in a line of code, in other words, you don’t have to be at the beginning of the line.
Tip #10 – Zoom Editor

You can toggle between Detail view and Editor view by clicking the Editor button as shown here:

The keystroke equivalent of the above is:

  1. Shift-Command-E
Did you like this? Share it:
Tagged with: