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.
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
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.
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.
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.