Git Product home page Git Product logo

distriqt / ane-exceptions Goto Github PK

View Code? Open in Web Editor NEW
16.0 7.0 2.0 10.26 MB

Exception tracking Adobe AIR Native Extension for Android and iOS

Home Page: https://airnativeextensions.com/extension/com.distriqt.Exceptions

License: MIT License

ActionScript 2.05% Java 2.70% Objective-C 82.68% C 12.57%
native-extensions adobe-air crashes exception-handler android ios airnativeextension actionscript

ane-exceptions's Introduction

built by distriqt //

Exceptions

Exceptions

Exceptions is an AIR Native Extension to enable a global exception handler for iOS and Android.

This will catch and store information about crashes of your application allowing you to process them on the next application run. In using this extension you can report crashes and errors in your application to your own error logging server.

Features

  • Catch exceptions
  • Process exceptions on startup
  • Single API interface - your code works across supported platforms with no modifications
  • Sample project code and ASDocs reference

Documentation

Latest documentation can be found in the documentation site along with the asdocs.

This extension is very simple in the implementation, having only 2 main functions.

To start catching exceptions you simply call setUncaughtExceptionHandler() at some point at the beginning of your application.

Exceptions.service.setUncaughtExceptionHandler();

To check if your application crashed previously you use the hasPendingException() function.

if (Exceptions.service.hasPendingException())
{
	var report:ExceptionReport = Exceptions.service.getPendingException();
	trace( "date: "+    new Date(report.timestamp).toLocaleString() );
	trace( "name: "+    report.name );
	trace( "reason: "+  report.reason );
	trace( "report: "+  report.report );
}

Note

You can generally only have one exception handler in an application.

So if you are using another library that tracks exceptions (Google Analytics or a bug tracker) then the functionality provided here may not work or may stop the library from working.

You should decide which is the more important method and ensure only one method is used in your application.

Native Extensions

The highest quality and widest range of Native Extensions for Adobe AIR

With many native extensions available, we are the largest provider of native extensions for AIR developers. Our mobile solutions allow developers to fast-forward development and focus on building great games and apps.

https://airnativeextensions.com

Acknowledgements

This extension was made possible with support by MovieStarPlanet

MovieStarPlanet

ane-exceptions's People

Contributors

marchbold avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ane-exceptions's Issues

startup error

trace these error on app startup:
VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.
at ComponentsExplorer()

Air SDK 23 and iphone6 ,iOS 10.1.1

Exceptions Android 64bit support

Update the extension to include support for Android 64bit

Starting August 1, 2019, your apps published on Google Play will need to support 64-bit architectures. 64-bit CPUs deliver faster, richer experiences for your users. Adding a 64-bit version of your app provides performance improvements, makes way for future innovation, and sets you up for devices with 64-bit-only hardware.

Adobe AIR Sdk 23 - iOS Package creation

In you try to create a ios package (.ipa) using air sdk 23 you will get an error:

ld: in C:\Users\[UserName]\AppData\Local\Temp\070e0752-57aa-4ebd-88a9-8bb434e77cbc/CrashReporter.framework/CrashReporter(libCrashReporter-iphoneos.a-arm64-master.o), unsupported address encoding (19) of personality function in CIE for architecture arm64
Compilation failed while executing : ld64

exporting or sharing crash reports and original .crash file

is it possible to export original crash file ? it would be helpful to access this file or load original context
currently ane exceptions modifies file content and it is unable symbolicate using xcode symbolicateCrash tool

Here is the example to export to a file

PLCrashReport *report = [[PLCrashReport alloc] initWithData: crashData error: NULL];
    if (report == nil) {
        NSLog(@"Failed to decode crash file "]);
    } else {
        NSString* reportStr = [PLCrashReportTextFormatter stringValueForCrashReport: report withTextFormat: PLCrashReportTextFormatiOS];
        NSString *outputPath = [documentsDirectory stringByAppendingPathComponent: @"app.crash"];
        if (![report writeToFile:outputPath atomically:YES encoding:NSUTF8StringEncoding error:nil]) {
            NSLog(@"Failed to write crash report");
        } else {
            NSLog(@"Saved crash report to: %@", outputPath);
        }

crashreporter.framework Compilation failed while executing : ld64

ld: in C:\\Users\\SAMSUNG\\AppData\\Local\\Temp\\33856d9f-8928-4585-a8cd-c128eb585a9f/CrashReporter.framework/Cr
a-arm64-master.o), sectionForAddress(0x65C17F00021834) address not in any section for architecture arm64
Compilation failed while executing : ld64

we are getting this error using latest air sdk.

is it just as3 uncaughtErrorEvents listener ?

i have event listener to catch exceptions
uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
doest this extension just catching this airs exceptions or it catchs native iso android expcetions caused with this app, too ?

Can I use this alongside with crashlytics?

According to the docs:

You can generally only have one exception handler in an application.
So if you are using another library that tracks exceptions (Google Analytics or a bug tracker) then the functionality provided here may not work or may stop the library from working.

But it doesn't mention if this ANE can be used with Crashlytics,

What happens once the exception is caught?

Sorry if I'm being a dope, but once the ANE catches an exception, what happens then? Does it rethrow the error so the app crashes, or does it just close the app?

It'd be really great for play store rankings if normally-uncaught exceptions could be handled without crashing the app (if that is even possible).

Thanks in advance for yr answer @marchbold, super appreciated since this is a free ANE 👌

IOS app crashes on getPendingException

Exceptions.service.setUncaughtExceptionHandler();
			if (Exceptions.service.hasPendingException()){
				var report:ExceptionReport = Exceptions.service.getPendingException();

IOS device logs

Jul 24 21:29:10 SAMSUNGs-iPhone coreduetd[86] <Notice>: CDDBatteryMonitor:	received batterycallback, currentPercentage:87.000000!
Jul 24 21:29:11 SAMSUNGs-iPhone MyTestApp[1173] <Notice>: com.distriqt.Exceptions::setUncaughtExceptionHandler
Jul 24 21:29:11 SAMSUNGs-iPhone MyTestApp[1173] <Notice>: com.distriqt.Exceptions::hasPendingException
Jul 24 21:29:11 SAMSUNGs-iPhone MyTestApp[1173] <Notice>: com.distriqt.Exceptions::getPendingException
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard(KeyboardArbiter)[322] <Error>: HW kbd: Failed to set (null) as keyboard focus
Jul 24 21:29:12 SAMSUNGs-iPhone backboardd[54] <Notice>: Turning off orientation events.
Jul 24 21:29:12 SAMSUNGs-iPhone backboardd(CoreMotion)[54] <Notice>: Stopping orientation detection.
Jul 24 21:29:12 SAMSUNGs-iPhone backboardd(BaseBoard)[54] <Error>: Unable to get short BSD proc info for 1173: No such process
Jul 24 21:29:12 SAMSUNGs-iPhone backboardd(BaseBoard)[54] <Error>: Unable to get proc info for 1173: No such process
Jul 24 21:29:12 SAMSUNGs-iPhone backboardd[54] <Notice>: Effective device orientation changed to: unknown
Jul 24 21:29:12 SAMSUNGs-iPhone symptomsd(SymptomEvaluator)[119] <Notice>: a wifi flow named com.test.app is ignored (directly reachable target)
Jul 24 21:29:12 SAMSUNGs-iPhone ReportCrash(CrashReporterSupport)[1175] <Notice>: cr_update: <private>
Jul 24 21:29:12 SAMSUNGs-iPhone ReportCrash(CrashReporterSupport)[1175] <Notice>: cr_update: <private>
Jul 24 21:29:12 SAMSUNGs-iPhone ReportCrash[1175] <Notice>: Formulating report for corpse[1173] <private>
Jul 24 21:29:12 SAMSUNGs-iPhone ReportCrash(MobileCoreServices)[1175] <Notice>: notify_register_check() failed with error 1000000
Jul 24 21:29:12 SAMSUNGs-iPhone ReportCrash(CrashReporterSupport)[1175] <Notice>: Saved type '109(<private>)' report (3 of max 25) at <private>
Jul 24 21:29:12 SAMSUNGs-iPhone locationd[57] <Notice>: Location icon should now be in state 'Inactive'
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard(FrontBoard)[322] <Notice>: <FBApplicationProcess: 0x10af5cec0; XtrackMobile_al; pid: 1173> exited.
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Process exited: <FBApplicationProcess: 0x10af5cec0; XtrackMobile_al; pid: -1> -> <FBApplicationProcessExitContext: 0x170a28b40; exitReason: (none); terminationReason: (none)>
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Running <SBAppExitedWorkspaceTransaction: 0x108e9d1b0> for transition request:
<SBMainWorkspaceTransitionRequest: 0x1700f3100; display: Main; source: Unspecified> {
    applicationContext = <SBWorkspaceApplicationTransitionContext: 0x1708c1ff0; background: NO> entities = {
        SBLayoutPrimaryRole = <SBWorkspaceHomeScreenEntity: 0x1712550f0; ID: com.apple.SpringBoard.builtin.HomeScreen; layoutRole: primary>;
    };
}
Jul 24 21:29:12 SAMSUNGs-iPhone assertiond[61] <Notice>: Deleted job with label: UIKitApplication:com.test.app[0x7af8][61]
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard(CoreMotion)[322] <Notice>: Starting device motion, mode=0x22,useAccelerometer=0,useGyro=1,useCompass=0,fUseNorthRef=0,buildingGYTT=0
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Undimming for source: programmatic
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: returning the workspace lock time (60.000000) from _nextLockTimeDuration
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: returning the workspace dim time (40.000000) from _nextIdleTimeDuration
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Setting next idle duration (source:1) to: 40.000000 lockAfterDim: 20.000000
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Setting _lastBKUserEventTimerMode=2 with duration=40.000000
Jul 24 21:29:12 SAMSUNGs-iPhone SpringBoard[322] <Notice>: Root transaction complete: <SBAppExitedWorkspaceTransaction: 0x108e9d1b0>
Jul 24 21:29:12 SAMSUNGs-iPhone CommCenter[1039] <Notice>: #I SIM has not requested to be notified on entering idle screen, not processing
Jul 24 21:29:12 SAMSUNGs-iPhone locationd[57] <Notice>: message 'kCLConnectionMessageWatchdog' received from client '/System/Library/Frameworks/CoreTelephony.framework'
Jul 24 21:29:12 SAMSUNGs-iPhone symptomsd(SymptomEvaluator)[119] <Notice>: 1173 com.test.app: Terminated (most elevated: Terminated)
Jul 24 21:29:12 SAMSUNGs-iPhone apsd(PersistentConnection)[101] <Notice>: 2017-07-24 21:29:12 +0400 apsd[101]: Looking up connection on peer: 46f850   found <APSConnectionServer: 0x100396b50>
Jul 24 21:29:12 SAMSUNGs-iPhone apsd(PersistentConnection)[101] <Notice>: 2017-07-24 21:29:12 +0400 apsd[101]: <APSConnectionServer: 0x100396b50>: connection set enabled topics from {(
    "com.test.app"
)} to {(
)}
Jul 24 21:29:12 SAMSUNGs-iPhone apsd(PersistentConnection)[101] <Notice>: 2017-07-24 21:29:12 +0400 apsd[101]: <APSConnectionServer: 0x100396b50>: connection set opportunistic topics from {(
)} to {(
    "com.test.app"
)}
Jul 24 21:29:12 SAMSUNGs-iPhone apsd(PersistentConnection)[101] <Notice>: 2017-07-24 21:29:12 +0400 apsd[101]: <APSTopicManager: 0x1003155e0> setEnabledTopics:{(
)} ignoredTopics:{(
)} opportunisticTopics:{(
    "com.test.app"

İphone 5s 10.3.2
Air SDK 25

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.