I have a DialogFragment that handles login and fingerprint authentication for my application. This fragment uses two classes that are exclusive to API 23, KeyGenParameterSpec and KeyPermanentlyInvalidatedException. I had been under the impression that I could use these classes, as long as I check the build version before I try to initialize the classes (outlined here):
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
But it appears that this is not the case. If I try …
android dalvik android-version android-api-levels android-fingerprint-api
我不断得到,这个错误 logcat
DexOpt: not resolving ambiguous class 'Lorg/apache/http/client/utils/URLEncodedUtils;'
12-07 05:26:01.085: ERROR/dalvikvm(4620): LinearAlloc exceeded capacity (5242880), last=1092
12-07 05:26:01.085: ERROR/dalvikvm(4620): VM aborting
12-07 05:26:01.187: INFO/DEBUG(2373): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-07 05:26:01.187: INFO/DEBUG(2373): Build fingerprint: 'samsung/SGH-T849/SGH-T849/SGH-T849:2.2/FROYO/UVJJB:user/release-keys'
12-07 05:26:01.187: INFO/DEBUG(2373): pid: 4620, tid: 4620 >>> /system/bin/dexopt <<<
12-07 05:26:01.187: INFO/DEBUG(2373): signal 11 (SIGSEGV), fault addr deadd00d
............etc
12-07 05:26:01.347: INFO/dalvikvm(2494): threadid=3: reacting to signal 3
12-07 05:26:01.358: INFO/dalvikvm(2494): Wrote stack traces …Run Code Online (Sandbox Code Playgroud) 自安装v17的android构建工具后,我在我的测试项目中得到了一个VerifyError.
我的项目结构的简短描述:
所有jar文件都存在于我的主项目libs文件夹中
测试项目是一个驻留在我的主项目中的项目
所有Instrumentation测试都与我的活动存在于同一个包中.
我有一个jar只需要测试项目中我的libs文件夹中的测试项目
有没有人见过这个?自更新以来,它发生在我的所有项目上.运行测试会产生一个InstrumentationException:java.lang.VerifyError
我有很多处理特定消息类型的处理程序类.要注册所有这些处理程序,我需要知道存在哪些处理程序.目前,它们都使用特定的注释进行注释,并且我使用Java 6注释处理器来获取所有这些注释,并创建一个包含每个注释类型的实例的Register类.
如果整个树一次构建,这很有效,但如果只构建一个带注释的类(例如,当我在Eclipse中保存文件时),处理器只能看到该类型,并构建一个不完整的Register.如何检查此方案中的其他类型?
我尝试在Android上使用Janino上的东西并得出结论,他们根本不在Dalvik VM中工作.
所以我只想问一个简单的问题:在Android上,是否可以在运行时编译包含代码的字符串,以便在应用程序中使用.如果是这样,是否有任何库可以让我这样做和/或你能分享一个代码示例如何做到这一点?
对于(一个非常简单的)示例,如果我有一个包含以下内容的String对象:
public class Adder{
int x;
int y;
public Adder(int x,int y) {
this.x = x;
this.y = y;
}
public int add() { return x+y;}
}
Run Code Online (Sandbox Code Playgroud)
作为一个巨大的弦线.有没有办法可以处理它来创建Adder对象的实例,所以我可以add()通过Reflection API 调用方法?
编辑 我尝试过beanhell解释,但事实证明它太慢了.我正在寻找一些更快的东西,就像Janino一样
是否可以在Android Studio中查看我的应用程序的Dalvik字节码?如果是这样,怎么样?
更新:
我的应用程序是使用Android Studio用Java编写的,我希望在Android Studio中看到我的Java类字节代码,也称为Dalvik字节码(不是源代码).
自首个Android版本以来,Dalvik VM一直是默认的VM.
谷歌在KitKat 4.4中发布了新的ART运行时.
AndroidPolice表示,这将提高应用程序性能和电池寿命.不幸的是,几乎没有关于ART的技术信息.只有这个页面.
根据我的理解,Dalvik VM在运行时将dex字节码转换为机器指令.ART将dex代码预编译为本机指令,从而消除了运行时转换步骤.
关于这个:
按照Xamarin站点上的步骤绑定Java库以创建ArcGIS for Android 10.2.2的绑定项目时,我可以编译项目.但是,当我尝试部署并运行项目时,我收到以下错误:
COMPILETODALVIK : UNEXPECTED TOP-LEVEL error :
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at com.android.dx.ssa.SsaMethod$2.addToUses(SsaMethod.java:474)
at com.android.dx.ssa.SsaMethod$2.visitPhiInsn(SsaMethod.java:459)
at com.android.dx.ssa.PhiInsn.accept(PhiInsn.java:323)
at com.android.dx.ssa.SsaBasicBlock.forEachInsn(SsaBasicBlock.java:990)
at com.android.dx.ssa.SsaMethod.forEachInsn(SsaMethod.java:729)
at com.android.dx.ssa.SsaMethod.buildUseList(SsaMethod.java:452)
at com.android.dx.ssa.SsaMethod.getUseListForRegister(SsaMethod.java:641)
at com.android.dx.ssa.SCCP.addUsersToWorklist(SCCP.java:116)
at com.android.dx.ssa.SCCP.simulateStmt(SCCP.java:538)
at com.android.dx.ssa.SCCP.simulateBlock(SCCP.java:208)
at com.android.dx.ssa.SCCP.run(SCCP.java:554)
at com.android.dx.ssa.SCCP.process(SCCP.java:92)
at com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:160)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:73)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:273)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:134)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:87)
at com.android.dx.command.dexer.Main.processClass(Main.java:487)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
at com.android.dx.command.dexer.Main.access$400(Main.java:67)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
at com.android.dx.command.dexer.Main.processOne(Main.java:422)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
at com.android.dx.command.dexer.Main.run(Main.java:209)
Run Code Online (Sandbox Code Playgroud) Android浏览器将Dalvik作为请求标头中的用户代理发送.
我目前正在开发一个移动网站,该网站有一个简单的登录页面,用于验证用户名和密码,然后授权用户个人资料.
但是,当我检查请求标题时,我看到了一些不寻常的东西,来自同一设备的两个用户代理.
以下是来自同一设备的用户代理:
"Mozilla/5.0 (Linux; Android 4.1.2; C5303 Build/12.0.A.1.257) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36"
"Dalvik/1.6.0 (Linux; U; Android 4.2.2; C2004 Build/15.2.A.2.5)"
Run Code Online (Sandbox Code Playgroud)
即使是一些奇怪的东西,我们要么重置或丢弃.
有没有什么办法可以进一步调试这个以获取更多信息并更好地了解这个问题?
在旧的Android手机或ios或Windows手机中没有出现此问题.
**在具有KitKat/JellyBean OS的高端Android手机中发现了问题
我建立我的应用程序我得到了这个错误
Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(com.amazonaws.javax.xml.stream.xerces.util.SecuritySupport12 $ 4)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何"-target"类型选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.
Dex Loader]无法执行dex:方法ID不在[0,0xffff]中:65536转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]中:65536