问题标签 [dalvik]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Dalvik 的内存模型和 Java 的一样吗?
Dalvik 的内存模型和Java 的一样吗?long
我对引用和非/非原始变量的读写是否double
是原子的特别感兴趣,但我也想知道两个平台的内存模型之间是否有任何差异。
android - HeapWorker Android 性能
如何解决这个问题?
我知道根本原因是创建了很多临时变量。
java - Python 代码到 JVM 的翻译
有没有像“翻译器”这样的东西(因为我现在脑子里没有更好的词)可以将 Python 代码直接翻译成 JVM / Dalvik 字节码?
非常适合用 Python 编写 Android 应用程序!
注意:我知道 Android 平台的脚本功能,但我正在寻找无需安装“脚本”包即可生成“.apk”的东西……这对最终用户来说很烦人。
android - 是否有适用于 Android 的 DX 工具的 API 或示例规范!
我想使用 DX Tool API 来尝试生成一个临时的 dexfile 来调用这个库。该库是否有任何样本或任何规范?
谢谢大家
问候!
java - Dalvik 到 Java SE 的通信
我正计划开发一个需要后端服务器与应用程序的其他用户同步数据的安卓应用程序。我打算用在 unix 服务器上运行的标准 java 编写这个服务器。
我曾经直接在两个 android 设备之间执行此操作,在这种情况下,我只是序列化了所有需要在两端发送的数据。
但是我怀疑 Dalvik 序列化的格式和 Java SE 的格式不兼容。是这样吗?如果是的话,我的选择是什么?我突然想到的一件事是通过套接字发送原始 xml,但如果有更好的选择,我会很高兴听到它们。
谢谢。
android - 有没有更简单的方法在 Android 上用 Java 进行解析?
我很难执行应该是一项简单的任务。假设我有一个文本文件,其中指出:
我希望我的程序在用户输入“a”时读取此文件并输出“b”。在 Python 或 C++ 中,我可以在大约 7 行或更少的时间内完成此操作。
但是,我很难找到在 Android 上执行此操作的简单方法。例如,我在 SO 上找到的一个示例在 6 个文件中有近 900 行。
有没有一种简单的方法来解析文件并在我缺少的 Android 上返回一个变量?
windows-ce - 我可以为 WinCE 编译 Dalvik 吗?如何?
我上面的一般问题很简单——我可以为 WinCE 编译 Dalvik VM 吗?特别是想在WinCE 5.0下运行一些android兼容的项目。显然,这听起来很害怕,但对我来说很有趣:)
java - 了解 Dalvik 代码的反汇编?
我正在我编写的一个小型 Hello World Android 应用程序上玩smali 和 baksmali 。我的源代码是:
然后将其拆解为:
我知道这是某种中间表示,但不确定它是什么。据我了解,必须有一些关于如何理解这种表示的规范,但我无法弄清楚如何搜索它。因此,给定一个 apk 文件,有人可以用外行术语解释如何使用Dalvik 操作码规范来获得这种表示吗?我目前的理解是这样的:
- 给定一个 APK,我可以提取二进制 XML 格式的 AndroidManifest.xml 并使用诸如 axml2xml.pl 之类的工具来获取不完整的清单的“文本”版本,或者我可以使用 apktool来获得更具可读性形式。但我仍然不确定他们使用什么规范将二进制 XML 转换为文本。
- 反汇编程序以某种方式利用 Dalvil 操作码规范来读取 dex 文件并将其转换为上述表示形式。
关于上述两个步骤的任何信息(可能带有一些简单的示例)都可以很好地帮助我正确理解这些概念。
更新 1(在 Chris 回复后发布):
所以本质上,我会做以下事情来得到 Dalvik 字节码:
- 获取一个 apk 并将其解压缩以获取 classes.dex 文件。
然后反汇编程序读取 classes.dex 文件并确定 apk 中存在的所有类。你能给我一些关于这是如何完成的信息吗?它是否以十六进制模式解析文件并查找 Dalvik 规范,然后正确解析?还是发生了其他事情?例如,当我在 classes.dex 上使用 hexdump 时,它给了我这样的信息:
64 65 78 0a 30 33 ...
这些现在用于操作码查找吗?
- 假设该工具能够将传入的字节码分成单独的类,然后它会继续扫描 classes.dex 文件中的十六进制代码并使用 Davlik 规范从表中输出适当的操作码名称?
实际上,简而言之,我有兴趣知道所有这些“魔法”是如何完成的。例如,如果我要学习编写这个工具,我应该遵循的高级路线图是什么?
android - 管理大量位图android的有效方法
我对管理大量位图的推荐/最佳实践有疑问。(这是一个翻书类型的应用程序,用户在其中浏览并创建新页面......就像一堆虚拟的便笺 k?)以前,我有一个包含位图的对象数组列表,(性能良好)但我很快遇到了 Out dalvik vm 堆限制的内存问题。
后来我尝试将屏幕上未显示的位图作为缓存存储到 sd 卡中,然后按需抓取它们,但我发现这在我的手机上比以前的方法慢得多。
针对这个问题的最佳攻击计划是什么?
java - 我可以从 Dalvik 和 Android 工具链中获得哪些优化?
我正在开发一个高性能的 Android 应用程序(一个游戏),尽管我首先尝试编写代码以提高可读性,但我喜欢在脑海中保留一个幕后发生的事情的画面。使用 C++,我对编译器将为我做什么和不做什么有了相当好的直觉。我正在尝试对 Java/Android 做同样的事情。
因此这个问题。我在网上几乎找不到关于这个话题的信息。Java 编译器、Dalvik 转换器 (dx) 和/或 JITter(在 Android 2.2+ 上)是否会执行如下优化?
方法内联。在什么条件下?
private
方法总是可以安全地内联;这会完成吗?public final
方法呢?其他类对象的方法?static
方法?如果编译器可以轻松推断出对象的运行时类型怎么办?我应该尽可能final
或static
尽可能声明方法吗?公共子表达式消除。例如,如果我访问
someObject.someField
两次,是否只进行一次查找?如果是对 getter 的调用呢?如果我两次使用某个算术表达式怎么办?它只会被评估一次吗?for
如果我使用某个表达式的结果(我知道它的值不会改变)作为循环的上限怎么办?数组查找的边界检查。工具链会在某些情况下消除这种情况,比如原型
for
循环吗?值内联。对某些内容的访问是否
public static final int
总是内联的?即使他们在另一个班级?即使它们在另一个包裹中?分支预测。这是一个多大的问题?在典型的 Android 设备上进行分支是否会对性能产生很大影响?
简单的算术。会
someInt * 2
被取代someInt << 1
吗?
等等...