Guild icon
swift-developers-japan
開発環境, ライブラリ / catalyst
Avatar
Mac Catalystを利用してiPadアプリをMacアプリにしていっていみる。
2:46 AM
まずは、さらのプロジェクトにMacチェックでMacで動くか確認。→動く
2:48 AM
pod 'Firebase/Analytics'でFireBaseを追加
2:48 AM
→えらーいっぱい。
2:50 AM
とりあえず、この問題から解決していきながら、Catalystを理解していきたいと思う。 もちろん、Catalystに関することなら、なんでも歓迎です。
2:50 AM
If you’ve tried to port an app using Mac Catalyst, you have likely been confronted by a rather common problem: some pods are not compatible with macOS. Crashlytics and Firebase are commonly the first to pop out an error on the screen because of their widespread usage.
2:51 AM
'post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "Pods-[Name of Project]" puts "Updating # OTHER_LDFLAGS to OTHER_LDFLAGS[sdk=iphone]" target.build_configurations.each do |config| xcconfig_path = config.base_configuration_reference.real_path xcconfig = File.read(xcconfig_path) new_xcconfig = xcconfig.sub('OTHER_LDFLAGS =', 'OTHER_LDFLAGS[sdk=iphone] =') File.open(xcconfig_path, "w") { |file| file << new_xcconfig } end end end end'
Avatar
Kishikawa Katsumi 12/22/2019 2:59 AM
試してみましたけど、バイナリ形式でダウンロードされるもののいくつかがiOS用にビルドされているのが原因ですね。 必要のないものだったら除いて動かしたら良さそうですけど、Analyticsで使われる FIRAnalyticsConnector.framework などがそうなので、Firebaseに要望を出して対応を待つのがいいんじゃないですか。 (edited)
3:04 AM
結構対応進んでるようですが、やっぱりまだまだなんですねぇ。
Avatar
Kishikawa Katsumi 12/22/2019 3:05 AM
^ に書いてある解決方法も結局MacCatalystのときに分岐してFIrebase関連のもの(例はCrashlytics)を使わないというものなので、望んでるものではないと思います。
3:06 AM
(MacCatalystのときに使わない、でいいなら合ってます。上に書いてあるのはコードで#if !targetEnvironment(macCatalyst) で使わないようにしつつ、それだけだとCocoaPodsがバイナリをリンクしてしまうので、CocoaPodsの方にも条件分岐を入れる、というものです。)
Avatar
個人的にはDatabaseだけでも使いたいんですけど、まだまだ検証不足です。
3:09 AM
とりあえずFirebaseに要望だしてみます。
Avatar
Kishikawa Katsumi 12/22/2019 3:10 AM
基本的にバイナリは全部xcframework形式で配布する必要があって(そうでないとシミュレータ用のビルドとCatalyst用のビルドが区別できない) 依存関係のうちバイナリでダウンロードされるFramework(上記のFIRAnalyticsConnector.frameworkなど)と、依存関係の libXXX.aもxcframeworkにまとめないといけないんで、もうちょっと時間かかりそう、、というか優先度をあげてもらわないとなかなか難しそうなやつですね。
Avatar
今の所は余計なもの入れずにCatalystで動かすことに注力して学ぶほうがよさそうですね。
3:12 AM
基本的に自分の作ってるアプリには全部Firebase入れてるので、出鼻でくじかれてましたw
Avatar
Kishikawa Katsumi 12/22/2019 3:12 AM
手元でできる解決方法として、 MacCatalystは自身にBundleを含めてプラグインモジュールのようにロードして使える、というのがあるので、 Firebaseはそこから使うようにして、MacCatalystじゃなくてmacOS用のビルドをそのプラグインバンドルにリンクする、というのができそうです。
Avatar
おお。難易度たかそう。(よくわかってない)
Avatar
Kishikawa Katsumi 12/22/2019 3:15 AM
「メインのアプリ(MacCatalyst)」 => 「バンドル(Mac)」=>「Firebaseのライブラリ群(Mac)」 ^ ここでメインのアプリからはバンドルを操作するだけで直接 Firebaseを使わない、、、 まあちょっとラップするコードを書くことになるんで、うまく行ってもどれくらいFirebaseの操作をしてるかで大変さがあがりそうです。
3:15 AM
そもそもできるかどうか、あとで試してみますよ。
Avatar
ありがとうございます。ここで詰まって諦めてる開発者僕以外にもいっぱいいそう。
3:17 AM
少しずつ対応はすすんでるんだなぁって感はあるんですけどね。
3:18 AM
^ バンドルでどうこう、っていうのはこれですね。
3:20 AM
これのLoading an AppKit bundleのところ、 MacCatalystはそれ自体はMacCatalyst用のバイナリが必要ですが、実行自体は普通のMac環境で動いているので、 アプリ内にバンドルとして別のバイナリを同梱して、それを実行時に動的に読み込む分には 普通のMac用ビルドのバイナリが動く、というものです。
3:21 AM
動的ロードして静的に解決できないコードを呼び出すことになるので、 Swiftだといろいろ面倒、、、になるのでObjective-Cに抵抗がなければなお良いです。
3:21 AM
(Swiftだけでも一応できます)
3:21 AM
問題はバンドルにFirebaseも同梱して動かせるかどうか。。。
Avatar
あ、一応自己紹介しておくと札幌のDevSapとWWDCで何度かお会いしてる松浦です。 ごぶさたしてます。こちらは仮想通貨界隈用のアカウントです。
Avatar
Kishikawa Katsumi 12/22/2019 3:24 AM
あら、どうも。全然大丈夫ですね。Swift以前からやってる人だ。
Avatar
Obj-Cは今年までしがみついてて、今年からSwiftデビューしてるので、いいんですけど、Mac開発はハードルたかそうだったので、MacKit?AppKit?は全然わかってないですw
Avatar
Kishikawa Katsumi 12/22/2019 3:26 AM
AppKit、は調べるのも大変なのでしょうがない。。。ただまあ今の話でいうと、Firebaseの呼び出しをラップしていくだけなので出てこないので大丈夫です。
Avatar
今作ってるアプリと数年前にMac用に外注で作ったアプリをCatalystで対応したいなぁと、kisikawaさんのツイートみて思った次第で、Catalystもまだまだ初心者ですw
3:28 AM
いただいたヒントからまずは検証してみます。
Avatar
---------------------- ハマりポイント ---------------------- ・ファイルをプロジェクトに追加すると Command CodeSign failed with a nonzero exit code で、ビルドできないことがある。 resource fork, Finder information, or similar detritus not allowed. も、ついたりするので、 https://goozenlab.com/blog/2019/12/error-xcode/ の方法で対処したりもする。 規則性はいまいち不明で、削除したり追加したりしてたら治ったりする。 ---------------------- 機材チェック let dev = UIDevice.current let strModel = dev.model  //iPad まぁMacなんだろうなと思って、上記の方法でモデル名をとったら、まさかのiPad. (edited)
Avatar
CocoaPods経由でFirestoreを利用するとXcodeでArchiveできない問題がずっとあったんですがシェルスクリプトを実行しながらだとArchiveが可能になりました。 この件をQiitaに追記して、これまで難しかったリリースが可能になりました。(まだCI/CDでは難しい模様) https://qiita.com/fromkk/items/01aeb41544a52b577b96
先日macOS Catalinaがリリースされました。それに伴いTwitter公式アプリもCatalystでmacOS化されてリリースされました。 Twitter 個人的に開発している# TypeもCatalystには向いているアプ...
👀 2
11:21 PM
そして宣伝になりますが# TypeのmacCatalyst版がリリースできました🎉 https://apps.apple.com/jp/app/type/id1214613873
‎# About Type Typeはシンプルで軽快なMarkdownエディターです。

機能一覧

  • 素早いプレビュー(入力画面・一覧画面)
  • 自動保存

素早いプレビュー(入力画面・一覧画面)

入力画面で画面をスワイプするだけで入力したMarkdownをプレビュー出来ます。

自動保存

入力画面を閉じる、アプリを閉じる際に自動的に保存されます。

同期機能

他の端末とMarkdownデータを共有する機能です。 注意事項
  • 定期購入期間
同期機能を利用する限り毎月120円のお支払いが必要です。 ...
🎉 1
Avatar
@かっくん 参考にさせていただきましたー。
❤️ 1
7:47 AM
catalistで作ったMacAppのノラアプリ書き出しは、アーカイブ作ってOrgenizerで書き出すのが正解なんですかね。 上記の問題もあって、面倒なのでデバッグビルドしてMyMacで起動したものも、アイコンの場所を探れば、他のMacでも起動できますが、これだと機種専用になっちゃったりするんだろうか? デバッグ実行時EditSchemeでリリースビルドに下場合は、上記の書き出しと違いはあるんでしょうか? ノラアプリの正しい書き出し方が、いまひとつわからない。何かヒントくださいw
7:50 AM
ARM Macで起動できない
Avatar
Kishikawa Katsumi 11/24/2020 8:10 AM
ArchiveしてDeveloper IDでExportですね。不特定多数に配布するならNotarizationをします。
Avatar
ありがとうございます。やってみます!
Avatar
対応できました。 DeveloperIDでExportするときにAdmin権限が与えられたアカウントでも署名できなかったので、デベロッパ登録したアカウントで自動付与しました。 自分の会社のアカウントはいいですが、預かり物のアカウントだとめんどくさいですね。 その場合は手動でやるしかないのかな。継続調査します。 Notarizaitonしてるアプリは少数派な印象ですね。せっかくなので、試してみたい。
1:46 PM
自分がMacで使いたいツールを作れるのはiOS開発者としては、ちょっと新鮮ですw
Avatar
Kishikawa Katsumi 11/24/2020 2:19 PM
少数派ですね。Notarizingは審査ではなくて機械処理ですぐ返ってくるし自動化も簡単というのが認知されてないっぽい。あとNotarize自体も認知されてない。単にApp Store以外のアプリの起動が制限されたと思われてる。
Avatar
ダウンロードしてインストールするときに、アラートが少しは優しい表現になったりするんですかねw
Avatar
Kishikawa Katsumi 11/24/2020 2:21 PM
App Storeで配布しないアプリにも審査が入る、みたいに最初に思われたのも誤解の要因。 基本的にNotarizationがないアプリは普通の操作では起動できないっすよ。
Avatar
環境設定で許可が必要ってことですよね。誤解が解けるといいっすね。ノラは環境設定で許可して使うものという先入観すらありました。
Avatar
Notarizationと、Gatekeeperごちゃ混ぜになってるのがわかりにくくしてる要因だよなあ。
Avatar
Kishikawa Katsumi 11/24/2020 11:19 PM
なるほど。そうですねえ。
Avatar
今まではMac専属開発者でその状況でしたが、これからはiOSエンジニアがはいってくるので改善されるといいですね。
Avatar
CatalystでMacのキーボード(主に矢印カーソル)でコントロールできる幅を広げたいのですが、タッチしたテーブルのセルなどにフォーカス(フォーカスリングっていうらしいTextFeledを選択したときに青い縁がつく)を移動する方法はありますか? たまたまテーブルのセルにフォーカスリングがついたことがあって、その時は上下矢印で移動ができて便利でした。 ただフォーカスリングがついても、didselectが呼ばれるわけではないので、できれば矢印で動いてリターンでセレクトできるのがベストなんですが。。。 (edited)
Avatar
幅を広げる...?
6:27 PM
これのことかな?
Avatar
お。どこだろうw
Avatar
システム環境設定の、キーボードの設定ですね
Avatar
ああ、アプリ開発側じゃなく、Macの設定ですかぁ。。
Avatar
そうです
Avatar
あーすごく惜しいw TABでフォーカスが変わるところまでは動きました。
5:50 PM
逆にOSでこういうのがフォローされてると、アプリで独自に実装するとぶつかりそうorz
Avatar
そうですね、確かに。
Avatar
Appleの公式メールみたいに選択してる記事を↑↓で移動したいだけなんですけどねぇ。。
5:53 PM
理想は上下でカーソルリング移動、リターンで記事を選択(touch up insideと同等処理)なんですが、ハードル高そう。
5:55 PM
ショートカットみたいにキーボード監視して独自実装もできそうだけど、そうなるとOSレベルである程度動くのが邪魔。
Avatar
Macのアプリアイコンにドラッグアンドドロップでファイルを読ませる方法ご存知ないですか? アプリウインドウへのドラッグアンドドロップはできています。
Exported 67 message(s)
Timezone: UTC+0