Kivy est un framework pour développer des applications iOS / Android avec Python. Personnellement, je l'aime et je le touche souvent, mais comme c'est un gros problème, j'ai incorporé Crashlytics, un service d'analyse des rapports de crash, et j'ai procédé au travail pour que je puisse collecter des informations au moment du crash.
Écrivez ici facilement
$ (Faites diverses installations, etc.)
$ pip install buildozer
$ mkdir kivyapp
$ cd kivyapp
$ buildozer init
$ buildozer iOS debug
IPA kivyapp-0.0.1.ipa available in the bin directory
Incorporer CrashlyticsKit lui-même est extrêmement facile, et si vous avez une classe ApplicationDelegate appelée dans main, vous pouvez simplement mettre `` [Fabric with: @ [CrashlyticsKit]]; '' dans la méthode didFinishLaunchingWithOptions.
Le modèle source qui définit la fonction main () sur kivy-ios est ici. Contrairement aux applications iOS classiques, UIApplicationMain n'est pas appelé. Quand je trace le processus, il semble qu'il soit appelé par this était. La classe Delegate a été définie dans SDLUIKitDelegate dans la même source, il serait donc compliqué de brancher le traitement.
https://gist.github.com/attakei/9c6e887b2662742228c2
J'ai branché ces sources. Grande poussée.
// .h file
@interface SDLUIKitDelegate (KivyAppDelegate)
@end
// .m file
@implementation SDLUIKitDelegate (KivyAppDelegate)
+ (NSString *)getAppDelegateClassName
{
return @"KivyAppDelegate";
}
@end
Réécrire de force la classe Delegate qui doit être appelée par la fonction de catégorie de SDLUIKitDelegate dans cette implémentation,
// .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
Ici, dans KivyAppDelegate qui hérite de SDLUIKitDelegate, remplacez postFinishLaunch () et insérez un appel CrashlyticsKit. (Puisque le postFinishLaunch de SDLUIKitDelegate lui-même a l'opération principale de Kivy, assurez-vous de l'appeler avec la méthode override)
Avec cela, j'ai réussi à enregistrer l'application du côté Crashlytics.