新しいおもちゃ

先週末に国内発送ありで販売された「ZTE Open」が到着。
スペック的なものなのか、やっぱり動作に引っかかり感があるのは仕方ないところかな?
Nexus SにFirefox OS焼いた時もこんな動作だったからなぁ…。
あとは、この端末の初期イメージ…というかリカバリ手段はどうするのか。


adb shellとかadb reboot bootloader、adb reboot recoveryにfastboot devicesは普通にいけるのね。





Nexus 7 LTE (2013) rooted

ちゃちゃっとbootloader unlockしてSuperSUのインストールを。
※自己責任で実施してください。

bootloader unlock

Nexusシリーズ共通の方法で。

adb reboot bootloader
fastboot oem unlock

端末側に「ホントにunlockするの?」て聞かれてるので「yes」を選択。
実行すると初期化されるのでご注意を。

SuperSUのインストールの準備

端末再起動後、SDカードにUPDATE-SuperSU-v1.65.zipをコピーしておく。
どこぞからopenrecovery-twrp-2.6.0.0-deb.imgを入手。
自分はNexus Root Toolkitから取得。

SuperSUのインストール

Nexus Root Toolkitでrootを取るといつもbootloopになるんで手動で。
あと現時点ではFactory Imageも公開されていないのでリカバリは焼かずに。

adb reboot bootloader
fastboot boot openrecovery-twrp-2.6.0.0-deb.img

これでTWRPが起動。
あとはZIPインストールでSuperSUをインストール。

完成

ディレクトリ関連メモ

よく忘れるので自分で見れるようにまとめ。

Context#getExternalFilesDir(String type);

これだと外部ストレージの /Android/data/{パッケージ名}/files 以下を取得。
アプリをアンインストールすると、ここのパスにあるファイルも削除される。

Environment#getExternalStoragePublicDirectory(String type);

こっちは外部ストレージ直下のtypeを取得。(例:/sdcard/Downloads)

Environment#getExternalStorageDirectory();

言わずと知れた外部ストレージのパスを取得。

Context#getFileStreamPath(String name);

内蔵ストレージ(アプリ固有パス)を取得。

package com.example.folder;

import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {
    private static final String TAG = "DIRS";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        File f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_ALARMS);
        Log.i(TAG, "DIRECTORY_ALARMS=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_DCIM);
        Log.i(TAG, "DIRECTORY_DCIM=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
        Log.i(TAG, "DIRECTORY_DOWNLOADS=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MOVIES);
        Log.i(TAG, "DIRECTORY_MOVIES=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MUSIC);
        Log.i(TAG, "DIRECTORY_MUSIC=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS);
        Log.i(TAG, "DIRECTORY_NOTIFICATIONS=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        Log.i(TAG, "DIRECTORY_PICTURES=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_PODCASTS);
        Log.i(TAG, "DIRECTORY_PODCASTS=" + f.getPath());
        f = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_RINGTONES);
        Log.i(TAG, "DIRECTORY_RINGTONES=" + f.getPath());

        f = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES);
        Log.i(TAG, "DIRECTORY_RINGTONES=" + f.getPath());

        f = Environment.getExternalStorageDirectory();
        Log.i(TAG, "ExternalStorageDir=" + f.getPath());

        f = getApplicationContext().getDir("hoge", MODE_APPEND);
        Log.i(TAG, "getDir=" + f.getPath());

        f = getApplicationContext().getFileStreamPath("foo.txt");
        Log.i(TAG, "getFileStreamPath=" + f.getPath());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    /*
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_ALARMS=/storage/sdcard0/Android/data/com.example.folder/files/Alarms
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_DCIM=/storage/sdcard0/Android/data/com.example.folder/files/DCIM
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_DOWNLOADS=/storage/sdcard0/Android/data/com.example.folder/files/Download
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_MOVIES=/storage/sdcard0/Android/data/com.example.folder/files/Movies
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_MUSIC=/storage/sdcard0/Android/data/com.example.folder/files/Music
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_NOTIFICATIONS=/storage/sdcard0/Android/data/com.example.folder/files/Notifications
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_PICTURES=/storage/sdcard0/Android/data/com.example.folder/files/Pictures
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_PODCASTS=/storage/sdcard0/Android/data/com.example.folder/files/Podcasts
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_RINGTONES=/storage/sdcard0/Android/data/com.example.folder/files/Ringtones
08-26 22:48:01.461: I/DIRS(32598): DIRECTORY_RINGTONES=/storage/sdcard0/Ringtones
08-26 22:48:01.461: I/DIRS(32598): ExternalStorageDir=/storage/sdcard0
08-26 22:48:01.461: I/DIRS(32598): getDir=/data/data/com.example.folder/app_hoge
08-26 22:48:01.461: I/DIRS(32598): getFileStreamPath=/data/data/com.example.folder/files/foo.txt
     */
}

Nexus 4 boot loop対策

Nexus Root ToolkitでNexus 4のrootを取ると必ずboot loopになって起動しなくなるという…。
そんなときは…。
1.recovery modeで起動する。
2.電源を押しながら、ボリューム↑を押す
3.factory resetを選択。
これで無事起動するように。
リカバリーモードにはbootloaderからrecoveryを選択して起動。
起動するとドロイド君が倒れてて胸にビックリマークがでてるはず?
ここで2の操作。


てか素直にcwmを入れてからSuperSUのインストーラをZIPで入れる方が楽だったという。

CCVA 1.0.4



C84に対応。
機能は1年前からまったく変わらず。


今回のビルドからターゲットをAndroid 4.1.2に変更。
動作確認はXperia Z(C6603)、Nexus 7、Galaxy Nexus


そろそろ開催回に伴うソース修正箇所が多いのをなんとかしないとな…。

Xperia GX (SO-04D) 7.0.D.1.137のFTF作成

前回、初期ROMをバックアップしたっきりてのもあって137のFTFを作っておくかと。
FlashtoolはXDAで公開されてる0.9.10.2bata5を使用。
SUSで初期化した際に取得できた137のROMは以下。

FILE_279063644
FILE_279654861
FILE_279655006

ext4対応されたFlashtoolなのでソフトはこれひとつで作成できて楽ちんに。

decrypt

Tooles > SEUS Decrypt
FILE_xxxxxxxxxの3つをおいたディレクトリを選択して、ファイルすべてを右側に。

create

復号化が完了するとBundlerウィンドウが起動。
partition-image_S1-SW-LIVE-7054-PID1-0002-MBR.sin
simlock.ta
上記ふたつを残してすべて右側に。

Device SO-04D
Branding docomo
Version 7.0.D.1.137

Createボタンを押して完成を待つ。

21/023/2013 13:23:40 - INFO  - <- This level is successfully initialized
21/023/2013 13:23:40 - INFO  - Flashtool Version 0.9.10.2beta5 built on 2013-04-13 22:50:00
21/023/2013 13:23:45 - INFO  - Device disconnected
21/023/2013 13:23:56 - INFO  - Decrypting FILE_279063644
21/023/2013 13:23:56 - INFO  - Decrypting FILE_279654861
21/023/2013 13:23:56 - INFO  - Decrypting FILE_279655006
21/024/2013 13:24:13 - INFO  - Decryption finished
21/024/2013 13:24:57 - INFO  - Adding loader.sin to the bundle
21/024/2013 13:24:57 - INFO  - Adding kernel.sin to the bundle
21/024/2013 13:24:57 - INFO  - Adding system.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding fotakernel.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding amss_fs_2.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding amss_fs_1.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding apps_log.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding tzbsp.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding amss_fsg.sin to the bundle
21/025/2013 13:25:26 - INFO  - Adding userdata.sin to the bundle
21/025/2013 13:25:27 - INFO  - Adding cache.sin to the bundle
21/025/2013 13:25:27 - INFO  - Bundle creation finished

html5 Development

窓の杜に掲載されていたので忘れないようにメモ。


XDK
html5アプリ開発キット。
intelが無償提供。
利用にはアカウント登録が必要。
Cloud上にアプリをデプロイも可能?


brackets
html/css/javascriptエディタ