我离开应用程序一段时间后,我的logcat中出现了这些警告.(虽然没有杀死,只是按回来离开它.)
05-03 13:43:42.955 13047-13053/package W/art: Suspending all threads took: 7.873ms
05-03 13:44:32.458 13047-13053/package W/art: Suspending all threads took: 13.441ms
05-03 13:46:58.584 13047-13053/package W/art: Suspending all threads took: 34.462ms
05-03 13:47:00.574 13047-13053/package W/art: Suspending all threads took: 8.281ms
05-03 13:48:00.425 13047-13053/package W/art: Suspending all threads took: 25.929ms
05-03 13:48:16.019 13047-13053/package W/art: Suspending all threads took: 35.053ms
05-03 13:50:01.858 13047-13053/package W/art: Suspending all threads took: 16.160ms
05-03 13:50:17.975 13047-13053/package W/art: Suspending all threads took: 20.074ms
05-03 13:52:07.744 13047-13053/package W/art: Suspending all threads …Run Code Online (Sandbox Code Playgroud) ART是下一代Dalvik.
无论如何使用Android模拟器或Genymotion来模拟它?
在尝试优化调试应用程序的构建和部署速度时,我发现/system/bin/dex2oat在安装过程中花费了大量时间.这是ART提前编译器.
我发现在针对API 22时,您现在可以停止ART AOT编译:
<application
...
android:vmSafeMode="true">
</application>
Run Code Online (Sandbox Code Playgroud)
我看到了明显的部署速度改进,但是我担心这种改变可能会产生副作用.它必须导致小的运行时性能损失,但启用该android:vmSafeMode选项是否还有其他后果?
对于调试版本,是否可以在gradle构建文件中覆盖此属性?或者是创建调试特定的清单文件唯一的解决方案?
我有一个已发布的应用程序,可以获取有关ClassNotFoundException用户的报告,这些报告超出了我的智慧,最终尝试修复.我无法重现此崩溃,此处此类错误的类似实例在SO上的情况可能是依赖路径不正确或者MainActivity清单中的包不同.
用错误的路径依赖的问题是一个Eclipse的事情,而所有其他错误,可以很容易地固定与Android Studio的"同步"和"清洁工程"(这是我做无济于事).
我已经对所有包裹名称进行了三次检查,但没有发现任何差异.
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.johan.fsc">
<uses-permission android:name = "android.permission.VIBRATE"/>
<uses-permission android:name="com.android.vending.BILLING" />
<application
android:allowBackup="true"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:fullBackupContent="true">
<activity
android:name="com.johan.fsc.MainActivity"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:theme="@style/splashscreenTheme"
android:hardwareAccelerated="false"
android:largeHeap="true">>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name = "com.johan.fsc.SettingsActivity"
android:theme="@style/PreferencesTheme"/>
</application>
Run Code Online (Sandbox Code Playgroud)
以下是我总是从用户那里得到的错误报告:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.johan.fsc/com.johan.fsc.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.johan.fsc.MainActivity" on path: DexPathList[[zip file "/data/app/com.johan.fsc-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at …Run Code Online (Sandbox Code Playgroud) 对于使用ART的一些用户,我使用Aviary SDK会遇到一个奇怪的错误.我很困惑为什么会发生这种情况(显然只有4.4.x)因为在Dalvik上调用此SDK时应用程序运行正常.任何人都有任何想法来解决这个问题?Aviary声称它是PhoneGap/Cordova问题(我们的基础),但我不认为这是问题,因为它只在活动启动时触发.
06-06 09:45:36.037: D/Aviary(27701): Pictures folder: /storage/emulated/0/Pictures
06-06 09:45:36.037: D/Aviary(27701): show
06-06 09:45:36.037: D/Aviary(27701): VERSION => 3.0.4
06-06 09:45:36.037: D/Aviary(27701): VERSION => 157
06-06 09:45:36.041: I/ActivityManager(741): START u0 {dat=file:///storage/emulated/0/DCIM/Camera/1402062335694.jpg cmp=com.XXXX.app/com.aviary.android.feather.FeatherActivity (has extras)} from pid 27701
06-06 09:45:36.054: W/CursorWrapperInner(27701): Cursor finalized without prior close()
06-06 09:45:36.058: I/CordovaLog(27701): Changing log level to ERROR(6)
06-06 09:45:36.087: I/ActivityManager(741): Start proc com.XXXX.app:standalone for activity com.XXXX.app/com.aviary.android.feather.FeatherActivity: pid=28285 uid=10060 gids={50060, 3003, 1028, 1015}
......
06-06 09:45:36.320: E/art(28285): Verification failed on class com.aviary.android.feather.library.external.tracking.LocalyticsSession$UploadHandler in /data/app/com.XXXXXXX.apk because: Verifier …Run Code Online (Sandbox Code Playgroud) 我按照以下步骤导入了commons-codec-1.10.jar:
在我的build.grade中添加了这一行
compile fileTree(dir: 'libs', include: ['*.jar'])
Run Code Online (Sandbox Code Playgroud)
在我的课上我导入了这样的库:
import org.apache.commons.codec.binary.Base64;
Run Code Online (Sandbox Code Playgroud)
然后我尝试在Base64中访问encodeBase64String静态方法,如下所示:
public static class DoThisThing {
public String DoThisOtherThing() {
String hashed = "hello";
String hash = Base64.encodeBase64String(hashed.getBytes());
return hash;
}
}
public class ActivityThing extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_thing);
String hash = DoThisThing.DoThisOtherThing();
System.out.println(hash);
}
}
Run Code Online (Sandbox Code Playgroud)
没有错,即使我编译,除非我运行应用程序,它会抛出以下错误,应用程序关闭:
11-03 09:41:27.719 2390-2476/com.myproject E/AndroidRuntime: Caused by: java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序来实例化几个MediaCodec实例,用于将流式音频和视频数据解码到Nvidia TX1开发套件上的SurfaceTexture.在使用一个音频和一个视频解码器几分钟后,我收到有关溢出弱全局引用表的错误:
A/art: art/runtime/indirect_reference_table.cc:118] JNI ERROR (app bug): weak global reference table overflow (max=51200 holes= 0 sizecheck=51200)
A/art: art/runtime/indirect_reference_table.cc:118] weak global reference table dump:
A/art: art/runtime/indirect_reference_table.cc:118] Last 100 entries (of 51200):
A/art: art/runtime/indirect_reference_table.cc:118] 51199: 0x12c00460 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51198: 0x12c00400 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51197: 0x12c003a0 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51196: 0x12c00340 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51195: 0x12c002e0 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51194: 0x12c00280 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51193: 0x12c001c0 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51192: 0x12c009a0 java.lang.Thread
A/art: art/runtime/indirect_reference_table.cc:118] 51191: cleared jweak
A/art: art/runtime/indirect_reference_table.cc:118] 51190: cleared …Run Code Online (Sandbox Code Playgroud) 以下是堆栈跟踪。崩溃的源代码在这里。
我跟踪了堆栈跟踪,直到这里的android 源代码。
我无法理解这意味着什么以及为什么它只是有时发生。任何帮助,将不胜感激。很高兴分享更多细节。
我们已经能够在 android 7.0 设备上重现此崩溃。但它并不一致。
06-28 19:09:26.147 5696 5696 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-28 19:09:26.147 5696 5696 F DEBUG : Native Crash TIME: 265472
06-28 19:09:26.147 5696 5696 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-28 19:09:26.148 5696 5696 F DEBUG : Build fingerprint: 'Karbonn/K9_Smart_Eco/K9_Smart_Eco:7.0/NRD90M/1498048597:user/release-keys'
06-28 …Run Code Online (Sandbox Code Playgroud) 我不太确定将哪种代码加载到 android 平台上的 linux 进程中。
如果android采用Dalvik,进程包含一个Dalvik VM和应用程序的代码,代码是Dalvik字节码的形式吗?如果是,代码是否与.apk文件中的classes.dex相同?
如果android采用Android Runtime(ART),由于classes.dex已经被翻译成原生机器码,所以我认为Linux进程中app的代码不会是Dalvik字节码,而是原生机器码。如果我的理解是正确的,那么Dalvik VM是否仍然包含在进程中?
我有以下测试,其中测试名称带有空格和反引号用于我的仪器测试
@RunWith(AndroidJUnit4::class)
class MyTestClass {
@Rule
@JvmField
var activityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)
@Test
fun `My space name testing`() {
// Some test
}
}
Run Code Online (Sandbox Code Playgroud)
但是在运行的时候,却无法执行(即No test was found)
检查它,我在测试函数名称上看到了这个 linting 错误..
This inspection reports identifiers in android projects which are not accepted by the Android runtime (for example, method names containing spaces)
当我将测试函数从My space name testingto重命名时mySpaceNameTesting,测试运行。
AndroidJunit4 运行时真的不支持带空格的测试函数名吗?
android kotlin android-instrumentation android-runtime android-junit
android ×10
android-runtime ×10
dalvik ×3
java ×3
aviary ×1
cordova ×1
emulation ×1
genymotion ×1
kotlin ×1
linux ×1
mediacodec ×1