[PYTHON] Bis das Crashlytics Kit in eine kivy-basierte iOS-App integriert ist

Kivy ist ein Framework für die Entwicklung von iOS / Android-Apps mit Python. Ich persönlich mag es und berühre es oft, aber da es eine große Sache ist, habe ich Crashlytics, einen Crash-Report-Analysedienst, integriert und mit der Arbeit fortgefahren, damit ich zum Zeitpunkt des Crashs Informationen sammeln kann.

Annahme

Schreiben Sie hier einfach auf

$ (Führen Sie verschiedene Installationen usw. durch.)
$ pip install buildozer
$ mkdir kivyapp
$ cd kivyapp
$ buildozer init
$ buildozer iOS debug
IPA kivyapp-0.0.1.ipa available in the bin directory

Was ist lästig

Lesen Sie, wie Sie das Crashlytics Kit installieren

Das Einbinden von CrashlyticsKit selbst ist extrem einfach. Wenn Sie eine ApplicationDelegate-Klasse haben, die in main aufgerufen wird, können Sie einfach [Fabric with: @ [CrashlyticsKit]]; in die Methode didFinishLaunchingWithOptions einfügen.

Kivy-ios main ()

Die Quellvorlage, die die main () -Funktion auf kivy-ios definiert, befindet sich hier (https://github.com/kivy/kivy-ios/blob/master/tools/templates/main.m). Im Gegensatz zu normalen iOS-Apps wird UIApplicationMain nicht aufgerufen. Wenn ich den Prozess verfolge, scheint er [hier] zu heißen (https://github.com/kivy/kivy-ios/blob/master/src/SDL/src/video/uikit/SDL_uikitappdelegate.m). war. Die Delegate-Klasse wurde in SDLUIKitDelegate in derselben Quelle definiert, sodass das Einstecken der Verarbeitung mühsam wäre.

Was ist passiert

https://gist.github.com/attakei/9c6e887b2662742228c2

Ich habe diese Quellen angeschlossen. Großartiger Schub.

// .h file
@interface SDLUIKitDelegate (KivyAppDelegate)
 
@end

// .m file
@implementation SDLUIKitDelegate (KivyAppDelegate)
 
+ (NSString *)getAppDelegateClassName
{
    return @"KivyAppDelegate";
}
 
@end

Schreiben Sie die Delegate-Klasse, die von der Kategoriefunktion von SDLUIKitDelegate in dieser Implementierung aufgerufen werden soll, zwangsweise neu.

// .h file
@interface KivyAppDelegate: SDLUIKitDelegate
 
@end

// .m file
@implementation KivyAppDelegate

-(void)postFinishLaunch
{
    [Fabric with:@[CrashlyticsKit]];
    
    // call superclass method.(continue to run as kivy)
    [super postFinishLaunch];
}

@end

Überschreiben Sie hier in KivyAppDelegate, das SDLUIKitDelegate erbt, postFinishLaunch () und fügen Sie einen CrashlyticsKit-Aufruf ein. (Da der postFinishLaunch von SDLUIKitDelegate selbst die Hauptoperation von Kivy hat, müssen Sie ihn mit der Override-Methode aufrufen.)

Damit gelang es mir, die App auf der Crashlytics-Seite zu registrieren.

Recommended Posts

Bis das Crashlytics Kit in eine kivy-basierte iOS-App integriert ist
Integrieren Sie Shelty Judgement AI in Ihre Web-App
Bis Sie Ihren eigenen Dolmetscher selbst hosten