[PYTHON] Jusqu'à ce que le kit Crashlytics soit incorporé dans une application iOS basée sur kivy

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.

supposition

É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

Ce qui est gênant

Découvrez comment installer Crashlytics Kit

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.

Kivy-ios principal ()

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.

Qu'est-il arrivé

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.

Recommended Posts

Jusqu'à ce que le kit Crashlytics soit incorporé dans une application iOS basée sur kivy
Intégrez Shelty Judgment AI dans votre application Web
Jusqu'à ce que vous hébergiez vous-même votre propre interprète