To help clear up and consolidate information:
Permissions
Permission in *nix, which included Android, work like so. Every file recognizes three boundaries: user, group, others. When doing a long listing of a file (ls -l) the first set of information displays permission. For example
The line above should be read in four parts.
- The first dash indicates whether a file is a directory or no. If it's a 'd' then the file is a directory; a dash (-) means it's just a file.
- The next three spots (2, 3, 4) indicate the permissions for the user, i.e. the owner of the file.
- The next three spots (5, 6, 7) indicate the permissions for the group; each file has a group and each user can be part of multiple groups.
- The last three spots (8, 9, 10) indicate the permissions for everyone else; if you're not the file's owner or part of its group these are the permissions you get.
r means you can read the file. w means you can write to the file. x means you can execute the file or move into that directory.
So what's up with the numbers like 644 in the commands listed in other posts? The chmod command changes the permissions of a file; it takes the intended permissions as a group of three octals. Each digit is an octal number that corresponds to a certain mixture of permissions. To decode a chmod argument like 644 let's break it down:
- Each number in 644 corresponds to one of the same three groups above: user, group, others.
- The order is the same as in the long listing: 6 = user, 4 = group, 4 = others.
- To figure out how a single number translates into the three permissions (read, write, execute) you have to look at each permission in binary. This is a little complex so bear with me:
- Start with 0.
- If execute is on add 1.
- If write is on add 2.
- If read is on add 4.
- Using these rules you will result in some number between 0 and 7 (hence the octal part). A value of 6 can only be created by turning on write and read. A value of 5 would be read and execute.
- If you do this for each digit in the argument you can determine just what permissions the file should have. 644 means the user has read and write, group has read, and others have read. 755 means the user has read, write, and execute; user has read and execute; and others have read and execute.
For FM Radio specifically only bin/fmradioserver should have execute permissions. Write permissions on each file should be given solely to user. Read permissions should be granted to user, group, and others.
It breaks down as thus:
app/FMRadio.apk -rw-r--r-- (chmod 644)
app/FMRadioService.apk -rw-r--r-- (chmod 644)
bin/fmradioserver -rwx-r-x-r-x (chmod 755)
lib/libfmradio_jni.so -rw-r--r-- (chmod 644)
lib/libfmradioplayer.so -rw-r--r-- (chmod 644)
lib/libFMRadio.so -rw-r--r-- (chmod 644)
Capitalization is important. *nix systems are case sensitive when it comes to file names.
Fission ROM
This just won't work on Fission. There's probably some library Fission isn't including that the service expects. Fission does delete a lot of stuff when you install it so I assume something in there is needed.