标签: dex2oat

dexopt和dex2oat之间的区别?

Google是从移动DalvikART(Android的运行系统).

我试图了解它是如何改善性能的.

我找到的最好的解释是下面的图像:

Dalvik和ART

其中一个已改变的主要成分是dexoptdex2oat.

由于我对这些没有太多了解,有谁可以解释这些差异以及这将如何改善性能?

android dalvik dexopt android-runtime dex2oat

40
推荐指数
2
解决办法
3万
查看次数

在Android 5.0上动态加载DEX文件

在Android 5.0之前,我能够使用DexClassLoader和调用loadClass()方法动态加载DEX文件,但是使用最新的Android版本,我得到了一个ClassNotFoundException.

这是我在做的事情:

  1. 生成DEX文件.

    ../android-sdk/android-sdk-linux_86/build-tools/21.1.1/dx --dex --output=bin/output.dex  bin/output.jar
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个DexClassLoader.

    DexClassLoader cl = new DexClassLoader(
    dexFile.getAbsolutePath(),
    odexFile.getAbsolutePath(),
    null,
    mContext.getClassLoader());
    
    Run Code Online (Sandbox Code Playgroud)
  3. 呼叫 cl.loadClass("myMethod");

我知道ART使用dex2oat来生成一个由ART加载的ELF文件但是在步骤2中我生成了一个ODEX文件,因此我不需要在ART中运行以在运行时加载DEX文件,任何人都可以帮助我 ?

android classloader dex android-runtime dex2oat

15
推荐指数
1
解决办法
6947
查看次数

棉花糖 - dex2oat~许可被拒绝

尝试启动CameraApp时被迫关闭:

08-15 15:36:19.807 E/dex2oat (29758): Failed to create oat file: /data/dalvik-cache/arm/system@priv-app@LGCameraApp@LGCameraApp.apk@classes.dex: Permission denied
Run Code Online (Sandbox Code Playgroud)
  • 该文件确实存在于指定的路径上,为什么它再次尝试dex2oat?
  • 怀疑这个应用程序每次手机启动时也会"优化"

logcat可以提供启动应用优化日志吗?我应该找哪个关键字?

dex2oat

9
推荐指数
0
解决办法
1878
查看次数

安装应用程序需要几分钟时间,并出现 dex2oat 警告

一段时间后,我重新打开了一个 Android Studio 项目,并且像往常一样看到了快速构建,但现在 Android Studio (3.5) 的“安装”步骤需要几分钟,而过去需要几秒钟。

如果我在安装时打开设备 Logcat,我可以看到大量这些:

W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onSaveInstanceState(android.os.Bundle)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onViewCreated(android.view.View, android.os.Bundle)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.onViewModelCreated()
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.removeCancelListener(com.package.base.view.BaseDialog$CancelListener)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.removeDismissListener(com.package.base.view.BaseDialog$DismissListener)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setChildFragmentInjector(dagger.android.DispatchingAndroidInjector)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setSharedValue(java.lang.String, java.lang.Object)
W/dex2oat: Method processed more than once: void com.package.base.view.BaseDialog.setViewModelFactory(androidx.lifecycle.ViewModelProvider$Factory)
W/dex2oat: Method processed more …
Run Code Online (Sandbox Code Playgroud)

android dex android-studio android-multidex dex2oat

5
推荐指数
1
解决办法
4079
查看次数