2023年のiOS開発課題記録

インターネットの冬が到来し、多くの人が廃業しそうな会社から、同じくもうすぐ廃業する可能性のある別の会社に入社するという状況に陥ることになるでしょう。

1. 「リリース」で、Python-Apple-support および PythonKit を介して Python を呼び出すとクラッシュします この問題は、Dianya コミュニティから発生したものです。原因は特定されていますが、完璧な解決策はまだありません。(他の人)

私の iOS プロジェクトでは、Python-Apple-support と PythonKit を使用して Python を呼び出します。
git 上で Python-Apple-support の USAGE に従って統合を完了すると、現在はデバッグ中に通常どおり呼び出すことができます。
ただし、testfliight モードまたはリリース モードでは、
pythonPath および Py_Initialize() を設定するときにクラッシュは発生しません。

guard let stdLibPath = Bundle.main.path(forResource: "python-stdlib", ofType: nil) else { return }
guard let stdDynloadPath = Bundle.main.path(forResource: "python-stdlib/lib-dynload", ofType: nil) else { return }
setenv("PYTHONHOME", stdLibPath, 1)
setenv("PYTHONPATH", "(stdLibPath):(stdDynloadPath)", 1)
Py_Initialize()
//以上内容会被执行不会导致崩溃,并且debug下后续可以正常调用,路径应该是有效的

次に、Python を呼び出すとクラッシュします。

//调用自定义的python文件
let py = Python          //这里会闪退
let a = py.import("diffTool")
let test = a.diff_modelTest("123123123","123123123")

確認したところ、PythonKit でクラッシュが発生しました:
PythonKit-> PythonLibrary+Symbols: Py_IncRef(pointer) は
ポインタ エラーのようです Xcode で次のような 0x0000000000000000 が大量に見つかりました
:
sharedMethodDefinition UnsafeMutablePointer<PythonKit.PyMethodDef> 0x0000000000000000

2. ポッド内のソースコードを変更したのですが、次回からは上書きされてしまうのではないかと心配です。(他の人)

JavaScript の世界では、NPM サードパーティ ライブラリが変更されると、パッチ パッケージ ライブラリを使用してコード パッチを生成および適用できます。それでは、カカオポッドに対してどのような対策を講じることができるのでしょうか?

完全なプロジェクトがあり、独立してデバッグできるコード リポジトリに依存している場合は、コピーをフォークして、それを変更して送信し、podfile 内で、最初に git パブリック リポジトリを指定していた 3 者を次のように指定できます。以下の構成独自の倉庫:

pod 'Alamofire', :git => 'https://github.com/XXX/Alamofire.git', :commit => '0f506b1c45'

次回メインウェアハウスが更新された場合、最新のコードをプルしてマージしたり、最新のコミットを指定したり、指定しなかったりすることができます。

ただし、サードパーティのライブラリは圧縮ファイルのみを提供する場合があります。たとえば、Tencent IM の TUI ライブラリには多くの zip ファイルがあり、各ファイルには多くのサブスペックがあります。このとき、自分で倉庫を建てるのはさらに面倒になります。簡単な解決策は、TUI で始まる各ライブラリを podfile と同じファイル レベルにドラッグし、対応するバージョンの podspec ファイルをそのディレクトリにダウンロードすることです。最後にPodfileで指定します

pod 'TUICore', :path => 'TUICore'

このようにして、ポッドは、ネットワーク バージョンのダウンロードを気にすることなく、ローカル ファイル システムからポッド ターゲットにコードをインポートし、ローカルの変更が上書きされます。このテクノロジーはDevelopment Podsと呼ばれます。

3. Pinduoduo MonkeyDev リバース エラー: コード: -402620415 および -402653103。インストール後、全画面表示もアイコンも表示されず、クラッシュします。現在、MonkeyDev のスクリプトには、Xcode コンパイル システムの新しいバージョンでいくつかのタイミングの問題があり、生成された plist ファイルに問題が発生し、フル スクリーン、アイコン、およびバンドル ID に問題が発生します。初めてコンパイルするときに、MONKEYDEV_DEFAUTL_BUNDLEID=YES を設定すると、iOS16 電話で「不明なエラーが発生しました。ドメイン: com.apple.dt.MobileDeviceErrorDomain コード: -402620415」というエラーが報告されます。このときバンドルIDはオリジナルのものですが、エラーが報告されます。再度コンパイルすると、バンドル ID はプロジェクトで設定したものになります。このとき、コード: -402653103 が報告されます。APP は携帯電話にインストールできますが、自動的に起動することはできません。手動起動後にクラッシュするため、Pinduoduo で何らかの保護を行う必要がありました。上記の問題を解決するには、Xcode のコンパイルタイミングに注意する必要があり、特に 1 つのステップで empty-appname.plist が生成され、MonkeyDev のパックアクティビティの前後に散在して問題が発生します。おそらく、Xcode の新しいバージョンはスクリプトの並列実行をサポートしていると思われます。(他の人)

おすすめ

転載: blog.csdn.net/Mamong/article/details/132112967