Perl for Android の Android.pm の不具合で落ちる場合の対処法

日本向けのAndroid携帯で音声認識などを行うと日本語として解釈された漢字などのマルチバイト処理に不具合がある為、現在正常に動作しません。 com.googlecode.perlforandroid/extras/perl/site_perl/Android.pm の以下のdo_rpcの中のto_json,from_jsonを書き換える事で対処可能です。 バージョンアップで修正される事を祈ります。
sub do_rpc {
    my $self = shift;
    if ($self->trace) {
        show_trace(qq[do_rpc: $self: @_]);
    }
    my $method = pop;
    my $request = to_json({ id => $self->{id},
                            method => $method,
                            params => [ @_ ] },
                            { utf8 => 1 });
    if (defined $self->{conn}) {
        print { $self->{conn} } $request, "\n";
        if ($self->trace) {
            show_trace(qq[client: sent: "$request"]);
        }
        $self->{id}++;
        my $response = readline($self->{conn});
        chomp $response;
        if ($self->trace) {
            show_trace(qq[client: rcvd: "$response"]);
        }
        if (defined $response && length $response) {
            my $result = from_json($response, { utf8 => 1 } );
            my $success = 0;
            my $error;
            if (defined $result) {
                if (ref $result eq 'HASH') {
                    if (defined $result->{error}) {
                        $error = to_json( { error => $result->{error} }, { utf8 => 1 } );
                    } else {
                        $success = 1;
                    }
                } else {
                    $error = "illegal JSON reply: $result";
                }
            }
            unless ($success || defined $error) {
                $error = "unknown JSON error";
            }
            if (defined $error) {
                printf STDERR "$0: client: error: %s\n", $error;
            }
            if ($Opt{trace}) {
                print STDERR Data::Dumper->Dump([$result], [qw(result)]);
            }
            return $result;
        }
    }
    $self->close;
    return;
}
return