Xperia E1 Dual D2105 をAndroid 6または7.1.2相当にSetupする1

音楽再生専用にほどよい4inchディスプレイのXperia E1。Walkmanボタンで画面さわらずとも再生とポーズができます。FMラジオ、大型スピーカ、SIMスロット2。自動車整備中でイヤフォンが使えないとき、ツナギのぽっけに入れて音楽再生にちょうど良いです。

標準OSはAndroid4.1.2。色々なOSが出ています。Walkmanボタンが使えるカスタムOSを模索中です。試したOSと結果のメモです。


①Bootloader unlock 解除コードの入手 → ②Bootloader unlock → ③customリカバリ書込み → ④OS 書込みと他の基本手順はXperiaと同様です。 ③の内容が少し違いました。recovery領域にcustomリカバリ書込みはエラーとなり、boot領域に書込むと上手く起動します。

そうすると常時TWRPが起動するようになってしまいますが、OSを書くと上手くなくなってしまうので問題になかったです。なお端末のコードネームは、最初 falconss だったが途中から Shuangになったので、その両方でキーワードで情報を探す必要があるようです。


  • Andrid6相当
  • lineage14.1にくらべると動作はかなり軽い。(Open Gapp無し時)
  • Open Gappを入れても遅いが動く。Googleログインまでかなり時間要す。
  • wmaファイルは音楽再生可能。(弊方wma派につき)
  • walkmanボタンは効かない。カメラボタン扱いとなっている。
  • カメラ起動で「問題が発生しました」となる。open-camera-1-53-1.apkでも同様。
  • 吊るしラジオアプリは起動するが100Hzから変更できない。
  • ブラウザは起動するが、OS古くてgoogleサーバ側で拒否され閲覧不能。
  • インストール後、カスタムリカバリは残る。

  • Andrid7.1.2相当
  • lineage13.0にくらべると動作は重いが使えなくはない。(Open Gapp無し時)
  • Open Gappを入れるととてつもなく遅く、リセットを繰り返し起動が困難。しつこく繰返ば起動する。
  • wmaファイルは音楽再生不可。
  • walkmanボタンを押すとカメラが起動される。設定->ボタン->カメラボタンは無効にしていても起動してしまう。
  • カメラは起動動作可能。
  • 吊るしラジオアプリは起動するが、周波数表示されず何もできない。
  • ブラウザは起動し、閲覧可能。
  • インストール後、カスタムリカバリは残らない。

  • Andrid7.1.2相当
  • 初回Bootに時間かかる。
  • 大蛇の起動画面が目を引く。
  • lineage14.1にくらべると動作はやや軽い。(Open Gapp無し時)
  • Open Gappを入れると遅く、何とか起動する。Googleログインは失敗した。
  • wmaファイルは音楽再生不可。(何かの拍子に再生されてことが一度あった)
  • walkmanボタンは効かない。カメラボタン扱いとなっている。
  • カメラは起動しない
  • 吊るしラジオアプリは起動するが、周波数表示されず何もできない。E1オリジナルのラジオアプリは起動失敗する。
  • ブラウザは起動し、閲覧可能。
  • インストール後、カスタムリカバリは残らない。

  • 試さず。どのみちAndroid5なので。

  • TWRPで解凍エラーが発生し試せず。

各OSも一長一短があるようです。結果を下表にまとめます。

OS重さGapp相性walkman
ボタン
ラジオカメラWEB
閲覧
lineage-13.0××××××
lineage-14.1××××
Viper〇△×××××

本端末では、Walkmanボタン が重要です。各種バージョンを試してみました。以下その結果です。なお、wmaファイルの再生可否はOSの実験結果から、アプリ依存ではなくOS依存の模様です。

バージョンインストールWalkmanボタン
8.4.1.5 (E1オリジナル収録Ver.)××
8.4.1.4×
7.15.A.0×
8.1.A.0.5×
8.4.A.3.5××
8.5.A.3.3××

E1オリジナル 8.4.1.5はオリジナルROM: Sony_Xperia_E1_Dual_D2105_20.1.B.0.64_RU から取出しものですが解せない結果です。何か深い秘密があるのでしょうか?


冷静さをとり戻すため一旦オリジナルに戻します。VolumeDown押しながらUSBケーブルを差し、Flashモードに遷移させた後、Flashtool で Sony_Xperia_E1_Dual_D2105_20.1.B.0.64_RU を書きます。以下手順です。


以上、悔しい状況です。引き続き調査を継続します。

e2studioのProjectを、Eclipce CDT(Windows)に移行してみる

前記事では、RH850/F1KHの開発環境を用意しました。e2studioの環境をお出かけ用事務用PCにも作りたい。むろんコード作成/閲覧とC言語記述のチェック用としてです。e2studioはマシンパワーを食うし、コンパイラライセンスやバージョン互換の課題もあり、なかなかツライ。ベースは eclipce だから素のeclipceでも動くはず。そこで試してみました。

弊方では開発PCに 2019-12 CDT(C/C++ Developer Tool )を追加して使っています。IDE機能のしょぼいHIWのバックアップにも有効です。eclipceは Windows OS環境への登録的なものが無くても動くのでいつもpleiadesフォルダを移行先PCに丸コピしています。新規の方は、公式サイトからダウンロードすればよいでしょう。

e2studioのproject を移行先PCに丸コピーして、eclipce CDT のワークスペースに追加します。

これで普通にコード閲覧できるようになりました。#define値内容などホバーによる参照をするには、プロジェクト -> プロパティ -> C/C++一般 -> パスおよびシンボル からIncludeパスを追加します。

Cコンパイラの追加

eclipce CDT ではデフォルトでgccが選択されていますが、gcc本体は入っていません。MinGwのgccを入れます。Cygwin経由だとCygwinを起動して経由させる必要があり、gccソースからvisual StudioでBuildするのもしんどいですし可能かナゾです。ぱっとWindows 64bit用の配布場所に辿りつけません。以下の場所から以下のfileをdownloadします。

解凍して分かりやすい場所( Program Files以外 )に置きます。

gcc に必要なライブラリ2つとmake も必要なので、その3つを GnuWin32 Project からdownloadして解凍して分かりやすい場所に置きます。

gcc、make、ライブラリ2つのパスを、WindowsのPATH環境変数に追加します。

eclipce CDT設定変更

eclipce CDTプロジェクト -> プロパティ を以下のように設定します。面倒なので HardwareDebug構成 を上書きしています。

お試しBuild

これで一応、クロスBuildできるようになりました。これである程度フラグ消し( H用語でコンパイルエラーを消すこと )までができるようになりました。

しかし組込み特有の絶対アドレスからキャストして実体参照など、OSありCでは際どいコードは通らないようなので、オプションの見直しが色々必要そうです。今更ながら、gcc RL78を使ったほうがよいかも、、、(でもそれじゃ面白くない)

e-Taxディスクトップ版でカード認識しないとき

e-Taxディスクトップで、署名時にマイナンバーカードを認識しなくなりました。

カード自体は認識しているし、3か月前はエラーは出ていませんでした。

JPKI利用者ソフトはインストールずみです。バージョン3.4です。

JPKI利用者ソフトのサイトを見ると、バージョン3.5にUPされているようです。これかな?

ダウンロードしてインストールします。「バージョンUPしますか?」ではなく「上書きしますか?」と微妙なニュアンスのメッセージが出ます。「はい」ですすめます。

3.5にアップデートされました。

再度、e-Taxに戻り、署名を行うと、、、カードが認識されパスワード入力に進みました。

以上のように JPKI利用者ソフト が最新でなかったためエラーとなっていました。

e-Taxディスクトップ版は起動時に最新バージョンか自動チェックしますが、 JPKI利用者ソフト はチェックしないようです。

VS2022 17.10からmacOS14.4.1にiOSアプリのクロス開発お試し

Visual Studio 2022 にて、Xamarin、MAUIではなく、iOSアプリケーションというProject項目があったので試してみました。たとえSwiftでもWindows上から開発できれば効率UPします。

まずプロジェクトを追加してみます。

ちなみにiOSライブラリをXamarinでつかえるように調査時に登場したキーワード iOSバインドライブラリ は2つでてきますね。

スケルトンができたので、何か追加してみます。

言語はC#になるようですね。

そのままBuildしてみると、、、

.net 8 (7?)が無いらしく、それを追加インストールしてBuild。

よく分かりませんが以下のようなキャプチャも記録していました。

結局以下のエラーでふんずまってしまったようです。

結局、よくわかりませんでした。

Visual Studio 2019 Setup Projectのインストーラ作成手順まとめ2

前記事では、Visual Studio Setup Project で基本的なインストーラ作成手順をまとめました。本記事ではオプション的な設定方法を記述していきます。


吊るしの状態では殺風景ですし、サプライヤとしてアピール不足です。以下のようにインストーラ画面にバーナーを追加が可能です。

(1) 左図アイコンを開きます。

(2) 各インストーラ画面のプロ
パティから左図のようせ選択
します。

(3) 画像を追加します。インストーラー実行時に展
開されていたような覚えがありますので、
Application Folder を選択しておいた方がよいでし
ょう。.png や .gif など透過性は使えないようです。
全インストーラ画面でこの設定を行います。
画像は 約720 x 120 pixel で作成します。


Windows Installer ではインストール後、Windowsレジストリにエントリが作成されます。以下のように必要に応じてカスタマイズ、追加が可能です。

(1) 左のアイコンを選択します。

(2) デフォルトで、サプライヤ名のエントリが作成されます。これはプロジェクトのプロパティの
Manufacturer の設定値です。AlwaysCreate は基本 ture に変えます。

(3) 一般的にサプライヤ名の下に
プロダクト名のキーを作りま
す。InstallShieldなどは自動作成
します。こちらは手動作成が必
要です。[ProductName]
Windows Installerの予約変数で、
プロジェクトのプロパティの
ProductName の設定値です。

(4) インストールされたディレクトリをレジストリに追加しておくとアプリ側で色々と活用できます。その場合は以下のように操作します。[TARGETDIR] は Windows Installer の予約変数でユーザが指定したインストール先を示します。

(5) インストールされたバージョンもレジストリに追加しておくとアプリ側で色々と活用できます。その場合は以下のように操作します。[ProductVersion] は Windows Installer の予約変数でプロジェクトのプロパティの ProductVersionの設定値です。将来のUpdate時に、過去にインストールされたバージョンが分かるとデータの移行判定などに活用できます。

(6) インストール後のレジストリ内容は以下のようになります。これでInstallShieldと同等のレジストリエントリとなります。


ユーザが誤ったバージョンのインストールを防止したり、トラブルシューティング用にインストーラバージョンはどこかに表示しておきたいものです。以下のようにインストーラ画面の文言の変更が可能です。

(1) 左図アイコンを開きます。

(2) [ようこそ] 画面の WelcomTextを変更します。”Adminstrative install“の方も直しておきます。

(3) 変更値のサンプルは以下のとおりです。[ProductVersion] は Windows Installer の予約変数でプロジェクトのプロパティの ProductVersionの設定値です。プロジェクトのプロパティ Localization Japanease でもデフォルト値は英語ですが、変更する場合は日本語を指定しないといけません。

この度は本製品をお買い上げいただきありがとうこざいます。 [ProductName] ver.[ProductVersion]のインストールを継続するには、”次へ(N)>”をクリックします。


(1) User Interface のタブから以下のように追加します。

(2) ライセンス文を .rtf 形式で指定します。


Custom Actionのタブに追加します。インストールとパラレルでVBScript呼出すことは可能でした。しかしVC++ 2005ランタイムがインストールされているかチェックしたかったのですが、VBScript では厳しいようです。InstallShieldのカスタムアクションDLLや専用スクリプトには及ばないようです。

.exeのアクションも試したようでしたが結果は忘れてしまいました。あまり有効ではなかったのでしょう。。。


日本語版と英語版の2つをリリースすることはよくあることかと思います。日本語版から英語版を作る手順は以下のとおりです。InstallShieldなどは、一つのインストーラ定義から多国語のインストーラを生成できますが、こちらはそこまで対応してないようです。

(1) Visual Studio Setup Project のソリューションに、英語のSetup Projectを追加します。

(2) 日本語Projectの各種設定を、英語Project に転記します。Projectファイルをコピーして直接エディタで修正するのでもよいかと。

(3) 英語Project のプロパティLocalization English に変更します。

(4) 日本語版と英語版を同じプロダクトとして扱いたいなら、ProductCodeUpgeadeCode はも合わせておいた方がいいでしょう。(未だ未トライです)

(5) 全体構成は以下のような感じです。


以上、Visual Studio Setup Project である程度実用的なインストーラは作れました。しかし開発環境が用意できない、手がたりない、自身がない、担当者がいなくなったなどお困りの方は、こちらよりご相談ください。

Visual Studio 2019 Setup Projectのインストーラ作成手順まとめ1

Visual Studio Setup Project によるインストーラ作成手順の覚え書きです。高価なインストーラビルダーを導入しなくても、シンプルなアプリなら対話的に作成がです。難解な Windows Installer のAPIを使いプログラミングしなくとも。Visual Studioのエディションは、Professional です。


標準インストールでは入っていないのでPackageを追加します。

メニュー 機能拡張 -> 機能拡張の管理 を開き、Visual Studio Studio Installer Project を探し追加します。なお 2019 と 2022 で機能差は無かったです。

メニュー ツール -> ツールと機能の管理 からではないので注意です。ただ追加後、当メニューから追加済みの確認はできます。

新しいプロジェクトの作成から、Setup Project を選び、以下のように操作します。


(1) アプリfolderに配布する
exe、icon、その他
dll.ocx、設定ファイルなど
を右click menu”Add“で配
置します。

(2) プログラムメニューを
追加します。サプライヤ
名、プロダクト名が一般的です

(3) アプリexeのショートカ
ットを作成します。

(4) 上記(1)で配置したファイルの中
から選択します。

(5) ショートカット
名をプロダクト名
に変更します。

(6) アプリICONを指定しま
す。上記(1)で配置したファ
イルの中から選択します。

(7) プロジェクト設定を項目に従い入力しま
す。InstallAllUsesは基本tureです。PC全体に
一つインストールするという意味です。マルチ
ユーザインストールはアプリ構造も管理も面倒
になり、一般的につかいません。デフォルト
falseなので必ず変更します。

UpgradeCode は Update Installerを作るときの
一意の同一プロダクトを示すキーです。管理記
録しておく必要があります。
Vsesion は Update時には、大きい値でないといけないので、 その時を想定して付与し
ておく必要があります。メジャー. マイナー.リ
リース(Build番号) 形式のみ。数値以外はNGで
す。Manufacturer ProductNameはインスト
ールパス、レジストリキーにも影響するため弊
方では記号はさけるようにしています。
自動的に切替わったりはしないので
Localization はリリースする国に変更します。

(8) 左図アイコンを開きます。

(9) InstallAllUsestureでか
ら変更できないように、イ
ンストール時画面からその
選択を非表示にします。

(10) アプリのユーザ設定値ファイルなど、ア
ンインストール後も残すファイルは、
Permanent True にしておきます。


Debug」Buildは意味ないので「Release」Buildのみ使用します。setup.exe ( .msiのランチャー、OS毎の互換性を吸収するためだったと記憶) と .msi ( Microsoft Installer形式 : インストーラ本体) の2つが生成されます。本プロダクトでは、Install Shieldのように一つの Setup.exe にまとめることはできません。

デバックは通常のアプリとはことなり、メニュー プロジェクト -> インストール より行います。Install Shieldは実インストールされないですが、こちらはされてしまいます。

インストール時の基本的な画面の流れは以下のとおりです。

アンインストール時の流れは以下のとおりです。


以上、これで最低限のインストールが一応できます。しかし本当に使えるインストーラを作るには、以下のような追加設定等が必要です。 これらは Visual Studio Setup Project でもできます

  • 使用許諾文画面の追加。
  • 画面バーナの追加。
  • レジストリキーの追加。
  • 次バージョンでのアップデート対応
  • 英語対応
  • カスタムスクリプト

ということでVisual Studio だけでインストーラは対話的に作れました。しかし開発環境が用意できない、手がたりない、自身がない、担当者がいなくなったなどお困りの方は、こちよりご相談ください。

Swiftでviewを非表示状態にするには?

Swiftでviewを非表示にして、アプリを常駐化したい。他記事にはストレートな答えがみつからなかったため、TRY&ERRした覚書きです。

.NET など同じセンスで書くと、、、 NGでした。

self.hidden() // 効かない、警告でる -> NG

Swift固有の命令をつかってみます、、、NGでした。

dismiss()   // Loginにもどってしまう。-> NG

iPhone / iPad の Home画面に戻します。なるほど...これならアプリを起動したままviewを非表示にできますね。発想を変える必要があったのですね。

 // 結局のところ非表示にはできない。 Home画面に戻す -> OK
  UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)

SwiftでSHA256ハッシュ+Base64+URLセーフエンコードを行うには

サーバ屋さんが MQTT ClientID SHA256ハッシュにくわえ、Base64+URLセーフエンコード にしてくれと言われるので調べて対応した覚え書きです。単にユニーク値で記号を含まないなら、SHA256だけでもいいと思うのですが... こだわりか既存のサーバの作込みがそうなってるのかなと...

Swiftでも、SHA256ハッシュ、Base64 のAPIはありましたが、URLセーフエンコードはなく、これはロジックで組む必要がありました。またこの3段階変換を行い、デバッグ用に中間変換結果も確認しするには、少々オブジェクトの選択扱いがややこしいようでした。コードは以下のとおりです。

  public func ConvertKey(
		baesKey: String, 	// 変換対象のキー
	) -> String
    {
        var ret: String = ""
        
        //--- SHA256値をBase64にエンコードし、URL safeにする。---
        let srcBin:Data?    = baesKey.data(using: .utf8)    // Binaly変換 
        let hashVal         = SHA256.hash( data: srcBin! )  // SHA256ハッシュ (内部はByte配列)
        let hashBin:Data?   = Data( hashVal )               // Binaly変換
        
        // 生成結果のDBG用の確認トレース
        let hastStr = hashVal.compactMap { String(format: "%02x", $0) }.joined()
        print( "HASH=" + hastStr + " len=" + String(hastStr.count) )
        
        // URL64エンコード 
        if let stg1 = hashBin?.base64EncodedString() {
            // Memo: Swiftには、URLセーフAPIはないため、ハンドコードで変換する。
            let stg2    = stg1.replacingOccurrences(of: "=", with: "" )
            let stg3    = stg2.replacingOccurrences(of: "+", with: "-")
            ret         = stg3.replacingOccurrences(of: "/", with: "_")
        }
        else {
            print( "base64EncodedString() error.")
        }
        
        return ret
 }

一旦、Binaly値に変換してあげるとスマートに収まりました。

VS2022にて App Store Connect API キーとアプリ固有パスワードを指定する 【’24.11月】

WindowsのVS2022にて、xamarin project リリースアーカイブ時、App Store Connect API キー アプリ固有パスワード なるものをもとれられるようになったときの対処メモです。詳しい操作はよくおぼえていません。

発端。MAC の VS2022はサポ切れになるとのことで、WindowsのVS2022に切替ようとApple Developer アカウントを追加しようとした時、入力を求められるようになりました。

Appleのヘルプをみると、App Store Connect API キー は、App Store Connect で発行する模様。少し説明に以下不備があるようです。

結局以下のことの模様です。

新規keyを発行します。

keyをDownloadします。

VS2022にimportします。

更に以下のダイアログが現れました。

以下のページで発行する模様。

キー発行のシーケンスは、

以上です。

なおデバック開始時に以下のエラーがでました。未調査です。