How to decompile apk from Play Store

This is how you can decompile an application you have installed on your phone. My phone is rooted, uses RootBox 3.5 and has BusyBox installed. You may need to have that too if you want to follow my steps completly. Let's start: 1. Install application from market2. Download apk to computer First you need to locate the apk on the phone. Connect to the phone: adb shell Find the apk in the folder the apk are downloaded to. It is ussualy in '/data/app/' or '/system/app/'. The apk is called as the id from the Play Store, for example 'com.something.someapp.apk'. You can see this in the url from Play. Next you need to pull it to the computer. Once you have located the apk and know it's name exit adb. On your PC execute: adb pull /data/app/com.something.someapp.apk 3. Transform apk to jar I use dex2jar dex2jar- com.something.someapp.apk 4. See the code inside the jar I use Java Decompiler Just open the program and open the jar…

Update: Intellij 12 + Android Annotations 2.7 + maven

This is my previous post updated for the new versions of intelliJ Idea 12 and Android Annotations 2.7
1. Create your project with Android Maven Plugin Read the GettingStarted You can run this command to get the basic structure: mvn archetype:generate \ -DarchetypeArtifactId=android-quickstart \ \ -DarchetypeVersion=1.0.9 \ -DgroupId=com.tagonsoft \ -DartifactId=ExampleApp Add/Edit the dependency to android: With android from central mvn repository: with android from maven-android-sdk-deployer: androidandroid4.2_r1provided Run 'mvn idea:idea' to get the basic idea project to start with. 2. Add AndroidAnnotations to maven pom.xml com.googlecode.androidannotationsandroidannotations2.7.1providedcom.googlecode.androidannotationsandroidannotations-api2.7.1 3. Configure Idea compiler Like so:
I couldn't get it to work with processor from classpath, so I use the path from …

How I configure Intellij Idea 11 for Android, AndroidAnnotations 2.6 and maven

I know there are many many posts about this. This is a summary of how I do, so I can have a place for copy paste.
1. Create your project with Android Maven Plugin Read the GettingStarted You can run this command to get the basic structure: mvn archetype:generate \ -DarchetypeArtifactId=android-quickstart \ \ -DarchetypeVersion=1.0.8 \ -DgroupId=com.tagonsoft \ -DartifactId=ExampleApp Add/Edit the dependency to android: 2. Add AndroidAnnotations to maven pom.xml com.googlecode.androidannotationsandroidannotations2.6providedcom.googlecode.androidannotationsandroidannotationsapi2.6 3. Configure Idea compiler Like so:
I couldn't get it to work with processor from classpath, so I use the path from maven repo:
/work/libs/mvnrepo/com/googlecode/androidannotations/androidannotations/2.6/androidannotations-2.6.jar Add as processor FQ name:

Groovy way to see if thread execution had errors

I had to write a script that did something and for a faster run I decided to use threads.
I needed to start a thread to do some task and then to be able to check that it had finished without an error/exception.
In Java if the code executed in a new thread throws an error, it doesn't matter that much, it just executes the next instruction after thread.join().
Some solutions found on the internet were
to put all the code inside the thread in a try-catch block and in the catch block populate a map with the thread name and status. Then you could get the status by querying statusMap[threadName]add a status status field to your class witch is a subclass of Thread. Then you do the same thing as above and in the catch block modify the status to failed (status is successfull in the begining). You get get the status by thread.statusLuckily in  groovy we have dynamic object behaviour.
So my solution is to add a new field to the Thread class, and use Thread.setDefaultUncaughtExceptionHandler t…

Religions with a sense of humor

I just love it when a religion has a sense of humor. Discordianists are my favorite. Today I came across The TriPrimality from subgenius:
The TriPrimality: "Bob" is. "Bob" becomes. "Bob" is not. Nothing is; Nothing becomes; Nothing is not. Thus: Nothing Is Everything.   Therefore: Everything is "Bob." Abracadabra.
"I don't practice what I preach, because I'm not the kind of person I'm preaching to."--Bob You have to admit that is funny. And I can't close without mentioning my favorite religious person, Robert Anton Wilson.
"Spectacles, testicles, brandy, cigars -- you're all popes! You're all absolutely infallible. I have the authority to appoint anyone a Discordian Pope, because I'm a Discordian Pope. The first rule after you become a Discordian Pope is to excommunicate every Discordian Pope you meet. This is based on the basic Discordian principle that we Discordians must st…

Mohana- the witch of bring-a-thing

This week we were asked something to bring a thing for "Bring A Thing", a kind of charity activity at work.
I brought a kind of jack in the box witch. Then I was asked to write a  story about it.
I thing it got out pretty well and I wanted to share it with you
To fully understand the story you should watch South Park , listen to some Manowar and live in Romania. It is still funny if you haven't done any of this, but...

Here it is:

Once upon a time in the land of far away yet so close you could feel it lived little Timmy.
He was a handicapped kid walking around in his wheel chair and singing Abba all day.
Timmy’s life was quite boring and ordinary, except when playing tanki online. He was a true champion then.
One day his parents wanted to surprise Timmy. So they sent little Timmy to leave with aunt whom he had never seen or heard of, Florgonzola.
Oh boy, finally an adventure, thought the child.
And finally he arrived. The weather was not so nice. It was autumn and rai…

Ways to map and query many-to-many in GORM

I played with many-to-many relations in grails and found some interesting ways to work with them.
First the domain definitions.
For the purpose of this demo I chose the classic example with books and authors. A book may have many authors and an author may have many books.

class Author {
String name

class Book {
String name

What I consider the silliest way to define your domains I found here
They suggest mapping the join table using a domain object and creating the links by hand.
On 'books and authors' it would look like

class Book {
String name
static hasMany = [ memberships: Membership]

List authors() {
return memberships.collect {}

List addToAuthors(Author author) {, author)
return authors()

List removeFromAuthors(Author author) {
Membership.unlink(this, author)
return authors()

class Author {
String name
static hasMany = [memberships: Membership]