Keep receiving "fruitstrap quit unexpectedly" when running on Yosemity

When i run tests on iOS the “fruitstrap quit unexpectedly” popup prompts.
i have checked it on 2 different Yosemite 10.10.1 & 10.10.2 & the same error displays.
when i run the same code over Mavericks 10.9.5 it works without any errors.
is this a known issue?

Framework: Eclipse
Server: Appium 1.3.3

2 Likes

I’m getting this too

1 Like

I am getting this error.

1 Like

Opened a bug for it,
Hope it will get the desired attention…

Thanks!

Were you able to automate a native iOS app using .ipa file ?

I am new to iOS native app automation using Appium, I just have a .ipa file for the native app. I tried writing the java code as below, but I failed - were you able to do automation by just using .ipa file ?

package iosAppAutomation;

import io.appium.java_client.AppiumDriver;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import static org.junit.Assert.assertTrue;

import java.awt.Point;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

import javax.swing.Scrollable;

import org.apache.commons.lang3.concurrent.BackgroundInitializer;

import org.omg.CORBA.portable.InputStream;
import org.openqa.selenium.By;
import org.openqa.selenium.By.ByCssSelector;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.TouchScreen;
import org.openqa.selenium.interactions.touch.TouchActions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class iosTest {
public AppiumDriver driver = null;

public static void main(String[] args) throws MalformedURLException,
		InterruptedException {

	iosTest testcases = new iosTest();

	// set up appium and launch app
	testcases.setUp();


	testcases.checkApp();


}

public void setUp() {

	try {

		System.out.println("Launching App");

		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability("deviceName", "iPhone");
		capabilities.setCapability("platformName", "ios"); 
		capabilities.setCapability("udid", "7f29f386e640b1f798fcde4a17a533cad19214ae");
		capabilities.setCapability("bundleid", "com.nbcuni.oxygen.tve");
		capabilities.setCapability("ipa", "/Users/Automation1/Documents/appFiles/Oxygen_AdhocEnterprise_3.0.0_154.ipa");
		driver = new AppiumDriver( new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
		 

		System.out.println("App launched");
		
		Thread.sleep(5000);

	} catch (Exception e) {
		System.out.println("App launch fail");
	
	}
}


public void checkApp() throws InterruptedException {

	try {

		driver.wait();
	
		Thread.sleep(5000);

	} catch (AssertionError ex) {
		System.out.println(ex);
	}

}

}

Thanks,
NRM

You can extract the .app from the ipa,
i am using the below desired capabilities (i pull the relevant data from properties file however you can see the relevant capabilities & use your data):
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(“deviceName”,genMeth.getValueFromPropFile(“deviceName”));
capabilities.setCapability(“device”,genMeth.getValueFromPropFile(“device”));
capabilities.setCapability(“udid”, genMeth.getValueFromPropFile(“udid”));
capabilities.setCapability(CapabilityType.VERSION,genMeth.getValueFromPropFile(“CapabilityType.VERSION”));
//capabilities.setCapability(CapabilityType.PLATFORM,genMeth.getValueFromPropFile(“CapabilityType.PLATFORM”));
capabilities.setCapability(“platformName”,genMeth.getValueFromPropFile(“platformName”));
capabilities.setCapability(“app”,genMeth.getValueFromPropFile(“pogoplugPath”));

Thanks!

I will try to extract the .app from the ipa and checking the required capabilities.

Just chiming in that I’m hitting this too.

Process: fruitstrap [417]
Path: /Applications/Appium.app/Contents/Resources/node_modules/appium/build/fruitstrap/fruitstrap
Identifier: fruitstrap
Version: 0
Code Type: X86-64 (Native)
Parent Process: node [375]
Responsible: Appium [355]
User ID: 501

Date/Time: 2014-12-30 15:03:32.702 -0800
OS Version: Mac OS X 10.10.1 (14B25)
Report Version: 11
Anonymous UUID: C2CA0B2E-F670-65F4-AD20-9B98C0CAB783

Time Awake Since Boot: 92 seconds

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
Assertion failed: (false), function checkAppExists, file fruitstrap.c, line 320.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8cfb3282 __pthread_kill + 10
1 libsystem_c.dylib 0x00007fff931d9b73 abort + 129
2 libsystem_c.dylib 0x00007fff931a1c59 __assert_rtn + 321
3 fruitstrap 0x0000000105b226a9 checkAppExists + 249
4 fruitstrap 0x0000000105b23668 handle_device + 968
5 fruitstrap 0x0000000105b23e94 device_callback + 52
6 com.apple.mobiledevice 0x0000000105bb23a9 _AMDDeviceAttachedCallbackv3 + 157
7 com.apple.mobiledevice 0x0000000105b3f15c _USBMuxCustomRunLoopSourcePerformCallback + 1416
8 com.apple.CoreFoundation 0x00007fff932c6661 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
9 com.apple.CoreFoundation 0x00007fff932b87ed __CFRunLoopDoSources0 + 269
10 com.apple.CoreFoundation 0x00007fff932b7e1f __CFRunLoopRun + 927
11 com.apple.CoreFoundation 0x00007fff932b7838 CFRunLoopRunSpecific + 296
12 com.apple.CoreFoundation 0x00007fff9336ded1 CFRunLoopRun + 97
13 fruitstrap 0x0000000105b243f1 main + 1073
14 libdyld.dylib 0x00007fff94dd15c9 start + 1

not sure what did it, but after making sure i could record through xcode-instruments-automation, and running the latest appium from the master branch of its repository (v1.3.4), it started working from the appium gui as well (v1.3.3)

hi all,
I am stuck with this issue but in my case SafariLauncher is installing on device but with that i am facing 1 more error as
ios_webkit_debug_proxy is crashing with message _rpc_applicationupdated

as I am using ios 8.1
Mac 10.10

i am getting error while installing brew install --HEAD ideviceinstaller as

dvtcddmac:~ sas$ brew install --HEAD ideviceinstaller

==> Cloning http://git.sukimashita.com/ideviceinstaller.git

Updating /Library/Caches/Homebrew/ideviceinstaller–git

==> Checking out branch master

==> Patching

==> ./autogen.sh

configure.ac:14: error: possibly undefined macro: AM_PROG_CC_C_O

configure.ac:15: error: possibly undefined macro: AC_PROG_LIBTOOL

configure.ac:74: error: possibly undefined macro: AS_COMPILER_FLAGS

./configure: line 2196: syntax error near unexpected token `dist-bzip2’

./configure: line 2196: `AM_INIT_AUTOMAKE(dist-bzip2 no-dist-gzip check-news)’

READ THIS: http://git.io/brew-troubleshooting

plz reply asap if u have any solution for this

Thank you very much

install your app using iDeviceInstaller first on the real device then you will not get fruitstrap error.
OR
install your app through xcode build first time and then you will not get this error

Hi @menypeled

I tried working on it recently. Our iOS app development is outsourced so we do not have source code (say xcode project) for the iOS app. I could extract .app by unpacking the .ipa file. But this .app file when I tried to run it throws error - Instruments crashed in the appium log.

Used - simulator - iOS 8.1, iPhone 5s

Appium iOS settings had - app path and xcode path set

java code -
@BeforeTest

public void testingIOS() throws MalformedURLException{

File app = new File("/Users/Automation1/Desktop/.app");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(“deviceName”,“iPhone 5s”);

capabilities.setCapability(“platformVersion”, “8.1”);

capabilities.setCapability(“platformName”,“iOS”);

capabilities.setCapability("app", app.getAbsolutePath());

IOSDriver dr = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

dr.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

}

Do you think I am going wrong with this approach of using .app on simulator and doing this appium iOS settings and desired capabilities ?