iOSラインでバグを修正
3323 ワード
以前、iOSにとって、オンライン上でバグが発生したのは、iOSのオンライン監査サイクルが長すぎて、少なくとも1週間かかるのか、監査が成功した場合なのか、悩んでいました.多くの会社にはプロのテスターがいないので、プログラマーがテストをして、プログラマーに大きなプレッシャーをかけています.バグが発生した場合、すぐに修復できないので困っています.資料を調べているうちに、JSPochPlatformフレームワークを利用してバグをオンラインで修復できる文章を見て、興奮しました.私たちの福祉ですね.JSPAChPlatformフレームワークのご紹介です
>**役割**:iXSAppがスクリプト言語を取得する能力:Appを動的に更新し、プロジェクトのオリジナルコードを置き換えてバグを修復します.このダイナミックバグ修復機能があると聞いた時はちょっと不思議でしたが、このJSPachはすごいなと思いました.これを使用すると、Appで発生したバグをタイムリーに修正でき、オンラインでバグを修正する時間を節約できます.
>
>**根本原理**:OCの動的言語特性を利用してクラスを動的に修正する方法を実現し、OCのメッセージ転送メカニズムを利用した.
>
>**使用**:[JSPach Platform](http://jspatch.com)は、クライアント開発者のスクリプトの配布と管理、転送セキュリティの処理などの導入を支援するサードパーティのJSPachプラットフォームです.JSPAChプラットフォームがあれば、私たちのバックグラウンドで操作する必要はありません.もちろん、私たちのバックグラウンドがやりたいなら、私たちのバックグラウンドに任せてもいいです.
*まず公式サイトに登録する必要があります(http://jspatch.comユーザーになる
*JSPachを使用する独自のアプリを追加します.アプリの追加が完了すると、それに応じてアプリキーがアプリの一意のIDとして使用されます.
*Appの追加が完了したら、Appのバージョンを追加する必要があります.これにより、このプラットフォームはどのバージョンを知ることができますか?
*修正するコードが必要な場合はjsスクリプトブックを書くAppはJSPachでコード動的修正を行う必要があります
*AppDelegate.mにファイルをロードし、+startWithAppKey:メソッドを呼び出し、パラメータは最初のステップで取得したAppKeyです.次に+syncメソッドを呼び出して更新をチェックします
@implementation AppDelegate
1- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[JSPach startWithAppKey:@「あなたのAppKey」;
[JSPatch sync];
}
@end
*JSPoch SDKにアクセスしているオンラインAPPでコードにバグがあることを発見した場合、crashが発生します.
. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *content = self.dataSource[[indexPath row]];//配列範囲を超えてcrashが発生する可能性があります
XRViewController *controller = [[JPViewController alloc] initWithContent:content];
[self.navigationController pushViewController:controller];
}
@end
*このバグを修正するために、上記の方法を置き換えるJSスクリプトを作成しました.
defineClass("XRTableViewController", {
tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
var row = indexPath.row()
if (self.dataSource().length>row){//越境を判断する論理を加える
var content = self.dataArr()[row];
var controller = XRViewController.alloc().initWithContent(content);
self.navigationController().pushViewController(controller);
}
}
})
JSが書けなければ、プラットフォームはスクリプトエディタも提供してくれます[http://www.jspatch.com/Tools/convertor](http://www.jspatch.com/Tools/convertor)を使用して編集できます.
この場合、Xcodeにmainを作成する必要があります.jsファイル、空のファイルを作成すればいい、JSスクリプトのファイル名は*mainでなければならない.js**.
>XCode 8を使用してアクセスする場合は、プロジェクトCapabilitiesでKeychain Sharingスイッチをオンにする必要があります.そうしないと、シミュレータがスクリプトをダウンロードした後にdecompress error、md 5 didn't matchエラーが発生します(本体が開いているかどうかにかかわらず問題ありません).
![Alt text](http://www.jspatch.com/Public/md/imgs/keychain.png)
>その後、このスクリプトを修正する必要がある場合は、新しいスクリプトを再アップロードできます.APPクライアントは、リクエスト時にスクリプトが更新されたことを発見し、最新のスクリプトをダウンロードして元のスクリプトを上書きし、次回の起動時に実行します.
>あるAPPバージョンのJSスクリプトパッチを直接キャンセルするには、APPバージョンインタフェースでこのAPPバージョンを直接削除することができます.APPクライアントは要求時にスクリプトが削除されたことを発見し、すぐにローカルJSスクリプトファイルを削除し、次回起動時にロードしません.
この技術は確かにくわえて、テンセント、アリはすべて使って、私はすでにプロジェクトの中で使って、感じは確かにとても不思議です.いいですね.好きです.
>**役割**:iXSAppがスクリプト言語を取得する能力:Appを動的に更新し、プロジェクトのオリジナルコードを置き換えてバグを修復します.このダイナミックバグ修復機能があると聞いた時はちょっと不思議でしたが、このJSPachはすごいなと思いました.これを使用すると、Appで発生したバグをタイムリーに修正でき、オンラインでバグを修正する時間を節約できます.
>
>**根本原理**:OCの動的言語特性を利用してクラスを動的に修正する方法を実現し、OCのメッセージ転送メカニズムを利用した.
>
>**使用**:[JSPach Platform](http://jspatch.com)は、クライアント開発者のスクリプトの配布と管理、転送セキュリティの処理などの導入を支援するサードパーティのJSPachプラットフォームです.JSPAChプラットフォームがあれば、私たちのバックグラウンドで操作する必要はありません.もちろん、私たちのバックグラウンドがやりたいなら、私たちのバックグラウンドに任せてもいいです.
*まず公式サイトに登録する必要があります(http://jspatch.comユーザーになる
*JSPachを使用する独自のアプリを追加します.アプリの追加が完了すると、それに応じてアプリキーがアプリの一意のIDとして使用されます.
*Appの追加が完了したら、Appのバージョンを追加する必要があります.これにより、このプラットフォームはどのバージョンを知ることができますか?
*修正するコードが必要な場合はjsスクリプトブックを書くAppはJSPachでコード動的修正を行う必要があります
*AppDelegate.mにファイルをロードし、+startWithAppKey:メソッドを呼び出し、パラメータは最初のステップで取得したAppKeyです.次に+syncメソッドを呼び出して更新をチェックします
#import
@implementation AppDelegate
1- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[JSPach startWithAppKey:@「あなたのAppKey」;
[JSPatch sync];
}
@end
*JSPoch SDKにアクセスしているオンラインAPPでコードにバグがあることを発見した場合、crashが発生します.
@implementation XRTableViewController
. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *content = self.dataSource[[indexPath row]];//配列範囲を超えてcrashが発生する可能性があります
XRViewController *controller = [[JPViewController alloc] initWithContent:content];
[self.navigationController pushViewController:controller];
}
@end
*このバグを修正するために、上記の方法を置き換えるJSスクリプトを作成しました.
//main.js
defineClass("XRTableViewController", {
tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
var row = indexPath.row()
if (self.dataSource().length>row){//越境を判断する論理を加える
var content = self.dataArr()[row];
var controller = XRViewController.alloc().initWithContent(content);
self.navigationController().pushViewController(controller);
}
}
})
JSが書けなければ、プラットフォームはスクリプトエディタも提供してくれます[http://www.jspatch.com/Tools/convertor](http://www.jspatch.com/Tools/convertor)を使用して編集できます.
この場合、Xcodeにmainを作成する必要があります.jsファイル、空のファイルを作成すればいい、JSスクリプトのファイル名は*mainでなければならない.js**.
>XCode 8を使用してアクセスする場合は、プロジェクトCapabilitiesでKeychain Sharingスイッチをオンにする必要があります.そうしないと、シミュレータがスクリプトをダウンロードした後にdecompress error、md 5 didn't matchエラーが発生します(本体が開いているかどうかにかかわらず問題ありません).
![Alt text](http://www.jspatch.com/Public/md/imgs/keychain.png)
>その後、このスクリプトを修正する必要がある場合は、新しいスクリプトを再アップロードできます.APPクライアントは、リクエスト時にスクリプトが更新されたことを発見し、最新のスクリプトをダウンロードして元のスクリプトを上書きし、次回の起動時に実行します.
>あるAPPバージョンのJSスクリプトパッチを直接キャンセルするには、APPバージョンインタフェースでこのAPPバージョンを直接削除することができます.APPクライアントは要求時にスクリプトが削除されたことを発見し、すぐにローカルJSスクリプトファイルを削除し、次回起動時にロードしません.
この技術は確かにくわえて、テンセント、アリはすべて使って、私はすでにプロジェクトの中で使って、感じは確かにとても不思議です.いいですね.好きです.