Publishing Android App in Google Play. Things to know ahead!

Publishing an Android app in the Google Play, is a trivial task.

There are, though, several small things that you should bare in mind before you start doing that. These small things, if neglected, might fail your, otherwise smooth experience with Google Play.

Kind of free

Firstly, to publish an app you need Google Developer account. And that costs money. Exactly 25 EUR. Plus a small bank transfer fee. Creating your Google Developer account might be attached to a new Google username, in case you need it for your company, or you could link it to your existing one. It’s up to you. In both cases the display name for that account is customizable, so don’t worry. The very registration takes a minute and the payment is instantly finished.

Point of no return

Before you publish your app you have to know one thing. Once you have published any of your apps, no matter if Alpha/Beta or a Production, you can’t delete this app any more. You can “Unpublish” it from the Play store, thus making it invisible for anyone, but you can’t remove the app package and delete it from the store.

Merchant or Developer

Second thing before you go into android development regards payment. Anyone from any country can register as a Developer, but if you want to sell apps for real money, you need a Google Merchant accound, which is only allowed for several countries, like USA, UK and etc. Bare that in mind when creating the account as regular Dev. accounts are only allowed to publish Free apps and are not able to take any kind of payment through Google’s system. Using your own payment methods for in-app billing is still possible, though. But the free-app limitation stays.

Alpha/Beta/Production

One of the recent Google improvements in the Play system is the availability of Alpha and Beta versions, prior to Production. This is awesome, as you can add an alpha version of the app, available to only a limited circle of people. Any app can be “promoted” to Beta or Production at any time. You can even add an app directly as Beta. It’s all up to you.

Regarding the very application. A general rule in the app life cycle is that you can’t upload a new APK that’s with the same version as the current one. No matter if you’re putting a newer Alpha version or a Production one. It is not  allowed, so think smart what version you first put as an app version, especially if you plan to go through several Alpha/Beta stages.

Along with the general requirements of the app description, name and etc. there is one thing that you’ve most probably not thought of. A 512×512 version of the app icon. Resizing the logo from the app does not look nice. Believe me!

Attention!!!

Chose your app namespace correctly and wisely as once you upload an APK you’re no longer able to change the namespace in a case of code refactor!!! Bare that in mind as Google use the unique namespace as an identifier when doing alpha/beta testing.

Once you think you’ve done all required steps, (which are indicated as a basic check-list)  be sure to make final checks on the content. Once you push “Publish” you can’t delete the app and start all over. All you will be able to do is to unpublish it from the Google Play. But it will stay on your Developer Console list as a mark of the shame!

A thing, that actually annoyed me is that the Developer Console is not available as a link in the Google Play. I personally would prefer a link to it on the Play, but… anyways.

You are not your own alpha tester!

As I mentioned before, your Developer account is not connected to any Play account of yours. So when adding people for alpha/beta testing (via G+ communities for example) make sure you’ve added yourself there :)

Once published to the G Play the app is updated around the servers within 24 hours, although they say only “several hours” so be patient. If you do Alpha release, do not expect to see the app in the store, as it is visible only through a private link, that you should share with your Alpha testers.

These small facts to take in mind once you go down the google road will save you some nerves!

If you have any other useful tips for the Google Play, do comment below :)

3  

Self motivation issues at work

Lets have an honest star!
I am lazy!

Belive me. Sometimes I’m so lazy, that I get even bored of staying in bed. I have my moments where I’m eager to code and I’m so much enthusiastic, but sometimes I just want to die.

What does it all have to do with work? Well, everything!
You spend more hours at your working place than you do awake at home, so you should do something meaningful while there. Of course you’ve got those days that you just want it to go away. But as in general you want to be doing SOMETHING. Sometimes there’s that boring stuff to do, sometimes there’s something interesting to do but either you aren’t in the mood, or there’s something else buzzing your mind that distracts you from your main goals.

So how to deal with it?
I’VE GOT NO IDEA!

Self-motivation is one of the hardest quests ever. It is hard because YOU have to make YOURSELF do somethig “BORING” instead of the thing YOU’D LIKE! It’s literally the task to pull yourself out of the water by your hair!

It’s always those games on the net, it’s always that more interesting task in the queue, that you’d rather do, instead of that boring stuff. If there’s something you don’t fancy and there is nothing else to do, you MAKE something UP! That’s the problem of your mind.

One of the things that could motivate you is your environment. If you go with the “nerds” in your office, rather with the cool guys that are in the office just to cover the working hours, you have a better chance of finding yourself into a motivating environment. If most of the people around you talk about work, and how they delt with “that boring task” and how they had time for some research, then pretty soon you’ll find yourself trying to do the stupid stuff faster so that you can compete with the others. That’s natural! And vice versa: if you spend most of your breaks with the shiny guys that talk about cars, and houses, and going out, and surfing… you find yourself going to work for the sallary, waiting the day go by. No general interest in the work done. No enthusiasm for any extra effort.

Of course balance is everything. Read articles and comment with other people, but do not spend too much time on it. Make it happen naturally.

One of the best ways to make your environment comfortable for work is actually to make it look less like work. That’s the big thing here. Noone likes work. But if you make your office shiny. If you get the habbit of having a beer with the colegues at lunch. You may be even organize a tech friday or so, you’ll have so much other things to do, aside of your real work, that you start enjoying all your stay at the office and the boring stuff gets just a small insignifficant part of the day. As you spend time with the things you like best, you’ll find recognition for the things you do and things will go better.

In general, make yourself feel like you’re not working and you’ll get all done :)

This article might have some edits so stay tuned and COMMENT! :)

0  

Flexible development environment with VirtualBox

virtualbox-logo

While I do mostly WEB development I sometimes need an Android environment to play around with. Moreover development is a hobby for me, so I have environments on my workplace, on my home desktop and even on my laptop, which is kind of tricky to support. Imagine what could cause you a single renstallation of the OS. Not to mention that your HDD gets shredded into several folders and sub-folders. It is not a rarity for you to need a second OS. As I am a Linux guy I feel more comfortable with Ubuntu, but as the other people using my home computer are not that familiar with Linux systems I needed both Linux and Windows at the same time.

So I figured out that moving a development environment on a virtual machine might be a solution. Thus I have both a normal intact simple OS for movies, browsing and games, and another one full of developers toys.

In general what I like for this way of work is:

  • You can make a backup of the dev machine
  • Single-machine for every environment that you need
  • Easily set-up on a new hardware.
  • Dual-OS

 

To the point…

For this task I chose VirtualBox . It is a lightweight, freely available and very easy to maintain virtual machine, supporting different host and guest OS. For a host OS I choose Win7, as everyone is familiar with it. This gave me the capability to easily close all my development apps in a matter of seconds and for example to go for a game or a movie. When I need to continue my work, it is a matter of seconds for the VirtualBox to resume its work, from the very point I left it, with all my windows and tools in the state I left them. Very nifty feature when you really need to stop for a while.

So, I installed VirtualBox and created a new machine. I gave it the recommended amount of video memory, about 1.5GB of RAM and about 80GB of HDD. I don’t think for PHP you might need any more space, because having 2-3GB for the OS and another 1GB for your Dev tools, leaves you with plenty amount of space, taking in account that all you’ve got is text files and images. But as you all know this is a matter of personal preference. A nice way of configuring the machine is to leave the created Hard Drive dynamic, so at the beginning the file, representing the drive would be just a couple of GB, instead of the full HDD capacity.

For the guest OS I choose Lubuntu. A pretty lightweight version of Ubuntu, with the LXDE integrated as Desktop Environment. If you prefer you can switch to one of those “window managers” that offer you verry basic X environment and that leave all to you. While lightweight, Lubuntu still has all the ubuntu configuration tools.

A vital thing is installing the VirtualBox tools. Generally you mount it as a usb drive via the machine’s menu and access it via command line. These tools install a virtual driver for the display and other stuff, that make the virtual machine go full screen and utilize the real hardware better. Without these drivers you go 1024×768 or so and with poor  performance and integration options. My first attempt of installing it resulted in “Unsupported X window version” error or something like that. Apeared that I need the kernel module building tools (DKMS) so that the shell script, used to install drivers could build the modules. You will also need kernel sources and Gnu C compiler. For the later two there are console messages so no worries.

At this point you have a stable running Linux distribution. If from this point you’re going to create multiple different environments out of it, a good idea is to clone the HDD image so that you can easily start your second environment with the working OS as a start.

Some development environments are not that appropriate for deploying on a virtual machine, where you have intensive CPU utilization. A good thing would be if you have a quad-core CPU so that you can spare 3 out of the 4 cores for the virtual machine and leave 1 CPU core for the host OS. This will increase performance issues when you deal with JAVA for example.

For environments with smaller requirements, for example my PHP environment 1 out of 2 cores, 2GB RAM and 30MB video ram, with installed VB tools works flawlessly, without noticing if you are on a virtual machine or you’re running a guest OS.

My Android environment is still under fine-tuning but the same basic resources work for it good. As most of my PCs are with either P4 of  Intel i3 CPU with 2 cores, I find a little lack of CPU power, but you can live with it. Only my notebook gets a little hot, but you can live with that.

As always, I would appreciate you sharing how you organize your working environment. Do you use virtual machines? What tools do you use?

Thanks a lot for reading,

2  

PHP IDE: NetBeans vs. Eclise; // The battle for Middle Earth

A little preface…
I was doing PHP for about 9 years, until I switched to JAVA last year for a breath of fresh air. I was just curious how they do things… So generally I was writing crappy code for a pretty long time. I switched between tons of IDEs, cursed and sweared most of them using pretty ugly and stinky words. My last year was under the motto “How could they charge for IntelliJ IDEA license”, but that’s another story. During that period I started looking for a best IDE for PHP having only one requirement: I WANT IT FREE.

Disclaimer: those of you who mention Emacs, vi or any derivative, will be banned by IP. Seriously. Geeky times where you should be the only one that can run your editor are OVER. There are many editors that support PHP syntax highlighting but those won’t be considered either. Notepad++, being my best-choice notepad app, is not an IDE. 

From the paid editors I have only used Zend studio and it is pretty good one. If you would spare $300-500 it will pay off, but I personally would buy it only if I have some corporate money for that.

In general if you’re ready to go and experiment, a good start (and a main information source) is this page in Wikipedia.

An IDE should be able to:

  • color your code
  • analyze code and suggest you with proper auto-complete
  • debug your code
  • help you mange your versioning systems

Here I will have a look at NetBeans and Eclipse with PHP Development Tools, and will try to outline my likes and dislikes about them. I tested these IDEs for about a month trying them during my get-to-know hours with the Symfony and Zend Frameworks. Both are complex enough to need a powerful IDE for you to work well… so…

NetBeans

My first editor of choice was NetBeans. A lot of my fellow-coders used it and they’re pretty satisfied with it, so I gave it a try.

Installation was very easy and fast. You go to their site, download the latest version and run the installer (there is one for both Linux and Windows, so you just click through the installation). And that’s pretty much it. Once you’re done you have a fully-functional IDE, supporting PHP, HTML, CSS, Javascript and loads of others. NB has a pretty simple and logical interface, which I liked as I am a fan of the KISS philosophy and thus the squarish and gradient-less interface become my favourite.
NetBeans has also a built-in SVN support, which will make you start coding in just a couple of minutes. You can directly checkout project from SVN and start breaking it.

NB supports all king of neat PHP features as function params suggestions, class look-ups and all the goodies you need. There is even a setting that tells if you point to a class, whether the full path of the class should be used or you want just the name (reference to the namespaces in the latest PHP versions). What I did not like about the NetBeans was that there is currently no support of the USE directive in PHP. Once you try to extend a class with another one, you have to add the “use \Symfony\Security\Bundle\SecurityManager” code at the top by yourself, while Eclpse+PDT managed did not have this problem.

Coloring of the code is a good part of NB. You can customize any color as you like. There is even tons of color themes around the net, for example here, which you can import directly in the colors tab in the Settings window.

Debugging is very easy with Xdebug, which is pretty well integrated into the environment. What I liked is that once you enter a debug session, nothing in the IDE changes, only the watches show in a toolbox. You can jump, run into, step over and resume with ease. The problem is with the abscence of complex conditional breaks and stuff like that.

So my bottomline is

Pros:

  • Lightweight
  • Simple interface
  • Built-in support for SVN
  • Built-in color syntax highlighting for PHP, CSS, HTML, JS and etc
  • Decent function and class lookup
  • Simple debug interface

Cons:

  • Some class completions are lacking support for latest PHP stuff
  • Sometimes code-completion messes up and cant guess return value types

 

Eclipse+PDT

Eclipse is a platform for developing platforms. It has a basic interface which you can extend in unlimited ways.  Problem here is that you have to configure your environment all by yourself.

Installation here is a little tricky. You go to the PDT eclipse site and you’re offered a whole package of Eclipse with built-in PDT plugin (this redirects to the ZEND site). As an alternative you can add PDT to an existing Eclipse installation you have. The result is an archive file that you extract and start using.
All is good so far, if you don’t want to use SVN, because there is no built-in support for it (CVS ?!? only). So you have to add the current repository of the eclipse and manually add Subversive plugin and one or several connectors for it.

In Eclipse you can have both 1.6 and 1.7 SVN projects, which is pretty neat. You can checkout a repo and then convert it to any project type you want.

The coloring of the source is perfect. Several color themes are available around the net, through settings import. The IDE interface is a little rubish, at least from my tower. Too rounded and too much empty space between items.

And here comes the horror – perspectives. You use a perspective (a separate set of toolbars and screens) for each language you use JAVA or PHP or whatever else. There is even a different DEBUG perspective. This could be both good and bad, but for me it was not a big feature as I don’t like to spend my time in configuring.

Code completion is outstanding in Eclipse. While I was trying out Zend Framework this bloody thing even recognized that I write a path to a class inside a string (for one of the service managers) and started autocompleting it for me. Perfect recognition of comment directives and return types. Also a great impression came to me that when you extend a class, it adds the USE statements by itself and saves you loads of stupid scrolling, which was great.

Debugging in Eclipse is a little tricky. Although here you can use either XDebug or Zend Debugger (as Zend contribute big time to this PDT), you go to a separate perspective where you get a bunch of toolbars opened (one of them even allowing you conditional breaks and stuff) but you loose 60% of your screen. Then to go back to the source editing you have to switch back. This sincirely anoyed me.

In general Eclipse+PDT is a great and powerful choice if you’re ready to spend some time configuring and setting it up. The availability of many plugins allows you to do magic, but also allows you to mess your environment pretty well, so bare it in mind. Powerful IDE with loads of code analysis inside.

Bottomline…

Pros:

  • Powerful IDE
  • Modular plugins system allowing great extensibility
  • Great code look-up and debug options

Cons:

  • overly complicated functionality
  • not that good user interface utilisation.
  • fewer built-in functionalities
  • heavy on system resources, more clumsy than the other
  • Actually quite strange initial key-mapping (even Ctrl+Tab was to be manually configured)

 

Final words are never final, you know.  I continue to use both on my DEV environments and can’t speak in favour of one of them.
NB is fast and lightweight and quite powerful, lacking only some high-end/latest fashion features, while providing great usability. Eclipse, on the other hand, is really ugly but provides may be the best tools and code-look up, on the price of numerous configurations and plug-ins management, which can be disgusting. Both IDEs support versioning of files, supporting local histories too.

Chose your IDE as you try them in real life. Don’t belive me :) Both are good and as all articles finish “It is all a matter of personal preferrence”

Comments are greatly appreciated.

9  

A second Hello world!

Hi all!

This really is a hello world post. I started this to share my web passions and to comment on things I come upon while digging the web development crap around.

This is not really my 1st blog so far. Once upon the time there was another blog of mine here, but it went the wrong direction and finally my laziness killed. So now it is resurrected.

Here I will post comments on problems I come upon during my everyday work – development, app design, working environment and generally all kinds of stuff that makes you think at work and makes you miserable or happy.

You can follow me on twitter, if you don’t already do that…

This blog will be solely in English, as it would be the better way to get the opinions of more guys around.

So stay tuned.

1