1649276700
「 NativeScriptアプリとプラグインの完全なソースをどの程度開発できるのか」と疑問に思ったことはありませんか。NativeScriptフレームワークが完全なネイティブプラットフォーム(iOS / Android)APIアクセスを提供することをすでにご存知でしょう。それはすべて問題ありませんが、「コーナーケース」のバグのデバッグが必要になり、内部を調べてネイティブのObjective-C /を掘り下げる必要がある、避けられない将来の状況にとって、それはどういう意味ですか。プラグインコードのJavaコード?この質問への答えは、「はい、できます!」と響き渡ります。。しかし、次の質問「どうやって?」はどうですか?
これは私が答えようとする質問です-そしてプラグインのコードのネイティブソースコードをデバッグするためのまったく新しいアプローチを紹介します。
今日はnativescript-dev-debugging
、ダウンロードできるnpmパッケージを紹介します。
npm i nativescript-dev-debugging --save-dev
このパッケージは、アプリのUI、動作、またはコードのコンパイル/バンドルを提供しないという点で、他のNativeScriptnpmパッケージとは異なります。しかし、それはワークフローとして最もよく説明される何かを提供します。わかりました、「ワークフローとは何ですか?」と尋ねることができます。
ワークフローは、リソースを体系的に編成して、資料を変換したり、サービスを提供したり、情報を処理したりするプロセスによって可能になる、組織化された反復可能なビジネスアクティビティのパターンで構成されます。(ウィキペディア)
これは、特にNativeScriptプラグインをデバッグするnativescript-dev-debugging
タスクのために提供されるものです。そのコア機能では、パッケージは基本的に次の5つのステップを実行します。
.aar
ファイルとファイルを消費し.framework
ていて、それらのソースコード(別のネイティブiOSおよびAndroidチームが作成したもの)があるとします。上記のシーケンスの最終製品は、NativeScriptプラグインでの作業中に開発エクスペリエンスを向上させるために使用できる「ワークフロー」です。このようなプラグインの簡単な例は、tns-core-modules
プラグインを使用するプラグインです。プラグインは、ビルド済みのファイルtns-core-modules-widgets
を保持するだけです。.aar.framework
さて、これまでに成功した場合は、「わかりました。「もの」を再構築する必要がありますが、「ワークフロー」はどうですか?」と自問する必要があります。さて、これはどのように-そしてなぜそのようなパッケージのアイデアnativescript-dev-debugging
が作成されたのかを説明するのに最適な時期です。
NativeScriptチームの内部では、99%の人がプラグインで使用されているライブラリのネイティブコードを変更し(NativeScriptではすべてがプラグインであることを忘れないでください)、そのコードを手動で再構築し、製品を手動で移動します。そのビルドをプラグインプラットフォームディレクトリに追加し、新しい機能または修正された機能をテストするために使用されるNSアプリケーションのビルドを手動でトリガーします。ご覧のとおり、このワークフローには「手動」がたくさんあるので、「これを「手動」で自動化して、NativeScriptチーム全体がフレームワークで日常業務を行うときに同じアプローチを使用できるとしたらどうなるか」というアイデアがありました。 」。これは、すべてのチームがより生産的になり、誰もが物事がどのように行われるかのステップを知っているので、より簡単なコラボレーションを可能にすることを意味します。
当然のことながら、このワークフローの統合と自動化について何かを行うことを決定した後、すぐにこの出力をNativeScriptコミュニティ全体で利用できるようにすることを決定しました。これにより、このようなタスクに直面するすべての人が作業をより速く簡単に行えるようになり、さらにはライブラリのネイティブコードを変更することはそれほど難しくありません。
「これは情報が多すぎる」と考えている必要があります。ワークフローを教えてください。それで完了です。運が良ければ、nativescript-dev-debugging
開発プラグインは、その機能を理解すれば比較的簡単に使用できます。
npm install nativescript-dev-debugging
まず、パッケージをインストール()して構成し、すべての内部ビルド/ウォッチスクリプトがソースコードで機能するようにする必要があります。パッケージをインストールした後、デバッグ/開発するすべてのソースコードをビルドするために使用されるすべての「パーツ」の場所を尋ねる対話型の構成手順に従うだけです。
パッケージのインストール後に生成される構成は次のとおりです。
{
"pluginSrcFolder": "/Users/USER/plugin_repo/src",
"pluginPlatformFolder": "/Users/USER/plugin_repo/src/platforms",
"pluginIosSrcFolder": "/Users/USER/plugin_repo/src-native/ios",
"iosLibraryName": "LibraryName",
"pluginAndroidSrcFolder": "/Users/USER/plugin_repo/src-native/android",
"androidLibraryName": "LibraryName",
"demoFolder": "/Users/USER/plugin_repo/demo",
"demoAngularFolder": "/Users/USER/plugin_repo/demo-angular",
"demoVueFolder": "/Users/USER/plugin_repo/demo-vue",
"provisioningProfile": ""
}
.debug.config.json
これは、プラグインの初期設定後のすべての構成を保持するという名前のファイルの内容です。これは、NSプラグインのCIテストを有効にするために使用できますが、これについては後で詳しく説明します。
パッケージをインストールした後、プラグインpackage.json
にいくつかの新しいnpmスクリプトコマンドがあることに気付くでしょう。nativescript-dev-debugging
これは、パッケージのすべての魔法が生きている場所です。現在または将来、これらのコマンドを更新する必要はありません。プラグインを修正および新機能で更新すると、コマンドは自動的に維持されます。これらのコマンドは、プラグインによって維持されるワークフローの一部と見なすことができるため、ネイティブライブラリの構築方法について心配する必要はありません。
メインnd.run
コマンドの実行は次のようになります。
パッケージを正常にインストールして構成した後、使用するメインのnpmスクリプトコマンドはですnd.run
。このコマンドは、インタラクティブな方法ですべての機能を提供するため、作業の特定の瞬間に開始するワークフローを簡単に選択できます。提供されている現在のワークフローは次のとおりです。iOS用に2つ、Android用に2つです。
特定のコマンドをすべて覚えておく必要はありません。適切なワークフローをトリガーできる、より「インタラクティブな」方法があります。詳細については後で説明します。
nativescript-dev-debugging
プラグインを実際のユースケースでどのように使用できるかを見てみましょう。私の例tns-core-modules
では、NativeScriptチームとコミュニティによって開発および保守されているパッケージを使用することにしました。始める前に、架空の目標と私たちが抱えている課題を設定しましょう。
私たちの目標: tns-core-modulesのネイティブiOSおよびAndroidコードにあると思われる問題を調査します。
課題:
まず、ローカルバージョンtns-core-modules
、tns-core-modules-widgets
ソースコード、およびテストアプリケーションを準備します。これはプラグインの要件ではないことに注意してnativescript-dev-debugging
ください。NSプラグインシードが示唆するように、プラグインのソースコードのシンボリックリンクを使用してテストアプリをすでに準備している場合は回避できます。
tns-core-modules
とのそれぞれのリポジトリをダウンロードする必要がありますtns-core-modules-widgets
。こことここからそうすることができます。以下のコマンドが最適に機能するように、両方をデスクトップのns-dev-debuggingというディレクトリの同じディレクトリにダウンロードしてください。どちらのリポジトリも「開発者ワークフロー」を提供します。続行する前にそれらを読むことをお勧めしますが、必須ではありません。tns-core-modules
ディレクトリに移動し、ターミナルで開いてTypeScriptコンパイラを実行します。NativeScriptリポジトリのルートから次のコマンドを実行します。cd NativeScript/tns-core-modules/ && tsc
apps
npmは以前にコンパイルされたローカルtns-core-modulesをインストールします。cd ../apps/ && npm i ../tns-core-modules/
tns-core-modules-widgets
リポジトリのルートに移動し、そのbuild.sh
スクリプトを実行します。これにより、必要なすべてのアセットが作成され、プラグインのローカルコピーを含むdistディレクトリが作成されます。cd ../../tns-core-modules-widgets && bash build.sh
tns-core-modules
ソースディレクトリ(tns-core-modulesのappsディレクトリ)に戻り、npmで以前にビルドしたtns-core-modules-widgetsを再度インストールします。cd ../NativeScript/tns-core-modules/ && npm i ../../tns-core-modules-widgets/dist/package
すべてのローカルソースコードが準備され、テストアプリがセットアップされたので、nativescript-dev-debugging
プラグインをインストールして構成するだけです。
tns-core-modules
ディレクトリ(これはデバッグするプラグインです)に移動n.debug.config.json
し、次の内容のファイルを作成します(デフォルトでは、このファイルはプラグインの初期構成時に自動生成されますが、この例では、事前設定を使用します。定義された構成オプション):
{
"pluginSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/tns-core-modules",
"pluginPlatformFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/dist/package/platforms",
"pluginIosSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/ios/TNSWidgets",
"iosLibraryName": "TNSWidgets",
"pluginAndroidSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/android",
"androidLibraryName": "widgets",
"demoFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"demoAngularFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"demoVueFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"provisioningProfile": ""
}
上記のディレクトリパスを環境からの実際のパスに変更する必要があることに注意してください(を変更してください
UserNamePlaceHolder
)
次に、nativescript-dev-debugging
プラグインをインストールします。
npm i nativescript-dev-debugging --save-dev
以上です!完了です。devプラグインはローカルファイルを使用してインストールされているはずです。これで、tns-core-modulesファイルにn.debug.config.json
すべてのnpmスクリプトコマンドが表示されます。nd.*package.json
$ npm run nd.help
を実行して選択することにより、どのコマンドを使用できるかを見てみましょうmain
。これにより、作業したい特定の状況のワークフローをトリガーするいくつかのスクリプトコマンドが一覧表示されます。たとえば$ npm run nd.demo.ios
、プラグインのネイティブコードを表示したいが、変更を加える予定がない場合に使用できます。それに。それ以外の場合は、「コマンド」を使用することをお勧めします。$ npm run nd.run
これは、シナリオを簡単に選択できるガイド付きワークフローと、「ファイルウォッチャー」をトリガーしてネイティブソースコードを再構築する機能を提供するためです。
上記の例が何につながるかをよりよく理解するために、これらのビデオでiOSおよびAndroidで実行した場合の結果を示すこのビデオをここで見ることができます。
iOSで「nativescript-dev-debugging」を使用する
Androidで「nativescript-dev-debugging」を使用する
より簡単な方法!
nativescript-dev-debugging
しかし、上記の長いスクリプトコマンドを覚えていなくても、コマンドを使用する簡単な方法があります。npm run nd.run
開始するワークフローに関するプロンプトを表示する最短のコマンドを覚えておくだけです。
「テストアプリ」を実行するコマンドのいずれかを実行すると、プラグインのネイティブソースコードを使用してXcodeまたはAndroidStudioが自動的に開きます。デバッグセッションを開始するには、テストアプリのプロセスにアタッチする必要があります。
iOSの場合、Xcodeを開いた後、[デバッグ]> [プロセスにアタッチ]メニューに移動し、テストアプリのIDを見つけて(IDを見つけるにpackage.json
は、NativeScriptアプリの「id」タグを探します)、次のように選択します。
Androidの場合、Android Studioを開いた後、上部のタブストリップメニューの右側にある[デバッガーをAndroidプロセスにアタッチ]アイコンをクリックします。アプリのプロセスが表示されるように、必ず[すべてのプロセスを表示]チェックボックスをオンにしてください。
ここまで進んだら、この拡張ブログ投稿を読んでいただきありがとうございます!これがお役に立てば幸いです。また、開発中の(そして将来開発される予定の)すべてのクールなNativeScriptプラグインに役立つことを願っています。
ソース:https ://blog.nativescript.org/a-guide-to-debugging-your-nativescript-plugins/
1649276700
「 NativeScriptアプリとプラグインの完全なソースをどの程度開発できるのか」と疑問に思ったことはありませんか。NativeScriptフレームワークが完全なネイティブプラットフォーム(iOS / Android)APIアクセスを提供することをすでにご存知でしょう。それはすべて問題ありませんが、「コーナーケース」のバグのデバッグが必要になり、内部を調べてネイティブのObjective-C /を掘り下げる必要がある、避けられない将来の状況にとって、それはどういう意味ですか。プラグインコードのJavaコード?この質問への答えは、「はい、できます!」と響き渡ります。。しかし、次の質問「どうやって?」はどうですか?
これは私が答えようとする質問です-そしてプラグインのコードのネイティブソースコードをデバッグするためのまったく新しいアプローチを紹介します。
今日はnativescript-dev-debugging
、ダウンロードできるnpmパッケージを紹介します。
npm i nativescript-dev-debugging --save-dev
このパッケージは、アプリのUI、動作、またはコードのコンパイル/バンドルを提供しないという点で、他のNativeScriptnpmパッケージとは異なります。しかし、それはワークフローとして最もよく説明される何かを提供します。わかりました、「ワークフローとは何ですか?」と尋ねることができます。
ワークフローは、リソースを体系的に編成して、資料を変換したり、サービスを提供したり、情報を処理したりするプロセスによって可能になる、組織化された反復可能なビジネスアクティビティのパターンで構成されます。(ウィキペディア)
これは、特にNativeScriptプラグインをデバッグするnativescript-dev-debugging
タスクのために提供されるものです。そのコア機能では、パッケージは基本的に次の5つのステップを実行します。
.aar
ファイルとファイルを消費し.framework
ていて、それらのソースコード(別のネイティブiOSおよびAndroidチームが作成したもの)があるとします。上記のシーケンスの最終製品は、NativeScriptプラグインでの作業中に開発エクスペリエンスを向上させるために使用できる「ワークフロー」です。このようなプラグインの簡単な例は、tns-core-modules
プラグインを使用するプラグインです。プラグインは、ビルド済みのファイルtns-core-modules-widgets
を保持するだけです。.aar.framework
さて、これまでに成功した場合は、「わかりました。「もの」を再構築する必要がありますが、「ワークフロー」はどうですか?」と自問する必要があります。さて、これはどのように-そしてなぜそのようなパッケージのアイデアnativescript-dev-debugging
が作成されたのかを説明するのに最適な時期です。
NativeScriptチームの内部では、99%の人がプラグインで使用されているライブラリのネイティブコードを変更し(NativeScriptではすべてがプラグインであることを忘れないでください)、そのコードを手動で再構築し、製品を手動で移動します。そのビルドをプラグインプラットフォームディレクトリに追加し、新しい機能または修正された機能をテストするために使用されるNSアプリケーションのビルドを手動でトリガーします。ご覧のとおり、このワークフローには「手動」がたくさんあるので、「これを「手動」で自動化して、NativeScriptチーム全体がフレームワークで日常業務を行うときに同じアプローチを使用できるとしたらどうなるか」というアイデアがありました。 」。これは、すべてのチームがより生産的になり、誰もが物事がどのように行われるかのステップを知っているので、より簡単なコラボレーションを可能にすることを意味します。
当然のことながら、このワークフローの統合と自動化について何かを行うことを決定した後、すぐにこの出力をNativeScriptコミュニティ全体で利用できるようにすることを決定しました。これにより、このようなタスクに直面するすべての人が作業をより速く簡単に行えるようになり、さらにはライブラリのネイティブコードを変更することはそれほど難しくありません。
「これは情報が多すぎる」と考えている必要があります。ワークフローを教えてください。それで完了です。運が良ければ、nativescript-dev-debugging
開発プラグインは、その機能を理解すれば比較的簡単に使用できます。
npm install nativescript-dev-debugging
まず、パッケージをインストール()して構成し、すべての内部ビルド/ウォッチスクリプトがソースコードで機能するようにする必要があります。パッケージをインストールした後、デバッグ/開発するすべてのソースコードをビルドするために使用されるすべての「パーツ」の場所を尋ねる対話型の構成手順に従うだけです。
パッケージのインストール後に生成される構成は次のとおりです。
{
"pluginSrcFolder": "/Users/USER/plugin_repo/src",
"pluginPlatformFolder": "/Users/USER/plugin_repo/src/platforms",
"pluginIosSrcFolder": "/Users/USER/plugin_repo/src-native/ios",
"iosLibraryName": "LibraryName",
"pluginAndroidSrcFolder": "/Users/USER/plugin_repo/src-native/android",
"androidLibraryName": "LibraryName",
"demoFolder": "/Users/USER/plugin_repo/demo",
"demoAngularFolder": "/Users/USER/plugin_repo/demo-angular",
"demoVueFolder": "/Users/USER/plugin_repo/demo-vue",
"provisioningProfile": ""
}
.debug.config.json
これは、プラグインの初期設定後のすべての構成を保持するという名前のファイルの内容です。これは、NSプラグインのCIテストを有効にするために使用できますが、これについては後で詳しく説明します。
パッケージをインストールした後、プラグインpackage.json
にいくつかの新しいnpmスクリプトコマンドがあることに気付くでしょう。nativescript-dev-debugging
これは、パッケージのすべての魔法が生きている場所です。現在または将来、これらのコマンドを更新する必要はありません。プラグインを修正および新機能で更新すると、コマンドは自動的に維持されます。これらのコマンドは、プラグインによって維持されるワークフローの一部と見なすことができるため、ネイティブライブラリの構築方法について心配する必要はありません。
メインnd.run
コマンドの実行は次のようになります。
パッケージを正常にインストールして構成した後、使用するメインのnpmスクリプトコマンドはですnd.run
。このコマンドは、インタラクティブな方法ですべての機能を提供するため、作業の特定の瞬間に開始するワークフローを簡単に選択できます。提供されている現在のワークフローは次のとおりです。iOS用に2つ、Android用に2つです。
特定のコマンドをすべて覚えておく必要はありません。適切なワークフローをトリガーできる、より「インタラクティブな」方法があります。詳細については後で説明します。
nativescript-dev-debugging
プラグインを実際のユースケースでどのように使用できるかを見てみましょう。私の例tns-core-modules
では、NativeScriptチームとコミュニティによって開発および保守されているパッケージを使用することにしました。始める前に、架空の目標と私たちが抱えている課題を設定しましょう。
私たちの目標: tns-core-modulesのネイティブiOSおよびAndroidコードにあると思われる問題を調査します。
課題:
まず、ローカルバージョンtns-core-modules
、tns-core-modules-widgets
ソースコード、およびテストアプリケーションを準備します。これはプラグインの要件ではないことに注意してnativescript-dev-debugging
ください。NSプラグインシードが示唆するように、プラグインのソースコードのシンボリックリンクを使用してテストアプリをすでに準備している場合は回避できます。
tns-core-modules
とのそれぞれのリポジトリをダウンロードする必要がありますtns-core-modules-widgets
。こことここからそうすることができます。以下のコマンドが最適に機能するように、両方をデスクトップのns-dev-debuggingというディレクトリの同じディレクトリにダウンロードしてください。どちらのリポジトリも「開発者ワークフロー」を提供します。続行する前にそれらを読むことをお勧めしますが、必須ではありません。tns-core-modules
ディレクトリに移動し、ターミナルで開いてTypeScriptコンパイラを実行します。NativeScriptリポジトリのルートから次のコマンドを実行します。cd NativeScript/tns-core-modules/ && tsc
apps
npmは以前にコンパイルされたローカルtns-core-modulesをインストールします。cd ../apps/ && npm i ../tns-core-modules/
tns-core-modules-widgets
リポジトリのルートに移動し、そのbuild.sh
スクリプトを実行します。これにより、必要なすべてのアセットが作成され、プラグインのローカルコピーを含むdistディレクトリが作成されます。cd ../../tns-core-modules-widgets && bash build.sh
tns-core-modules
ソースディレクトリ(tns-core-modulesのappsディレクトリ)に戻り、npmで以前にビルドしたtns-core-modules-widgetsを再度インストールします。cd ../NativeScript/tns-core-modules/ && npm i ../../tns-core-modules-widgets/dist/package
すべてのローカルソースコードが準備され、テストアプリがセットアップされたので、nativescript-dev-debugging
プラグインをインストールして構成するだけです。
tns-core-modules
ディレクトリ(これはデバッグするプラグインです)に移動n.debug.config.json
し、次の内容のファイルを作成します(デフォルトでは、このファイルはプラグインの初期構成時に自動生成されますが、この例では、事前設定を使用します。定義された構成オプション):
{
"pluginSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/tns-core-modules",
"pluginPlatformFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/dist/package/platforms",
"pluginIosSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/ios/TNSWidgets",
"iosLibraryName": "TNSWidgets",
"pluginAndroidSrcFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/tns-core-modules-widgets/android",
"androidLibraryName": "widgets",
"demoFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"demoAngularFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"demoVueFolder": "/Users/‘UserNamePlaceHolder’/Desktop/ns-dev-debugging/NativeScript/apps",
"provisioningProfile": ""
}
上記のディレクトリパスを環境からの実際のパスに変更する必要があることに注意してください(を変更してください
UserNamePlaceHolder
)
次に、nativescript-dev-debugging
プラグインをインストールします。
npm i nativescript-dev-debugging --save-dev
以上です!完了です。devプラグインはローカルファイルを使用してインストールされているはずです。これで、tns-core-modulesファイルにn.debug.config.json
すべてのnpmスクリプトコマンドが表示されます。nd.*package.json
$ npm run nd.help
を実行して選択することにより、どのコマンドを使用できるかを見てみましょうmain
。これにより、作業したい特定の状況のワークフローをトリガーするいくつかのスクリプトコマンドが一覧表示されます。たとえば$ npm run nd.demo.ios
、プラグインのネイティブコードを表示したいが、変更を加える予定がない場合に使用できます。それに。それ以外の場合は、「コマンド」を使用することをお勧めします。$ npm run nd.run
これは、シナリオを簡単に選択できるガイド付きワークフローと、「ファイルウォッチャー」をトリガーしてネイティブソースコードを再構築する機能を提供するためです。
上記の例が何につながるかをよりよく理解するために、これらのビデオでiOSおよびAndroidで実行した場合の結果を示すこのビデオをここで見ることができます。
iOSで「nativescript-dev-debugging」を使用する
Androidで「nativescript-dev-debugging」を使用する
より簡単な方法!
nativescript-dev-debugging
しかし、上記の長いスクリプトコマンドを覚えていなくても、コマンドを使用する簡単な方法があります。npm run nd.run
開始するワークフローに関するプロンプトを表示する最短のコマンドを覚えておくだけです。
「テストアプリ」を実行するコマンドのいずれかを実行すると、プラグインのネイティブソースコードを使用してXcodeまたはAndroidStudioが自動的に開きます。デバッグセッションを開始するには、テストアプリのプロセスにアタッチする必要があります。
iOSの場合、Xcodeを開いた後、[デバッグ]> [プロセスにアタッチ]メニューに移動し、テストアプリのIDを見つけて(IDを見つけるにpackage.json
は、NativeScriptアプリの「id」タグを探します)、次のように選択します。
Androidの場合、Android Studioを開いた後、上部のタブストリップメニューの右側にある[デバッガーをAndroidプロセスにアタッチ]アイコンをクリックします。アプリのプロセスが表示されるように、必ず[すべてのプロセスを表示]チェックボックスをオンにしてください。
ここまで進んだら、この拡張ブログ投稿を読んでいただきありがとうございます!これがお役に立てば幸いです。また、開発中の(そして将来開発される予定の)すべてのクールなNativeScriptプラグインに役立つことを願っています。
ソース:https ://blog.nativescript.org/a-guide-to-debugging-your-nativescript-plugins/