我有大约700个测试要执行。当我全部运行时,出现了崩溃
经过一段时间的执行,大约10分钟后,执行~360-370次测试。"仪器运行因“进程崩溃”而失败。'"检查设备 logcat了解详情。测试运行失败:仪表运行失败 由于'流程崩溃。'
Logcat不包含有关此崩溃的任何信息
适用于从Android Studio,cmd(在PC和Mac上)运行。使用的设备 - Android 4.1.1上的Samsung S3
build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 18
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.xxx.yyy"
minSdkVersion 9
targetSdkVersion 18
testApplicationId "com.xxx.zzz"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
project.gradle.taskGraph.whenReady {
connectedAndroidTestDebug {
ignoreFailures = true
}
}
}
repositories {
// The local cache should be used first
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
compile 'junit:junit:4.12'
compile fileTree(include: '*.jar', dir: 'libs')
}
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.yyy"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CAMERA.autoFocus" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application
android:allowBackup="true"
android:largeHeap="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.xxx.yyy.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="roboguice.annotations.packages"
android:value="com.xxx"/>
<meta-data
android:name="roboguice.modules"
android:value="com.xxx.yyy.MainModule"/>
</application>
</manifest>
还要补充一点:在我之前发布的代码中,这次崩溃并没有发生,但我无法找到确切的变化导致崩溃。
请帮助我解决这个问题,我试图在两周内理解它。
答案 0 :(得分:3)
我不知道问题是否仍然存在,但我自己也遇到过这样的问题。 在三星设备上的某些Android版本中存在一个错误:它们没有正确关闭文件描述符,从而导致文件描述符泄漏。创建1028个描述符后 - 进程崩溃。
http://code.google.com/p/android/issues/detail?id=32470
为了避免这种情况,我不得不在测试中减少HandlerThreads的使用,并在可能的情况下重新使用它们。但更好的解决方案可能是改变设备。
答案 1 :(得分:0)
尝试在较新版本的Android OS(例如Android 5.1(API 22)或更高版本)上运行检测测试。某些较旧的版本(例如Android 4.1)在ARM仿真器上会发生此类崩溃。
或尝试更新项目中使用的Gradle版本。例如,Gradle 4.1会出现此问题,而gradle 4.10则不会。
或者,尝试避免在没有启动“活动”的后台运行测试。因此,请避免使用ActivityUnitTestCase
和SingleLaunchActivityTestCase
,它们可能导致Android 4.1上的本机C ++崩溃。此处更多信息:Native crash at /dev/ashmem/dalvik-jit-code-cache