HTC_One_V

HTC One Vの初期APN設定を書き換える


HTC One VでSoftBankのSIMを利用する場合、初期設定ではAPNがandglobalとなっており、銀SIM等では正しく接続できません。そこでAPN情報を手動設定するのですが、GingerbreadやFroyo時代には使えたはずの/system/etc/apns-conf.xmlがなぜか反応してくれませんでした。※何かミスしているだけの可能性もありますが。

wipeを繰り返していると毎回手動設定するのがいいかげん面倒&設定し忘れでハマるのを避けるために、デフォルトのAPN設定自体を書き換えてしまい、安心・快適環境を目指します。

失敗すると起動しなくなりますので、作業の前にRUUの準備もしくはCWM Recoveryを導入してバックアップしておくことを推奨します。

現時点でHTC One Vは技適証明を取得していないので、以下の内容はあくまで参考情報となります。一応。

デフォルトのAPN設定は、framework-res.apk内のres/xml/apns.xmlに記載されていますので、これを修正します。

作業にはapktool 1.4.3が必要ですので、事前に入手し設定しておきます。

framework-res.apkのデコードとapns.xmlの修正

まずは、framework-res.apkを取得し、apktoolを使ってリソースをデコードします。

% adb pull /system/framework/framework-res.apk .
% apktool d framework-res.apk
I: Loading resource table...
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...

無事apkのデコードが完了すると、framework-resというディレクトリが生成されていますので、この中のres/xml/apns.xmlを修正します。
「SoftBank」を検索すると、中盤ぐらいにandglobalのAPN設定が存在しますので、お好みのAPNに書き換えます。
銀SIMであれば、apn=”open.softbank.ne.jp”、user=”opensoftbank”…が有名ですね。以下のような感じで。

<apn carrier="SoftBank Internet" apn="open.softbank.ne.jp" user="opensoftbank" password="********" mmsc="http://mms/" mmsproxy="mmsopen.softbank.ne.jp" mmsport="8080" mcc="440" mnc="20" type="default,supl,mms" />

X06HTからの移行派はuser=”softbankX06HT”、mmsproxy=”andmms.softbank.ne.jp”もいいかも。passwordは上記と同様の手順でX06HTのapns.xmlから抜いてきましょう。

framework-res.apkのリビルド

apns.xmlの修正が完了したら、framework-res.apkを再生成します。ただし、そのままビルドすると大量のエラーが発生してビルド失敗になるので、いくつかのxmlファイルを書き換える必要があります。

res/values/anims.xml
<anim name=”…”>…</anim> を <item type=”anim” name=”…”>…</item> に修正します。
res/values/layouts.xml
<layout name=”…”>…</layout> を <item type=”layout” name=”…”>…</item> に修正します。
res/values/raws.xml
<raw name=”…”>…</raw> を <item type=”raw” name=”…”>…</item> に修正します。
res/values/plurals.xml
79行目の 「%d of %d」 を 「%1$d of %2$d」 に修正します。各言語用のファイル res/values-**/plurals.xml も同様に修正します。

GNU sedが使える人は、次のように一発置換でもOKです。

% cd framework-res/res
% sed -i 's/<\(anim\|layout\|raw\)/<item type="\1"/;s/<\/\(anim\|layout\|raw\)>/<\/item>/;s/%d\(.*\)%d/%1$d\1%2$d/' values/anims.xml values/layouts.xml values/raws.xml values*/plurals.xml
% cd ../..

その後、apktoolでビルドします。

% apktool b framework-res framework-res.new.apk
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...

framework-res.new.apkが生成されていれば成功です。

新apk内のapns.xmlを旧apkに移植する

framework-res.apk内部のresources.arscや画像ファイルは無圧縮にする必要があるので、生成したapkはそのままでは問題があります。無圧縮にすべきファイルが多すぎるため、生成したapkからres/xml/apns.xmlを取り出し、既存のframework-res.apkに追記保存することにします。
事前にオリジナルのapkをコピーして保存しておきましょう。
追記後は念のためzipalignも行なっておきます。

zipalignはAndroid SDKのtools以下にありますので必要に応じてパスを通しておきます。

% cp framework-res.apk framework-res.org.apk
% unzip framework-res.new.apk res/xml/apns.xml
% zip framework-res.apk res/xml/apns.xml
% zipalign -f -v 4 framework-res.apk framework-res2.apk

生成したapkを上書きする

最後に、生成したapkを/system/framework以下に書き戻します。
まだadbがrootで動作していないためsdcard経由で転送し、rwモードでsystemパーティションをremount、上書きしてパーミッションを修正します。

% adb push framework-res2.apk /sdcard/
% adb shell

shell@android:/ $ su
shell@android:/ # mount -o rw,remount /system
shell@android:/ # cp /sdcard/framework-res2.apk /system/framework/framework-res.apk
shell@android:/ # chmod 644 /system/framework/framework-res.apk
shell@android:/ # exit
shell@android:/ $ exit

最後にrebootして確認しましょう。

% adb reboot

メニューからAPNを初期設定にリセットして、書き換えたAPNが表示されればOKです。

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>