Minimum tech for Android development

So you want to create an app and release it to one of the App Stores? That’s a great idea, however you will need a few basic tools and tech in order to develop and release your app.

Every platform’s app store is different so which you decide to focus on will depend on why you are making this app.

For now I’ll assume that your focus is to develop and release for Google’s Play Store and Android development (for the minimum tech needed for iOS development read Minimum tech for iOS development).

For Android development you’ll need the following:

There are tools that you can use to emulate how your app will look and function, like using the Game window in the Unity editor. However, I would advise to test on physical devices when you develop an Android app because of the multitude of devices with different screen sizes and resolutions.  This is sometimes known as fragmentation across Android devices.  But bear in mind that it’s not practical or possible to test your app across every Android device.   By picking a cross section of the most popular devices (with the most popular  screen sizes) and using these as the bare minimum you should have sufficient test coverage for your app.  As long as you fix any issues that you find during testing, when you release you should be more confident that your app won’t run into many fragmentation issues.

Setting up Android SDK tools on your Mac

This short guide focuses on how to set up Android SDK tools on your Mac development machine when building Android projects using Unity.

Note: At the time of writing, the current Android version is 5.0 (Lollipop) and the OS X version is OS X 10.10 (Yosemite). 

In order to set up your Mac to build Android apps using Unity you can run through the following steps.

1. You will need the minimum spec required

Tip: Install the Java update from Apple’s official website as this seems to work more reliably when setting up Android SDK tools on Macs

2. Install the most recent version of the Java Runtime Environment (JRE)

3. Install the most recent version of the Java Development Kit (JDK)

4. Download the SDK tools only. These are to be used with standalone IDEs like Unity and NOT the Android Studio.

5. Unzip the files and put in a useful place (preferably your home directory).  Since the Mavericks OS X update the home directory has been hidden. If you want to locate the home directory to place these files here see this solution but this isn’t necessary so just put unzipped file in a sensible location that you can access in future.

6. Open a Terminal (Finder > Applications > Terminal) and navigate to the tools/ directory in the Android SDK, then execute android sdk.

e.g. /myuser/homedir/location/android-sdk-macosx/tools/android sdk

When you open the SDK Manager for the first time, several packages are selected by default. Leave these selected, but be sure you have everything you need to get started, the basic file needed from each Android version is the SDK tools.

For more information see Adding SDK packages.

4 Reasons for using Macs to develop Android apps

As you can develop Android apps on inexpensive desktops and laptops running Windows most people just use these to build their Android apps.  If you’re a small business owner, just starting up your business or a hobbyist it’s a logical financial choice. After trying to maintain both for a while myself I have resounded myself to the fact that getting my MacBook set up as my sole development machine is the only effective way forward at this time.  There are a few reasons why you may choose to use a Mac for Android development too. Here are mine.

Become more efficient

If you are using a Mac to develop iOS apps at the same time maybe you want to become more efficient and use your time more effectively.  Using a single development machine you can streamline your processes of updating tools as you will only have one machine to maintain.  This could be for e,g. Java updates, Unity updates, SDK updates etc

Only one machine to invest in

As well as helping to free up some more time, having only one machine will be more cost effective too.  You will have more funds to put into buying other development tech like devices to test on or licences for software as you won’t require multiple copies per machine anymore.

Only one machine to carry around

Demos to anyone outside of your team may require you to have a small range of tech on hand. Not many people would carry both Dev machines to demos, but in the likelihood that something went wrong or you were missing an important file you may carry both with you.  If you now only have to carry one machine around you’ve now cut down your baggage by about a third of the weight. This also means you should be able to reduce the insurance costs of items you carry around (this may only be applicable with certain UK insurance companies).

Separate work from play

If you also use your laptop for gaming, you now have a dedicated gaming machine separate from your business machine.

Minimum tech for iOS development

So you want to create an app an release it to one of the App Stores? That’s a great idea, however you will need a few basic tools and tech in order to develop and release your app.

Every platform’s app store is different so which you decide to focus on will depend on why you are making this app.

For now I’ll assume that your focus is to develop and release for Apple’s App Store and iOS development. For this you’ll need the following:

  • iOS developer program membership which costs $99 per year
  • An Apple Mac laptop or desktop computer (depends on the make, model and spec of the machine)
  • The latest version of XCode installed (free)
  • An iOS device to test on (depending on the target device for your app, whether you want a new one or not will determine what this will cost)

The last item is actually not an essential one for development as XCode does provide iOS emulators of devices.  However, emulators aren’t always reliable.  It’s always good to get into the habit of testing your app on physical devices to ensure your graphics are all at least acceptably positioned on actual devices.  It will increase the initial cost of your development setup  but remember you’re purchasing tech and tools that can be used multiple times over many projects so these are an investment.

8 great Unity resources to aid you with 2D development

Creating a 2D project in Unity is very similar to creating a 3D project.  Therefore getting a your head around the basics of the engine is just as important when embarking on a 2D project within the engine.

Here’s a list of sites offering free and paid courses to help you gain the fundamentals needed to begin your project.

  1. Unity Magic
  2. Udemy
  3. Unity Cookie
  4. UnityCoder
  5. Unity3dStudent
  6. LearnUnity3D
  7. Code Project
  8. Unity Tutorials by Infinite Ammo

Top 6 resources to learn Unity 2D

What is Unity 2D?

Unity 2D is the official native 2D toolset released with version 4.3 of Unity.  This version was released in late August 2013.  As many developers utilised the engine for 2D development as much as for 3D it was a welcome addition to the vast array of tools that are available in the engine already.

Here’s the top 6 sites and books that I have found that will help you get started with 2D development using Unity’s 2D tools.

  1. Official Unity Live Training
  2. Official Unity 2D Tutorials
  3. Learn Unity 2D
  4. Unity 2D Game Development by Example Beginner’s Guide
  5. Unity 2D Game Development
  6. Mastering Unity 2D Game Development

What is a Full Stack Developer?

I like to read job specifications for the roles that I’m working within.  By doing this I can see what skills are being required in the ever changing field that I’m working in.  As I read more and more job descriptions of software developers I’ve found the term “Full Stack Developer” coming up time and again.

So what is a Full Stack developer?  I have come to the conclusion that a full stack developer is a software developer with a familiar knowledge of a wide range of tools and technologies and is capable of using and implementing all that they know whether this be back-end or front end development.

Knowing a bit of everything means that you can pick up work from others quite quickly without having to spend time learning the basics.  And although they don’t have a deep understanding of any tool they are capable of implementing a solution from concept to production and are able to anticipate problems that may arise.

For more information read this post on Codeup.

Web DAV and Http Attributes

What is WebDAV?

The element contains the settings that configure Web Distributed Authoring and Versioning (WebDAV) for Internet Information Services (IIS) 7.

WebDAV is an Internet-based open standard that enables editing Web sites over HTTP and HTTPS connections. WebDAV yields several advantages over the File Transfer Protocol (FTP), the most notable advantages are more security options and the ability to use a single TCP port for all communication.

Why does it interfere with http attributes?

The http attribute requests mean that only methods using those specific attributes will affect certain methods e.g. a method with a [HttpPost] attribute can only be called using a POST call. All other methods without this attribute will be ignored.

Note: Methods without any attribute will default to using a [HttpGet] attribute.

Using more than one attribute

You can assign multiple attributes to one method if necessary. To do this you can use [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]

Can it affect every site set up on IIS?

Yes, if they use these attributes.

Any other issues?

After speaking to a senior developer, changing the config file of a site to accept [HttpDelete] isn’t the safest thing to do and that this affects routing too. Not all browsers may accept this change so sites may be blocked. So this is not the best solution.