『ノベラス』開発メモ
開発中に調べたことをメモします。内容が増えてきたら別ページにログを移動します。
2019/12/04
やること
PWAからXamarin.Formに投げる要求と通知の一覧をバージョンごとに検討
やったこと
13:50-14:00 PWAからの通知
2019/12/02
やること
PWAからXamarin.Formに投げる要求と通知の一覧をバージョンごとに検討
やったこと
やってない
2019/11/30
やること
shell
起動時にURL共有を受け取った際、画面構成が完了するまで待機する、または起動画面を変えるフラグをセットしてURLを開く
やったこと
20:30-23:00 起動時にURL共有を受け取る機能
Android
MainPage.Appearingイベントを使ったけど、そのタイミングでは画面のJSインジェクションが完了してないのでダメだった
2019/11/10
やること
shell
URL共有を受け付ける機能
PWAのURL変更
pwa
PWAのURL変更
テストできるようにする
作業ログ
21:30-03:30 URL共有を受け付ける機能
Android
紆余曲折あってMainActivityではなく小説を開くActivityを作成して、そこからMainActivityを呼び直すようにした
共有でOnNewIntentが呼ばれないのでIntentからURLが開けない問題があった
LaunchModeが標準(Multiple)なら常にOnCreateで動くのでIntent取れるけど、アプリがいくつも開けてしまう
03:30-04:30 PWAにURLのコンテンツを表示する
Novel.vueのhogeメソッドをwindow.ShowNovelに切り出してshellから呼べるようにした
呼んでも画面が反応しない、なんで
キャッシュだった
2019/11/08
やること
shell
Windowsでアーカイブ作成
作業ログ
23:00-05:30 Windowsでアーカイブの作成
Visual Studio 2019のバージョンアップ
MacのXamarin.Formと互換性がなくなったのでMacのVS for Macもバージョンアップ
Xcodeのバージョンアップが必要になったのでMacbookの空き容量を確保してアップデート
Android
アーカイブが作れることを確認
Xamarin.Form, Firebase.Analyticsのバージョンアップ
妙にファイルサイズがでかい
Macで更新前をビルド: 12MB
Winで更新後をビルド: 22MB
Macで更新後をビルド: 21MB
iOS
コードサイニングの設定がうまくいってない
Xcode 11からCodesignKeyにiPhone Distributionではなく、Apple Distributionを使用するようになったが、自動判別がiPhone~のままなのでエラーになっている?
.csprojをエディタで開いて直接Apple~に書き換えればビルド可能かと思ったがそういうわけでもないみたい
アーカイブ作成のときだけ署名IDを明示的に指定することにした
Xamarin.Formのバージョンアップ
macOS
Xamarin.Formのバージョンアップ
相変わらずcodesignで落ちる
UWP
Xamarin.Formのバージョンアップ
Microsoftパートナーセンターにパッケージをアップロードする
できた
05:30-06:00 Xamarin で Catalyst/UIKitForMac
Debug/macOSビルド構成を追加してみたいが眠い
2019/10/28
やること
shell
Firebase Analytics
作業ログ
16:00-23:00 Firebase Analytics
org-chimata-novellusにAndroid, iOSアプリの登録がされていなかったのでする
BigQueryと連携してFirebase Blaze(従量課金)プランに変更
Google アナリティクスへのアップグレードもやってFirebaseのGoogle Analyticsに統合
アカウントどうしよ。chimata.orgアカウントの1サイトにするか、新しいアカウントを作るか
アプリの目的を考えると、chimata.orgの活動とリンクしたりはしないだろうなと思う
chimata.orgはあくまでc18tの発信した情報の拡散具合を解析するもの
そうするとapp.chimata.orgのアレは…まあウェブサイトのアクセス解析かな…
新しいアカウント作って、個別に解析することにした
Novellusアカウントを作成
プロジェクトを修正
Android
Xamarin.Firebase.Analyticsパッケージを追加
google-services.jsonファイルをプロジェクト直下に追加
google-services.jsonファイルのプロパティからビルドアクションをGoogleServicesJsonに変更
ビルド失敗
Xamarin.Andoid.Fabricを追加
動いた
実行してGoogleアナリティクスコンソールで通信の確認
クラッシュする
Xamarin.Android.Crashlyticsを入れたのに設定してなかったからだった。一旦パッケージ削除
動いた
iOS
Xamarin.Firebase.iOS.Analyticsパッケージを追加
GoogleService-Info.plistファイルをプロジェクト直下に追加
GoogleService-Info.plistファイルのプロパティからビルドアクションを BundleResource に変更
GoogleService-Info.plistファイルの IS_ANALYTICS_ENABLEDを true に変更
VS for Macだと開けないのでプログラムから開く->Xcodeで修正
Xcodeで保存したらVS for Macでも開けるようになった
ビルド失敗
Nugetの不具合らしい。依存関係を明示的に指定すればいけるとのこと
Xamarin.Firebase.Core, Xamarin.Firebase.InstanceID, Xamarin.Build.Downloadを追加したらいけた
実行してGoogleアナリティクスコンソールで通信の確認
動いた
21:00-04:00 アーカイブの作成
Android
Google Play ConsoleにAPKアップロードする
Visual Studio for Macのユーザー設定を開き、Google Play アカウントとAndroid 署名キーを設定
Novellus-apk を作成。NASのDocuments/Signatures/以下に署名保存することにした
アーカイブを署名して作成。Google Play Consoleのアプリのリリースのアルファ版としてリリースを実施
APIレベル28未満はアップロードできないと怒られたのでAPIレベルを28に上げる
アップロードできた
iOS
App Store ConnectにIPAアップロードする
VS for MacだとApp Store Connectにつながらないので、アーカイブをXcodeで開いてアップロード
できた
macOS
アーカイブ作ってXcodeで開いてアップロード
エラー: Coulnd't find CFBundleSupportedPlatforms in the Info.plist or LC_VERSION_MIN in the Mach-O
エラー: Rsync faild
エラー: code object is not signed at all
警告: Skipping framework 'QTKit'. It is prohibited (rejected) by the Mac App Store
エラー: /usr/bin/codesign failed.
キーチェーンアクセスを開いて ファイル -> すべてのキーチェーンをロック をしてから再度ビルドする
失敗。コマンド直打ちしてみる。
ノベラス.app: Too many open files
bash: Segmentation fault: 11
もう何もわからない
2019/10/27
やること
shell
リファクタリングとテストをコミットする
Json.NETをUtf8Jsonに置き換え
Firebase Analytics
作業ログ
14:00-22:00 リファクタリングとテスト
3時間で5行くらいの生産性🙅
2週間くらいだらだらやってたのをやっとプッシュした
これ罠だと思うんだけど、Formプロジェクト側で依存してるパッケージをMacプロジェクトでも参照しておかないとmacOSアプリ起動時に落ちる
22:00-23:00 Json.NETをUtf8Jsonに置き換え
C#でJSON扱うときは脳死でNewtonsoft.Jsonみたいなところあったけど、ガンガン変換掛けるので速いの使おうと思いました
でもNewtonsoft.Json十分速いよねという気がする。そのへんのマッピングツールと比較してもJsonConvertのSerializeObject<A>/DeserializeObject<B>で十分速度出るし
JS-C#のリクエスト-レスポンスの対応付けにUUID使ってるんだけどJS側のkeyがUUIDでC#側がuuidで受けてるから動かない。Json.NETのときはなぜか動いてた
JSONのkeyの規約は確かcamelCaseにした気がする。小文字uuidで統一する
23:00-01:00 pwa側の調整
半年ぶりの作業。記憶にない変更がある…コミットしてなかったようだ
Vueのマテリアルデザインコンポーネントフレームワークの選定をしていたっぽい
なんでVuetifyにしたのか覚えてない
Bootstrap.vueでモバイルは違うかな
element-uiは目的に合致してない?で見送った気がする
Vue MaterialとVuetifyで悩んでた気がする
Vuetifyが機能が充実してていい感じかなと思った
とりあえずスタッシュに隠してuuidの変更だけコミット
01:00-3:00 Utf8JsonがiOSで動かない
dotnet osx-x64/Utf8Json.UniversalCodeGenerator.dll
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
dotnet ${SolutionDir}/Utf8Json/Utf8Json.UniversalCodeGenerator.dll -d "${ProjectDir}/Models/" -o "${ProjectDir}/Models/Utf8JsonGenerated.cs"をFormのプレビルドに入れて生成されたコードを使うようにしたんだけどやっぱりNotSupportedExceptionが出る
Json.NETに戻した
2019/10/26
やること
v0.1の実装方法を調べる
作業ログ
00:00-5:30 リンクを開くやつ
ブラウザでリンク踏んだら自動で飛ぶやつ
domainの /.well-known/assetlinks.json にファイル配置する必要あり。はい無理
同じくdomainの /apple-app-site-association にファイル配置。無理
これもdomainの windows-app-web-link にファイル配置が必要
URL共有でアプリを開く方法
Android
iOS
Xamarin.iOSのドキュメントには詳しいことはなかった
UWP
マニフェストファイルをいじってURIを受け取れるようにする。
macOS
アプリ間でのコンテンツ共有機能はないので、アプリ内ブラウザ実装するしかない
対応するページのURL以外は弾く処理を入れないといけない
05:30-06:00 v0.1ロードマップ
shell書いた
pwa書いた
ひとまず1話分開くだけの機能を持ったアプリ