Articles of dalvik

logcat中的adjustAdaptiveCoef错误是什么意思?

我正在开发一个Android应用程序,有时会得到类似于以下的错误: 11-21 16:03:15.219:E / dalvikvm(17170):adjustAdaptiveCoef max = 4194304,min = 1048576,ut = 568 11-21 16:03:16.212:E / dalvikvm(17170):adjustAdaptiveCoef max = 4194304,min = 1048576,ut = 568 11-21 16:03:17.649:E / dalvikvm(17170):adjustAdaptiveCoef max = 4194304,min = 1048576,ut = 568 有谁知道他们的意思,或者他们是否有任何顾虑?

Android 4.4 KitKat随机崩溃

编辑:在投票和暗示之前,请理解我无法重现此错误。 这种情况经常发生在我无法访问的某些设备上,但在固件重置后却没有! 我最近在为客户开发的应用程序中发现了随机崩溃。 该应用程序在3年后现在拥有大约100,000名活跃用户。 我们已经看到了Nexus 4和5的崩溃,两者都是Android 4.4 KitKat。 我们无法在我们自己的运行4.4的Nexus 4和5上重现它。 我们通过我们的支持获得了客户。 他告诉我们,在调用新活动时,每次都在同一个地方发生崩溃。 他在运行Dalvik,而不是ART。 重置固件后,应用程序运行正常,无法再次重现! 我出于法律原因无法发布源或布局,但是有这个堆栈跟踪: java.lang.RuntimeException: Unable to start activity ComponentInfo{xx.xxx.xxxxx.xxx.xxxxxx.prod/xx.xxx.xxxxx.xxx.PaymentsActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) at android.app.ActivityThread.access$700(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4998) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:4938) […]

使用Gradle在分离的dex文件中拆分外部库以解决Android Dalvik 64k方法的限制

有没有一种proper/easy方法来解决使用Gradle的64k方法限制? 我的意思是一些自定义Gradle任务使用pre-dexed jar来创建单独的dex文件,而不是单个classes.dex 。 谢谢 伊万 当前状态 目前,我正在努力使用GMS:它引入了20k方法来使用Google Analytics。 我使用Proguard去除不需要的东西,但仍然…… 72k方法和计数…… 我可以使用dx参数–multi-dex在两个文件中拆分classes.dex 。 我实现了手动编辑 sdk/build-tools/android-4.4W/dx 并编辑最后一行,如下所示: exec java $javaOpts -jar “$jarpath” –multi-dex “$@” 我的APK文件现在包含__classes.dex__ and __classes2.dex__ 。 我试图用几种方法动态加载第二个文件: Dexdex 链接 德克斯特链接 辅助dex gradle 链接 不幸的是还没有运气。 我真的希望一些Google / Facebook / Square大师可以提供合适的解决方案。

OutofMemoryError:位图大小超过VM预算(Android)

在BitmapFactory中获取exception。 不确定是什么问题。 (我可以猜到这个问题,但不确定为什么会发生这种情况) ERROR / AndroidRuntime(7906):java.lang.OutOfMemoryError:位图大小超过VM预算 ERROR / AndroidRuntime(7906):在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:295) 我的代码很简单。 我定义了一个带有默认图像的XML布局。 我尝试在SD卡上加载一个bm(​​如果存在 – 它是)。 如果不是,则显示默认图像。 无论如何..这是代码: public class showpicture extends Activity { public void onCreate(Bundle savedInstanceState) { /** Remove menu/status bar **/ requestWindowFeature(Window.FEATURE_NO_TITLE); final Window win = getWindow(); win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); Bitmap bm; super.onCreate(savedInstanceState); setContentView(R.layout.showpicture); try { ImageView mImageButton = (ImageView)findViewById(R.id.displayPicture); bm = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(“/sdcard/dcim/Camera/20091018203339743.jpg”),100, 100, true); parkImageButton.setImageBitmap(bm); […]

Android:我的应用程序太大,并且“无法执行dex:方法ID不在:65536”?

我正在尝试将我的应用程序与Box,Dropbox和Google Drive集成。 所有这三项服务都需要一些第三方jar子。 此外,我的应用程序已经需要一些第三方jar子。 现在当我尝试从eclipse运行我的应用程序时,我收到以下错误: 无法执行dex:方法ID不在[0,0xffff]中:65536转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]中:65536 似乎发生此错误是因为我的应用程序有太多方法。 我很确定这些方法的大部分来自第三方jar子,所以试图通过简化我的代码来解决这个问题是不现实的。 我在网上find了这两个建议。 将dex.force.jumbo=true添加到project.properties(并使用adt版本21)。 我这样做但仍然得到错误。 使用多个dex文件,如下所述: http : //android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html 。 这似乎是唯一的选择,但我不明白它在我的情况下是如何适用的。 问题是像Drive这样的服务有太多的依赖关系。 这个解决方案是否要求我在引用其依赖项时修改Drive源以使用inflection? (这显然不是一种选择)。 使用proguard缩小删除未使用的代码/方法。 使用proguard导出我的应用程序确实有效,文档服务集成在> 4.0设备上按预期工作。 但是,在2.3设备上进行测试时会抛出classnotfound错误。 所以,我希望就这个问题提出一些建议。 选项2是我案例的解决方案吗? 我应该考虑另一个解决方案吗?

什么是可能受2014年5月Oracle v Google决策影响的37个Java API包?

什么是可能受2014年5月Oracle v Google决策影响的37个Java API包? 上诉法院认为对该语言至关重要的3个套餐是什么? 如何避免在Java代码中使用受限制的API? 如果社区要创建一个竞争的开放类路径,它会是什么样子? 更新:截至2016年5月,谷歌使用这些API已被统一使用。 http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/

inheritance的方法是否会计入Android中的Dex方法限制?

Dalvik对单个.dex文件中可以拥有的方法数量有着众所周知的限制(约65,536个)。 我的问题是,inheritance(但未覆盖)的方法是否会计入此限制。 为了使事情具体,假设我有: public class Foo { public int foo() { return 0; } } public class A extends Foo { } public class B extends Foo { } public class C extends Foo { } 出于65,536方法限制的目的,这是否算作添加一个方法,或添加4? (或者,我想,为了得到合乎逻辑的结论,这算作1个方法或52个方法,考虑到java.lang.Object带来了12个方法)。 作为背景,我有一些非常微不足道的生成类具有一些共性,而且我也遇到了方法限制,所以我想知道是否值得尝试将其中的一些抽象到类中等级为了买一些时间。

动态生成Dalvik字节码到运行的Dalvik / Android应用程序

关于在运行时动态生成和加载java字节码到运行的Dalvik VM,已经多次询问(并回答)这个问题,但有没有办法在运行时将dex文件/字节码加载到应用程序中? 谢谢

在对象大小方面,Dalvik对HotSpot的记忆力是否更大?

我一直想知道Object在Android上占用了多少内存。 有许多与HotSpot JVM相关的资源( 如此 )告诉空对象占用8个字节,空数组占用12个字节,并且所有对象都与8字节边界对齐。 因此,没有额外字段的对象应该占用8个字节,最小的对象至少有一个额外字段–16个字节,一个空数组–16个字节,对吧? 我在这个问题上没有find关于Dalvik的具体信息,并决定通过测试来弄清楚。 运行测试结果令人惊讶 。 关于计算方法的几点说法。 Android的Object.hashCode()实现只返回指向int的对象的指针。 (似乎很明显和一般,但[另一个惊喜]事实certificate,它不在HotSpot JVM上 – 例如用HotSpot运行MemTest并查看)。 所以,我在Dalvik上使用hashCode()的简单性来计算Android上的对象大小,通过在一行中分配测试类的两个实例,并且分配的空间量应该等于它们的hashCode()的差异值(假设Dalvik在完全随机的地址分配它们没有意义)。 为了确保每个测试类连续分配4个对象,它们总是提供hashCode()的相同差异。 因此,我认为对方法的正确性毫无疑问。 以下是测试的源代码: public class MemTest { public static void run() { Object o1 = new Object(); Object o2 = new Object(); Object o3 = new Object(); Object o4 = new Object(); EmptyObject eo1 = new EmptyObject(); EmptyObject eo2 […]

Android:javac vs Dalvik

我的理解是,Google不喜欢Oracle在Java ME中使用JRE的许可政策,所以它只是使用自己的JVM规范重写它, 模仿 JRE但行为略有不同,特别是在提高效率和提高效率方面。更安全。 因此,如果我的理解是正确的,这意味着当javac在某些Java源代码上运行并编译成“二进制”byetcode时,兼容的JVM将解释与Dalvik不同的字节码(在某些情况下)。 这是Dalvik与其他(兼容)JVM之间的固有差异。 如果我到目前为止所说的任何内容都不正确,请先纠正我! 现在,如果Android带有自己的编译器(它可能),并且以不同的(Dalvik兼容)方式编译Java源代码而不是javac ,那么我可以理解一些代码(不是用Android SDK编译)不能运行Android设备: MySource.java –> javac –> MySource.class (JRE-compliant) –> JVM –> running Java app MySource.java –> android-compiler –> MySource.class (Dalvik-compliant) –> Dalvik JVM –> running Android app 但是,看起来您使用javac来编译Android应用程序!?!? 所以看起来我们有这个: MySource.java –> javac –> MySource.class (JRE-compliant) –> JVM –> running Java app MySource.java –> javac –> MySource.class (JRE-compliant) […]