I've got an Android app which works perfectly on all the devices I've tested on, by installing via Android Studio or downloading to the app from Crashlytics (Twitter's beta distribution product among other things).
Unfortunately when the client installs the app (via Crashlytics) it doesn't work correctly for them (relating to bluetooth connection functionality).
Does anyone know of any differences that could result from this situation? Are the devices I've tested on somehow setup differently to the tester's device because mine have been used in a dev environment..?
Well got both the clients devices in and they worked first time for me so I'm not sure what was going on, they seemed to be doing everything right but I've got nothing more to go on at this point!
Related
I'm trying to teach myself JavaScript by creating an little puzzle/game app with Cordova. I've got a basic prototype thing working, and have successfully got it to build on iPhone, and it runs perfectly.
I have 3 android phones to test with, 1 Marshmallow (BLU branded), 1 Lollipop, and 1 Kitkat... and the app works perfectly on those as well. I sent the app to 2 friends on the other side of the country to test, and it crashes on their Samsung Marshmallow phones ( a Galaxy 7, and a Galaxy Edge 7). It runs for a bit, and then just crashes without any user input.
So, I tried 2 separate crash analytics plugins, Fabric and Crittercism. I can verify that both of these are working, as I can force a crash in the app, and it shows up as a crash report.
But when my friends run the app with the crash analytics, whatever is going on that makes the app blowup, it isn't triggering any reports from Fabric or Crittercism. I've tried to get the android emulator running on my PC, but unfortunately it is an AMD processor, which is missing some necessary virtualization. I can't even get the super slow ARM version of the emulator to run on my PC, it just hangs forever.
I just recently installed cordova, and took all the defaults during setup. So from what I can tell, it should be targeting android API 23 (Marshmallow). But maybe there's some other kind of build issue that is messing things up?
So I'm kind of at a loss of how to debug this problem. Short of finding someone locally who can lend me a Samsung Marshmallow phone to debug with, I can't think of anything else that would work. Does anyone have any ideas?
The ARM emulator is indeed excruciatingly slow. I would suggest a third-party emulator. I use GenyMotion (which uses VirtualBox under the hood). You might have some luck with that. Alternatively, ManyMo is a cloud-based solution that might prove useful.
The system web view used by PhoneGap/Cordova will vary widely across Android devices, which means you can run into different issues across Android versions and device manufacturers. I suggest using the Crosswalk plugin to mitigate those problems. Do note that this will increase the size of your APK and footprint of the installed app on your device.
When the app crashes, does it actually crash to the launcher, or does the app reload itself (or just show a background color)? I wouldn't expect Crashlytics to handle JavaScript issues unless the JavaScript caused the app to crash out to the launcher.
I just finished my first Android app. I tested it in the emulator and on my personal device (Nexus 6p). Other folks are installing it and it's working for them. My dad, however, also gave it a try. He has a Samsung Galaxy S6 running 6.0.1, and the app crashes on startup for him.
My guess is it's something touchwiz related. The thing is, he's not the most technical person, as far as getting a logcat would go. So... what are my options to try and investigate this issue?
Crashlytics can help you to retrieve the stack trace and exceptions when your app crashes.
But if you want to test and fix before the deploy, another options is Xamarin Test Cloud, it's a paid solution, but have a free-trial
[EDIT]
Searching in the internet, I found something similar to Xamarin Test Cloud, I personally have not tested this solution, but you can check it out.
TestMunk, they have a free plan.
This is an aspect of the extreme fragmentation of the Android ecosystem. I've seen bugs that manifest only on a specific device from a specific carrier. For example, at one point, Verizon broke ACTION_HEADSET_PLUG on one of their tablets, so that no app would ever receive it. It had worked fine on an earlier firmware version. Naturally, they refused to acknowledge the problem. The same tablet model from T-Mobile never exhibited this issue.
This is why I don't trust the emulator. It's fine for early testing, but you still need to test on the actual hardware that you intend to support. There are online services that test your app on a wide variety of real devices to try to uncover the weird vendor-specific issues. I've never used these services, so I can't recommend one.
I am trying to recreate an issue which is only caused on HTC One XL phone running Android 4.2.2. It is a styling issue which can be fixed with CSS. The problem is that the Chrome Developers Tool does not have a profile for HTC One XL phone running Android 4.2.2.
I do not have a real device! How can I test for an issue that only exists on particular phone running a particular Android version?
FInd someone with the device to test a beta or debug info gathering build. There's three reasons one particular device has issues.
1)Hardware problem. No emulator will solve this as they won't perfectly emulate hardware.
2)Software bug on this device's framework. Since each OEM ships their own set of patches, there's no way to know what is actually running, except for having the device.
3)Something weird in the system of an individual user. Some odd combo of software, hardware, and data. You need that actual phone to fix this, but it generally only effects a handful of users.
But none of these are solvable without access to the device, or a real Eureka moment. More logging helps, but you'd still need to get those logs which requires a device.
I recently released my app to the Google Play community. The team and myself tested the app on Gingerbread, jellybean, and kitkat. All were either Samsungs or Nexus. Now we have someone getting a crash on a Motorolla Droid Bionic, Android version 4.1.2.
My app required wifi (not Cell data) connection which is not possible with androids emulator. I am in the process of installing android on VirtualBox but I don't know if this will allow me to identify the problem.
Should I be this concerned? This is my first app and I want to make sure it works for everyone? This app is for controlling a home appliance so I feel like we need to make sure that it works, but I'm not sure how to really get accurate test results and error messages.
What do other developers do to emulate accurately specific phones and OS versions?
thanks for any advise and help.
Ask for the "Stack Traces" reported in "Crashes & ANRs" section of your application in Google play Developer Console to have more details about the problem.
I'm making an app for Android in Eclipse. Currently the app works fine on my Droid Incredible, but it does not work at all on my friends' model which I emailed the apk to. Is there a way for me to emulate different phone models to run the app on without physically having them?
Thanks
The short answer is no. The long answer is that emulators are never perfect as they don't simulate the electronics of the devices but the logic in them. You should run automated tests on your device and if possible in physical target devices. There's a service, similar to vnc, i didn't used this service nor do i recommend it, but it exists, it's called deviceanywhere , google it, it offers remote testing on real hardware, but of course it's a paid service.
Another way to test the application is to give a beta version to android forums and get feedback from users, and don't forget to include internal tests and logging.