我试图通过代码来追踪,看看addJavascriptInterface()上WebView实现的,但它潜入native代码,基本上戕害我神交是怎么回事能力.
具体来说,我试图确定JNI(?)是否意味着addJavascriptInterface()回调为Java代码的方式依赖于getClass()作为反射策略的一部分,将JavaScript源中的方法引用映射到Java中的实现.我会认为它必须,也许我在错误的地方搜索,但我没有看到它.
任何人都可以指向使用注入的Java对象的代码,所以我们可以看到它是如何实现的?
谢谢!
UPDATE
澄清一下,我的意思是使用getClass()传递给的对象addJavascriptInterface().
我有一个类,我在其中进行了一些运行时注释扫描,但它使用了已弃用的 DexFile API,这会导致 LogCat 中出现警告:
W/zygote64: Opening an oat file without a class loader. Are you using the deprecated DexFile APIs?. 我想摆脱此消息并使用适当的 API。文档建议PathClassLoader,但我不明白它DexFile在功能上的等效性。我可以将 aPathClassLoader与DexFile实例结合使用,虽然它确实有效,但它会给我更多警告并且需要更长的时间来扫描。为了清楚起见,我已经包含了我在下面写的注释扫描器。如果有人可以建议如何摆脱这些警告消息和 的替代方案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) 我正在追踪Dalvik机器的源代码.据此,我想让Dalvik可以运行.我似乎是dvk项目.但是有很多问题导致了错误.有没有办法让dalvik只有没有所有的android.因为make android需要花费太多时间(大约需要几个小时)
dvk项目:http://code.google.com/p/dvk/
什么是最容易犯的错误,可以成为Android上的性能接收器?
文档提到"一些浮点运算"可能是"毫秒级" - 有人测试过这个吗?
为了便于讨论,让我们假设它在G1 /类似设备上运行.
有没有像翻译这样的东西(因为我现在脑子里没有更好的词)将Python代码直接翻译成JVM/Dalvik字节码?
用Python编写Android应用程序会很棒!
注意:我知道Android平台的脚本功能,但我正在寻找能够生成'.apk'的东西,而无需安装'脚本'软件包......对最终用户来说很烦人.
是否可以在运行时使用python,perl或类似语言生成dalvik字节码?
谢谢
我对dalvik vm(Android)感兴趣.我试图通过JIT的代码来找出它执行的操作以及它如何选择跟踪.我无法遵循代码.所以我请求所有人通过在JIT中建议执行跟踪选择和转换的相关功能来帮助我
我有这样的代码:
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是否可以实现,但我正在尝试实现一个在编译时不可用的接口**并将其作为该接口的对象传递给另一个类.假设我有一个界面,如:
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) 我有一个LoadingActivity,它加载所有活动所需的一些图形并将其存储到静态类中.当我按下HOME并恢复应用程序时,我尝试不再重新加载LoadingActivity,因为它需要大量内存并且在多次运行之后已经加载了图形,因此无需再次启动LoadingActivity.我的问题是,静态课有多长时间了?我可以依靠它的可用性恢复后的应用程序,或者可以说,它是在这里(如手机运行,这意味着只要)由于Android它杀死因内存问题或者是它一直在这里只要虚拟机运行?
dalvik ×10
android ×9
java ×4
dex ×3
jvm ×3
python ×2
classloader ×1
interface ×1
jit ×1
linux ×1
memory ×1
optimization ×1
performance ×1
reflection ×1