SmartQ Z WatchにGoogle Appsを入れる?


SmartQ Z Watch。

うちはfastcardtechに注文しているんだけど、まだ発送してくれない・・・
いったい手元に来るのはいつになることやら・・・

tabletrepublicのフォーラムに「v1.8 ***DO NOT INSTALL GAPPs/APKs UNTIL YOU READ THIS****」というスレッドがあったのでご紹介。

要点をまとめると
・容量が足らないので、Wechatアプリとかは消す
・Gappsのapkを全部ではなく、一部だけ入れる
・Gappsをインストールした後は、初期化して再設定する
・失敗すると文鎮(文鎮の実例はスレに動画である
・初期化時に実行される「onetimeinitializer.apk」が問題を起こす可能性がある?

手元にモノがないので、なんとも分かりませんけどね。

v1.8 ***DO NOT INSTALL GAPPs/APKs UNTIL YOU READ THIS****
THIS INFORMATION IS BROUGHT TO YOU BY TR member @yesteria).

FULL GAPPs INSTALLATION WILL CAUSE SCREEN LIMITATION ERROR

As always, the information below could damage your device, use at own risk

If you use the file explorer in the v1.8 update to install mods to your watch, be very cautious. If you want to install gapps, add ONLY the apks listed below:

GAPPs
**********************************************************************

1. ChromeBookmarksSyncAdapter.apk
2. GoogleBackupTransport.apk
3. GoogleCalendarSyncAdapter.apk
4. GoogleContactsSyncAdapter.apk
5. GoogleFeedback.apk
6. GoogleLoginService.apk
7. GoogleServicesFramework.apk
8. MediaUploader.apk – (delete seems ok to do, if want to try…please post results)
9. NetworkLocation.apk
10. Phonesky.apk (Play Store 4.4.21)
11. SetupWizard.apk

*******************************THATS IT!!!!!*******************************

Installing full gapps and doing a full reset, will cause watch to boot as a new phone…this is due to the onetimeinitializer.apk app. Your watch will be stuck at the Android Welcome screen, and will most likely need to be flashed back to stock in order to use again.

Update: If you do install gapps, PLAY will remove the WeChat app and free up almost ~17mb.

APKs
This watch has an extremely limited version of JB. In addition, Ingenic CPUs are MIPS…this has yet to be a proven factor in why many programs don’t run, but it has in the past…worth mentioning. Choose programs wisely, as your resources ARE limited. THIS is NOT a phone. DO NOT install task killers…they cause nothing but problems. if you have to know your resource data, use watchdog…but be prepared…just this app alone takes about 10% of your out-of-the-box resources.

So…everyone who reads this post and learns something…your device was just saved from possible disaster(mini-brick*), so…

give THANKS to @yesteria<<

SmartQ Z Watchのfirmware探索


SmartQ Z Watchのfirmware updaterをダウンロードしたので中身を見てみた。

入手元
・中国語版「Z Watch firmware ダウンロードページ
 2013/11/11現在の最新は、11/07公開のV1.82013/11/15公開のV1.9が最新。
 ダウンロードの際は「电信下载」の方のリンクをクリックのこと。
 ちなみにURLは「 http://d2.smartdevices.com.cn/files/SmartQ_Z1_V1.9/update.zip

同じくJZ4775採用のGEAK Watchのfirmwareを探してみると
・GEAK公式フォーラム「【果壳公告】GEAK Watch版本升级和信息发布主页(11月07日)
同じく11/07に「GEAK WATCH version 1095」というバージョンが出ている模様。
こちらは、パソコンもしくはGEAK Watch本体から直接ファイルをダウンロードさせる形式である模様。

ただ、「SmartQ Z Watchの更新履歴」と「GEAK Watchの更新履歴」を比べてみると似たようなタイミングで出てるような気がする・・・
いったい、どれくらいの関係なんだろうか???


で・・・SmartQ Z Watch用のupdate.zipを開いてみる。

$ unzip -l update.zip
Archive:  update.zip
signed by SignApk
  Length     Date   Time    Name
 --------    ----   ----    ----
      128  10-23-12 17:12   META-INF/com/android/metadata
   338708  10-23-12 17:12   META-INF/com/google/android/update-binary
     3356  10-23-12 17:12   META-INF/com/google/android/updater-script
  3315712  10-23-12 17:12   boot.img
   694784  10-23-12 17:12   mbr-xboot.bin
  4937728  10-23-12 17:12   recovery.img
    18069  10-23-12 17:12   system/app/ApplicationsProvider.apk
   207471  10-23-12 17:12   system/app/Bluetooth.apk
<略>
     5364  10-23-12 17:12   system/xbin/timeinfo
     1619  10-23-12 17:12   META-INF/com/android/otacert
    71058  10-23-12 17:12   META-INF/MANIFEST.MF
    71111  10-23-12 17:12   META-INF/CERT.SF
     1656  10-23-12 17:12   META-INF/CERT.RSA
 --------                   -------
172076186                   837 files
$

良くあるAndroidのupdate.zipと同じ形式。

update.zipでどんなことをやっているのかを確認。

$ cat META-INF/com/google/android/updater-script
assert(getprop("ro.product.device") == "s2122b" ||
       getprop("ro.build.product") == "s2122b");
show_progress(0.500000, 0);
format("ext4", "EMMC", "/dev/block/mmcblk0p1", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p1", "/system");
package_extract_dir("system", "/system");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("mksh", "/system/bin/sh");
symlink("readbattery", "/system/bin/creat_curve",
        "/system/bin/update_curve");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
        "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
        "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
        "/system/bin/getevent", "/system/bin/getpartionblkcount",
        "/system/bin/getprop", "/system/bin/hd", "/system/bin/id",
        "/system/bin/ifconfig", "/system/bin/iftop", "/system/bin/insmod",
        "/system/bin/ioctl", "/system/bin/ionice", "/system/bin/kill",
        "/system/bin/ln", "/system/bin/log", "/system/bin/ls",
        "/system/bin/lsmod", "/system/bin/lsof", "/system/bin/md5",
        "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
        "/system/bin/nandread", "/system/bin/netstat",
        "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
        "/system/bin/ps", "/system/bin/r", "/system/bin/reboot",
        "/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",
        "/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop",
        "/system/bin/sendevent", "/system/bin/setconsole",
        "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd",
        "/system/bin/start", "/system/bin/stop", "/system/bin/sync",
        "/system/bin/top", "/system/bin/touch", "/system/bin/umount",
        "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
        "/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0755, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 2000, 04755, "/system/bin/catkmsg");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth/bt.sh");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 0755, "/system/xbin/tcpdump");
show_progress(0.200000, 0);
show_progress(0.200000, 10);
package_extract_file("boot.img", "tmp/boot.img");
write_raw_image("tmp/boot.img", "ndboot");
package_extract_file("mbr-xboot.bin", "tmp/mbr-xboot.bin");
write_raw_image("tmp/mbr-xboot.bin", "uboot");
show_progress(0.100000, 0);
package_extract_file("recovery.img", "tmp/recovery.img");
write_raw_image("tmp/recovery.img", "recovery");
show_progress(0.100000, 0);
unmount("/system");
$

まぁ、普通。
開発名は「s2122b」というらしい。

$ cat system/build.prop
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=JZO54K
ro.build.display.id=V1.8-2013-11-06
ro.build.version.incremental=eng.wqkong.20131106.153814
ro.build.version.sdk=16
ro.build.version.codename=REL
ro.build.version.release=4.1
ro.build.date=2013年 11月 06日 星期三 15:39:13 CST
ro.build.date.utc=1383723553
ro.build.type=eng
ro.build.user=wqkong
ro.build.host=wqkong-desktop
ro.build.tags=dev-keys
ro.product.model=Z1
ro.product.brand=Ingenic
ro.product.name=s2122b
ro.product.device=s2122b
#ro.product.board=s2122b
ro.product.board=s2122b
ro.product.cpu.abi=mips
ro.product.cpu.abi2=armeabi-v7a
ro.product.manufacturer=Karbonn
ro.product.locale.language=zh
ro.product.locale.region=CN
ro.wifi.channels=13
ro.board.platform=jz4780
# ro.build.product is obsolete; use ro.product.device
ro.build.product=s2122b
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=s2122b-eng 4.1 JZO54K eng.wqkong.20131106.153814 dev-keys
ro.build.fingerprint=Ingenic/s2122b/s2122b:4.1/JZO54K/eng.wqkong.20131106.153814:eng/dev-keys
ro.build.characteristics=tablet
# end build properties
#
# system.prop for generic sdk
#

ro.opengles.version = 131072
rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyM1

mobiled.libpath=/system/lib/libmobiled.so
#
# H/W composition disabled
#
debug.sf.hw=1

#timezone
persist.sys.timezone=Asia/Shanghai

#--for camera--s-
#ro.board.camera.picture_upscale=true
#ro.board.camera.upscale_id=0
#ro.board.camera.sensor_w=640
#ro.board.camera.sensor_h=480
#ro.board.camera.upscale_dst_w=1600
#ro.board.camera.upscale_dst_h=1200
#--camera--e-
#board config
ro.board.hdmi.support=false
ro.board.hdmi.device= HDMI LCD SYNC
ro.board.hdmi.hotplug.support=true
ro.board.tvout.support=false
ro.board.hasethernet=ethernet
ro.board.haspppoe=pppoe
testing.mediascanner.skiplist=/storage/host-udisk/,/storage/udisk/
dalvik.vm.heapsize=60m
ro.sf.lcd_density=160
ro.sf.hwrotation=180

# sync app use
watch_device=yes

#long press back key will show this global action dialog.
#value >  0 means long press time(ms)
#value <= 0, means dialog will not show by press back key.
keyback_long_press_time=1000

#for system rom lower
#cut webcore
ro.systemcut.webcore=false
# device info related
ro.partition.num=4
ro.devid.bytes=13
#ro.wifimac.offset=512
#ro.wifimac.bytes=17
ro.btmac.offset=1024
ro.btmac.bytes=17
ro.devinfo.enable=true
# for ft5216
debug.velocitytracker.strategy=int1

#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.carrier=wifi-only
ro.kernel.android.checkjni=0
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
$

Androidのバージョンは「JZO54K」なので「Android 4.1.2」
「ro.board.platform=jz4780」って、このデバイスはjz4775じゃないのかなぁ?と思ったのですが、
おそらくは「Android-JB(4.1.2) JZ4780/4775 新版本发布」で配布されているソースコードがベースになるので、共通化されてるのかな?とか感じました。

で・・・

$ ls -l system/xbin/su
-rw-rw-r-- 1 osakanataro user 137356 10月 23  2012 xbin/su
$

・・・su在中ですかw
SuperUser.apkとかはsystem/appには見当たらなかったので、必要に応じて別途ダウンロードが必要そうです。

$ ls system/app
ApplicationsProvider.apk     Music.apk
Bluetooth.apk                MusicFX.apk
Calendar.apk                 NetworkLocation.apk
CalendarProvider.apk         PackageInstaller.apk
CertInstaller.apk            Phone.apk
Contacts.apk                 Provision.apk
ContactsProvider.apk         Settings.apk
DefaultContainerService.apk  SettingsProvider.apk
DeskClock.apk                SleepingAnalysis.apk
DownloadProvider.apk         SmartLauncher.apk
DownloadProviderUi.apk       SmartQWatchHealth.apk
DrmProvider.apk              SoundRecorder.apk
FileManager.apk              SystemUI.apk
GoogleServicesFramework.apk  TelephonyProvider.apk
IndroidSyncWatch.apk         UserDictionaryProvider.apk
IndroidWeather.apk           WatchWidget.apk
MediaProvider.apk            cn.yunzhisheng.assistant.smartdevices.apk.bak
Mms.apk                      com.tencent.mm.apk.bak
$

とりあえず最小限だけインストールされている、というような感じ。
「cn.yunzhisheng.assistant.smartdevices.apk.bak」「com.tencent.mm.apk.bak」はなぜ「.apk.bak」なんて形でファイルが残っているんだろうか?
消してしまえない理由でもあるんだろうか???

$ ls system/fonts
AndroidClock.ttf                 DroidSerif-Regular.ttf
AndroidClock_Highlight.ttf       Roboto-Bold.ttf
AndroidClock_Solid.ttf           Roboto-BoldItalic.ttf
AndroidEmoji.ttf                 Roboto-Italic.ttf
Clockopia.ttf                    Roboto-Light.ttf
DroidNaskh-Regular-SystemUI.ttf  Roboto-LightItalic.ttf
DroidNaskh-Regular.ttf           Roboto-Regular.ttf
DroidSansArmenian.ttf            RobotoCondensed-Bold.ttf
DroidSansFallback.ttf            RobotoCondensed-BoldItalic.ttf
DroidSerif-Bold.ttf              RobotoCondensed-Italic.ttf
DroidSerif-BoldItalic.ttf        RobotoCondensed-Regular.ttf
DroidSerif-Italic.ttf
$

「AndroidEmoji.ttf」と絵文字は入っているものの、日本語対策は特になく「DroidSansFallback.ttf」のみ。
なので、いわゆる中華表示になる模様。

$ ls system/etc
NOTICE.html.gz              h264_cavlc_p1.bin   permissions
audio_effects.conf          h264_p1.bin         ppp
audio_policy.conf           hosts               recovery.fstab
bluetooth                   init.goldfish.sh    rv9_p1.bin
dbus.conf                   jzmpeg2_p1.bin      security
dhcpcd                      launcher_flag       system_fonts.xml
disk_preparing.sh           media_codecs.xml    vc1_p1.bin
event-log-tags              media_profiles.xml  vold.fstab
excluded-input-devices.xml  mkshrc              wifi
fallback_fonts-ja.xml       modems-conf.xml     x264_p1.bin
fallback_fonts.xml          mpeg4_p1.bin        zram.sh
firmware                    msmpeg4_p1.bin
$

H.264, MPEG4などの動画関連の補助があるらしい。
「zram.sh」の中で、メインメモリから256MBを圧縮機能ありのラムディスクとした上で、そこをswap領域として使用している。

MIPS系CPU JZ4775搭載Android腕時計 SmartQ Z Watch


中華タブレットの初期製品で有名だったSmartQシリーズに、腕時計型のAndroidが出ました。
「SmartQ Z Watch」です。

これも、GEAK Watchと同じくIngenicのMIPS系CPUの「JZ4775」を搭載している。
というか、姉妹製品なんじゃないかという気も・・・

・中国語版「製品ページ
・英語版「製品ページ

SmartQ Z Watch(「Z1」という記載もちらほら)は単独でもAndroidとして使うことができるが、親機となるAndroid端末とBluetooth接続で使用するような感じで使うのが、想定されている使い方だと思われる。
いくつかのレビューを見ると、バッテリーの持ちはそんないいもんではない感じで、12時間ぐらいらしい。

英語版ページは必要なものがなかったりするので、中国語版ページにアクセスすることがほぼ必須。
例えば、重要なあたりだと下記のようなものがある。

・中国語版「Z Watch firmware ダウンロードページ
 2013/11/11現在の最新は、11/07公開のV1.8
 ダウンロードの際は「电信下载」の方のリンクをクリックのこと。
 ちなみにURLは「 http://d2.smartdevices.com.cn/files/SmartQ_Z1_V1.8/update.zip
 update.zipをZ Watchにコピーして、良くあるAndroidっぽくfirmwareアップデートを行う感じ。

・中国語版「Z Watch 助手
 Android端末にインストールしてZ Watchと連携をとるためのソフト。
 Play Storeにはなくて、上記URLからapkファイルを入手する必要がある。
 このソフトからZ Watchのfirmwareアップデートを実施することも可能。

・中国語版「開発者向けページ
 先週SDKが公開された(「智器可穿戴SDK发布 Z Watch受开发者狂热追捧」)
 SDKダウンロードには、「開発者だったら、これくらいの問題とけるよね?」的な感じの
 プログラミングクイズを突破する必要がある。
 現状、マニュアル等は全部中国語

英語圏のTABLE REPUBLICというサイトの「SmartQ Z Watch専用フォーラム」に
firmwareのバージョンアップ履歴とかバージョンアップ方法
SDKまわりの情報
とかいくつか情報が出ているので、こちらを見てもよいでしょう。

xda-forumは、まだ微妙なでだし。
Other SmartWach」というサブフォーラムの中の「SmartQ Z smart watch」というスレッドがあるぐらい。

SmartQ Z Watch 赤

SmartQ Z Watch 青

SmartQ Z Watch 黒