标签: dalvik

addJavascriptInterface()是否依赖于getClass()?

我试图通过代码来追踪,看看addJavascriptInterface()WebView实现的,但它潜入native代码,基本上戕害我神交是怎么回事能力.

具体来说,我试图确定JNI(?)是否意味着addJavascriptInterface()回调为Java代码的方式依赖于getClass()作为反射策略的一部分,将JavaScript源中的方法引用映射到Java中的实现.我会认为它必须,也许我在错误的地方搜索,但我没有看到它.

任何人都可以指向使用注入的Java对象的代码,所以我们可以看到它是如何实现的?

谢谢!


UPDATE

澄清一下,我的意思是使用getClass()传递给的对象addJavascriptInterface().

android dalvik android-source android-webview

6
推荐指数
1
解决办法
1689
查看次数

如何使用 PathClassLoader 替换已弃用的 DexFile API?

我有一个类,我在其中进行了一些运行时注释扫描,但它使用了已弃用的 DexFile API,这会导致 LogCat 中出现警告:

  • W/zygote64: Opening an oat file without a class loader. Are you using the deprecated DexFile APIs?.

我想摆脱此消息并使用适当的 API。文档建议PathClassLoader,但我不明白它DexFile在功能上的等效性。我可以将 aPathClassLoaderDexFile实例结合使用,虽然它确实有效,但它会给我更多警告并且需要更长的时间来扫描。为了清楚起见,我已经包含了我在下面写的注释扫描器。如果有人可以建议如何摆脱这些警告消息和 的替代方案DexFile,因此在删除后我不会受到损坏的功能的影响,我会非常感激。

class AnnotationScanner {
    companion object {
        fun classesWithAnnotation(
            context: Context,
            annotationClass: Class<out Annotation>,
            packageName: String? = null
        ): Set<Class<*>> {

            return Pair(context.packageCodePath, context.classLoader)
                .letAllNotNull { packageCodePath, classLoader ->
                    Pair(DexFile(packageCodePath), classLoader)
                }
                ?.letAllNotNull { dexFile, classLoader ->
                    dexFile
                        .entries()
                        ?.toList()
                        ?.filter { entry …
Run Code Online (Sandbox Code Playgroud)

android jvm classloader dalvik dex

6
推荐指数
0
解决办法
2171
查看次数

我如何制作孤立的dalvik

我正在追踪Dalvik机器的源代码.据此,我想让Dalvik可以运行.我似乎是dvk项目.但是有很多问题导致了错误.有没有办法让dalvik只有没有所有的android.因为make android需要花费太多时间(大约需要几个小时)

dvk项目:http://code.google.com/p/dvk/

linux android virtual-machine dalvik dex

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

Android上常见的性能陷阱?

什么是最容易犯的错误,可以成为Android上的性能接收器?

文档提到"一些浮点运算"可能是"毫秒级" - 有人测试过这个吗?

为了便于讨论,让我们假设它在G1 /类似设备上运行.

java optimization performance android dalvik

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

Python代码转换为JVM

有没有像翻译这样的东西(因为我现在脑子里没有更好的词)将Python代码直接翻译成JVM/Dalvik字节码?

用Python编写Android应用程序会很棒!

注意:我知道Android平台的脚本功能,但我正在寻找能够生成'.apk'的东西,而无需安装'脚本'软件包......对最终用户来说很烦人.

python java android jvm dalvik

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

用python或其他语言生成一个Dex文件

是否可以在运行时使用python,perl或类似语言生成dalvik字节码?

谢谢

python dalvik dex

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

Dalvik JIT工作流程

我对dalvik vm(Android)感兴趣.我试图通过JIT的代码来找出它执行的操作以及它如何选择跟踪.我无法遵循代码.所以我请求所有人通过在JIT中建议执行跟踪选择和转换的相关功能来帮助我

android jit dalvik android-source

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

将两个正整数乘以长的铸造结果为负值

我有这样的代码:

int a = 629339;
int b = 4096;
long res = a*b;
Run Code Online (Sandbox Code Playgroud)

结果是,-1717194752 但如果我添加一个手动转换为长long res = ((long)a)*b;long res = (long) a*b;结果是正确2577772544 谁可以解释它是如何工作的.

java android jvm dalvik

5
推荐指数
3
解决办法
7473
查看次数

Java反射:实现接口并传递给另一个类

我不确定Java是否可以实现,但我正在尝试实现一个在编译时不可用的接口**并将其作为该接口的对象传递给另一个类.假设我有一个界面,如:

public interface MyInterface {
    void onReceive(int i);
}
Run Code Online (Sandbox Code Playgroud)

和另一类如:

public void MyClass {
    ArrayList<MyInterface> listenerList = new ArrayList<MyInterface>();

    public void add(MyInterface m) {
        listenerList.add(m);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它们在编译时可用,我将使用它们:

blah = new MyInterface() {
    public void onReceive(int i) {
        System.out.println("BLAH");
    }
}

MyClass mc = new MyClass();
myClass.add(blah);
Run Code Online (Sandbox Code Playgroud)

我想知道如果前两个类只在运行时可用,是否有办法编写与上面相同的代码.

提前致谢!

**我正在尝试使用Android的ROM中的框架库,但它是在dalvik字节码中,所以我不能用它来编译.

更新:这是我用来测试解决方案的一些示例代码:

文件a/IIMSListener.java

// Excerpt from decompiled class

public interface IIMSListener
{
    void onReceive(int p0, int p1/*, IMSParameter p2*/);
}
Run Code Online (Sandbox Code Playgroud)

文件a/IMSRemoteListenerStub.java

// Excerpt from decompiled class

import java.util.concurrent.*;
import java.util.*; …
Run Code Online (Sandbox Code Playgroud)

java reflection android interface dalvik

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

使用静态方法的类在Android中存在多长时间?

这是我之前的一个问题的后续问题.

我有一个LoadingActivity,它加载所有活动所需的一些图形并将其存储到静态类中.当我按下HOME并恢复应用程序时,我尝试不再重新加载LoadingActivity,因为它需要大量内存并且在多次运行之后已经加载了图形,因此无需再次启动LoadingActivity.我的问题是,静态课有多长时间了?我可以依靠它的可用性恢复后的应用程序,或者可以说,它是在这里(如手机运行,这意味着只要)由于Android它杀死因内存问题或者是它一直在这里只要虚拟机运行?

memory android static-members dalvik

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