- 投稿日:2020-03-23T19:19:41+09:00
flutterアプリを実機でビルドする時にハマったこと
なんかビルドエラーがやたらめったらでる
環境を移動させてから、ライトニングtoタイプCケーブルが届くまで実機テストができなかったのですが、届いたので、試してみたのですが、どうもうまくいかないのですね。
$ flutter run -d DEVICE_ID . . . Could not build the precompiled application for the device. Error launching application on sticky-fingers.下記の方法でも解決できず
$ flutter clean$ pod install解決策
一旦cocoapodsを削除してから、再インストールすると、ビルドができました。
$ pod deintegrate $ pod install
- 投稿日:2020-03-23T16:00:48+09:00
【XCode:エラーの読み方】exceptionPreprocess ってなんだろうって調べたら
はじめに
iOS のシミュレーター上でどうやらこのようなException が吐き出されたらしい。
となった時動作確認環境
iOS12シミュレーター
Xcode11.3これりゃなんだろう??
LogFailed to set (kerning) user defined inspected property on (UILabel): [<UILabel 0x############> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key kerning. *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndexedSubscript:]: index # beyond bounds for empty array' *** First throw call stack: ( 0 CoreFoundation 0x################ __exceptionPreprocess + $$$あぁエラーだ〜〜
諦めようとなる前に、一度、検索してみましょう
いくつか検索ワードがありました。
これはなんだろう?
検索exceptionPreprocessCoreFoundation で、ExceptionPreprocess が起こってるみたいだな。って考えてみる。
Preprocess の Exception ということなのでしょうね。
ここで一度落ち着く。
って調べてみる。
ざっくり調べてみると、、、
iOS9でアプリが起動直後にクラッシュする場合の回避方法
https://qiita.com/peromasamune/items/716de6da66dd31faeba8
にも出てるみたいですね。
これは、Exception は一緒だけどもその上のエラーメッセージが違うぞっていうのがわかる。
どうやら、XCode 側の処理でダメなことしてるっぽいって考えておく。検索this class is not key value coding-compliant for the key kerning.swift初心者:「this class is not key value coding-compliant for the key」の対処方法
https://qiita.com/Atsushi_/items/f7930dd00a2c2ea464cd
どうやら
削除を試みた際に用意していたControllerのみ @IBOutlet や @IBAction 接続を削除してしまうと発生するらしいエラーとのことでした。必ずcontrollerのみでなく、Storyboardの Show the Connections inspecter上からも接続を解除するようにしましょう。
とのころだからどうやら表題のエラーとは別のものらしい。
とわかる。
じゃぁ答えはどこにあるんだろう?ということで、
errorLogTerminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndexedSubscript:]: index # beyond bounds for empty array'これが、問題のエラーが起きているところだった。
NSRangeExceptionRange の Exception が吐き出されているらしい。
どうやら「reason:」理由は、・・・に素直に書いている。ということで、NSArrayM のところに「#」の値はempty array らしいというのがどうやらそう読めるっぽい。
可能性があるのは、これは経験則からすると、型がNSArrayで呼び出していて、NSMutableArray 出ない時によく出るっぽいので、この辺りを読み進めていくと
エラー文を読み進める
errorLog1 某file.dylib 0x################ objc_exception_throw + ## 2 CoreFoundation 0x################ _CFThrowFormattedException + ### 3 CoreFoundation 0x################ -[__NSArrayM objectAtIndexedSubscript:] + ### 4 プロジェクト名 0x################ $%%%%%%%某ViewController某collection某cellForItemAt某UICollection某Cell某Foundation某IndexPath某 + ##### 5 プロジェクト名 0x################ $%%%%%%%某ViewController某collection某cellForItemAt某UICollection某Cell某Foundation某IndexPath某 + ### 6 UIKitCore 0x################ -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + ### 7 UIKitCore 0x################ -[UICollectionView _prefetchItemsForPrefetchingContext:maxItemsToPrefetch:] + ### 8 UIKitCore 0x################ -[UICollectionView layoutSubviews] + ### 9 UIKitCore 0x################ -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + ###### 10 QuartzCore 0x################ -[CALayer layoutSublayers] + ### 11 QuartzCore 0x################ 某Layer16layout_if_neededEPNS_11TransactionE + ### 12 QuartzCore 0x################ 某Layer28layout_and_display_if_neededEPNS_11TransactionE + ## 13 QuartzCore 0x################ 某Context18commit_transactionEPNS_11TransactionEd + ### 14 QuartzCore 0x################ 某Transaction6commitEv + ### 15 QuartzCore 0x################ 某Display11DisplayLink14dispatch_itemsEyyy + ### 16 QuartzCore 0x################ 某display_timer_callbackP12__CFMachPortPvlS1_ + ### 17 CoreFoundation 0x################ __CFMachPortPerform + 157 18 CoreFoundation 0x################ __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + ## 19 CoreFoundation 0x################ __CFRunLoopDoSource1 + ### 20 CoreFoundation 0x################ __CFRunLoopRun + #### 21 CoreFoundation 0x################ CFRunLoopRunSpecific + ### 22 Foundation 0x################ -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + ### 23 プロジェクト名 0x################ $某クラス名某メソッド名や型など + #### 24 プロジェクト名 0x################ $某クラス名某メソッド名や型など + #### 25 プロジェクト名 0x################ $某クラス名某table某didSelectRowAty某_Foundation某IndexPath某 + #### 26 プロジェクト名 0x################ $某クラス名某table某didSelectRowAt某UITable某Foundation某IndexPath某 + ### 27 UIKitCore 0x################ -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:isCellMultiSelect:] + ### 28 UIKitCore 0x################ -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + ## 29 UIKitCore 0x################ -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + ### 30 UIKitCore 0x################ _runAfterCACommitDeferredBlocks + ### 31 UIKitCore 0x################ _cleanUpAfterCAFlushAndRunDeferredBlocks + ### 32 UIKitCore 0x################ _afterCACommitHandler + ## 33 CoreFoundation 0x################ __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + ## 34 CoreFoundation 0x################ __CFRunLoopDoObservers + ### 35 CoreFoundation 0x################ __CFRunLoopRun + #### 36 CoreFoundation 0x################ CFRunLoopRunSpecific + ### 37 GraphicsServices 0x################ GSEventRunModal + ## 38 UIKitCore 0x################ UIApplicationMain + #### 39 プロジェクト名 0x################ main + ## 40 libdyld.dylib 0x################ start + #読み進めていると、プロジェクト名の値メソッド呼び出しているところで値を取り出しているところにnilが入ってるのかなというところがわかりました。
具体的には自分の書き方にエラーがあるとみて自分のプロジェクト名の部分を探す
Log23 プロジェクト名 0x################ $某クラス名某メソッド名や型など + #### 24 プロジェクト名 0x################ $某クラス名某メソッド名や型など + #### 25 プロジェクト名 0x################ $某クラス名某table某didSelectRowAty某_Foundation某IndexPath某 + #### 26 プロジェクト名 0x################ $某クラス名某table某didSelectRowAt某UITable某Foundation某IndexPath某 + ###これはまた具体的なことだ!
エラー文からどこの部分でエラーになっているのか読み取る
クラス名とメソッド名と引数までもが実は連なっていることがわかりました!!!
Error メッセージは何気に具体的に教えていたりします。
この部分はどうやら、行番号だったりしますしね?
まとめ
XCode でのエラーが出た際は、このようにして、Error を読み進めると解決しやすいかもですよ。
またエラーが飛び出したらどういうエラーなのかをシェアしていきます。
ではまた!!!
- 投稿日:2020-03-23T11:01:25+09:00
Flutter iOSでGenerated.xcconfigが読み込めない場合の解決策
FlutterでiOS用にFlavorを追加した際に、Schemaは正常に追加できるものの、自作のxcconfigからGenerated.xcconfigをimportしようとしたところ、xcodeでrunした際に、Generated.xcconfigが見つからない旨のエラーが出ていました。
このままでは開発環境情報をハードコーディングする羽目になってしまう、と困っていたところ、英語で解決策が乗っているサイトを見つけました。
https://www.reddit.com/r/Flutter/comments/d1otpq/different_build_configurations_in_iosxcode_wont/「コピーは絶対するな。新しいxcconfigファイルが置かれているフォルダを確認しろ。」
ということでxcconfigが置かれているフォルダを確認したところ、一つ階層がずれていることに気づきました。
最初Flutterのバグかと思っていましたが、ただのケアレスミスでした。
これで、今の所iOSでもFlavorは十分使えるようになりました。
今後気を付けたいと思います。Don't do that, don't copy and paste the Generated.xcconfig file because you lose important build settings like FLUTTER_BUILD_NUMBER and FLUTTER_BUILD_NAME. You'll want those.
Check to make sure your new scheme xcconfig file is in the right folder. It should be on disk in the Flutter folder. After several hours of banging my head, I noticed that my Production.xcconfig file it was NOT in the /Flutter directory, but a directory above. That's not right, and was causing the error.
I think when you right click and add a xcconfig file in XCode, it doesn't put it in the correctly directory.
- 投稿日:2020-03-23T09:36:40+09:00
[IPhone]で使えるGitHubアプリを比較してみた
スマホでGithubを使いたい
対象読者
- githubを使い始めた方
- IOSブラウザで使うGithubに不満を感じている方
はじめに
最近Githubを使い始めたものです。ウェブ上でバージョン管理できるのは非常に便利ですね。最近では、コードだけではなく簡単なメモ等もマークダウンで書いて使ったりしています。そこで出先や隙間時間にさっき書いたメモを見たいなと感じたときに携帯のウェブページにアクセスするのですがスマホでみるには適していないように感じます。そこで、App StoreでGithubアプリを探したところいくつか見つかったので今回はそれらの特徴を簡単にまとめました。
Github公式アプリ
まずは公式アプリからダウンロードしました。
アプリを起動した感じでは、Iphoneの設定画面に似ている感じがあります。ウェブページから閲覧するのに比べRてアイコン等が大きく操作性は非常によいと感じました。
また、ダークモードに対応しているので夜間に目の負担を軽減することができます。
しかし、ウェブページと比較するとコードの編集等はできないようです。また、マークダウンで記述したファイルがマークダウンとして表示されないのが残念なところです。(README.mdは例外的にマークダウンとして表示されますが)
CodeHub
次はCodeHubをダウンロードしました。
サインインしてみると、まずニュースのページが開きました。設定からアプリ起動時に表示するページを指定できるようです。これは便利ですね。
また、このアプリではマークダウンの表示もできます。しかし、難点としてコード表示時の画面移動がスクロールではなくダブルタップである点です。
マークダウンは表示はできます。こちらもコードの編集はできないようです。GitHawk
次は、[GitHawk](https://apps.apple.com/jp/app/githawk-for-github/id1252320249 "GitHawk)です。こちらは通常のアプリとは異なり、自分のリポジトリを見るというよりはリポジトリのサーチに向いているように感じました。
検索したリポジトリも保存され、通知も受け取ることができるのが特徴です。
ブックマークも可能。