Category Archives: Programming

Override DNS for KitKat – first release

Override DNS for KitKat has been released

Override DNS icon

Override DNS is the easiest way to force your rooted phone to use custom nameservers on mobile networks.

Many things dealing with name resolution have changed in Android 4.4 KitKat and so all the current Play Store apps stopped working.

The problem I found with this release of Android (4.4) is that, apparently for caching reasons, the system behaviour has been changed to redirect all DNS queries to a system daemon called netd (here’s a link to a presentation related to Android networking before 4.4 which, however, covers part of this topics).

The getprop/setprop method used by all the DNS changer apps does not work anymore. Those values, when changed, get simply ignored by the netd daemon.

It’s necessary to communicate directly to the daemon via the /dev/socket/netd socket.

The app automatically guesses the network device name and applies the right commands each time a mobile network gets activated.

How to display PHP errors only in public_html directories

How to display PHP errors

I always use servers where PHP errors are not shown by default and I always forget how to enable error messages in development environments.

My situation

On a server I usually prefer Debian OS, but when I develop on the go I use laptops with Ubuntu.
In this case I’m running Ubuntu 14.04 LTS with Apache2 (v2.4.7) and libapache2-mod-php5 (v5.5.9).

I want PHP errorors displayed for projects in my public_html folder.

Solution 1 (only Apache conf files)

Create the file /etc/apache2/sites-enabled/800-public-html.conf with this content:

<Directory /home/*/public_html>
  AllowOverride Options
  php_admin_flag display_errors On
</Directory>

Solution 2 (using .htaccess)

Create the file /etc/apache2/sites-enabled/800-public-html.conf with this content:

<Directory /home/*/public_html>
  AllowOverride Options
</Directory>

Create the file /home/max/public_html/project1/.htaccess with this content:

php_admin_flag display_errors On

Conclusions

It’s easy and easily forgettable. Don’t forget to add

error_reporting(E_ALL | E_NOTICE);

in your .php files.

Postphone v1.1.0

There’s a new version of Postphone. Huge list of things, here’s the full changelog:

    Improvements:
      New feat Google Android Backup Service (settings and database)
      Issue-001 now app keeps alarms upon reboot
      Hotfix-002 now when you receive a call with unknown Caller ID, 
           no popup is shown
    
    Application workflow:
      You must check or dismiss notification to remove alarm
    
    Code:
      Min SDK change from 7 to 8 (drop support for Eclair)
      DatabaseHelper class replaces DBAdapter
      Allow to upgrade from db v0 to db v1 and allow future upgrades
      Remove old code doTheVibration() and playSound()
      File rename popupcallback => popupcallback.xml
      Fix some typos
      Lower the number of events logged
    
    Developer side:
      New utility emulate-reboot
      New utility insert-fake-passed-calls with support for TZ
      New utilities for backup
      Change tmp path in sqlite-postphone-db utility
      Publish notes
      Backup notes
    
    Debug menu:
      Is disabled by default
      Can now be enabled via multiple taps on version name
      New menu entry "clear alarms table"
      New menu entry "test PopUpAfterCall"
    
    Design and blog:
      Blog featured banner
      Official logo.png

Android on Ubuntu: IOException on aapt

As I told in a previous post, I’m setting up a new Ubuntu installation and I want to compile something for Android on it.

After installing Android SDK I got this error on my first iteration of “ant debug”

BUILD FAILED
/home/max/AndroidSDK/android-sdk-linux/tools/ant/build.xml:621: The following error occurred while executing this line:
/home/max/AndroidSDK/android-sdk-linux/tools/ant/build.xml:657: Execute failed: java.io.IOException: Cannot run program "/home/max/AndroidSDK/android-sdk-linux/platform-tools/aapt": error=2, No such file or directory

The error is in some way misleading because the binary is there, but the problem is that it’s a 32-bit executable

max@praxi:~$ ls -l /home/max/AndroidSDK/android-sdk-linux/platform-tools/aapt
-rwxr-xr-x 1 max max 929400 Jul 27 14:33 /home/max/AndroidSDK/android-sdk-linux/platform-tools/aapt

max@praxi:~$ file /home/max/AndroidSDK/android-sdk-linux/platform-tools/aapt
/home/max/AndroidSDK/android-sdk-linux/platform-tools/aapt: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

The solution is near: we need 32-bit libraries

root@praxi:~# aptitude install ia32-libs

As always it’s a good idea to RTFM: