我正在追踪Dalvik机器源代码.因此,我想让Dalvik运行.我似乎是DVK项目.但是有许多问题导致故障.是否有任何方法可以使Dalvik只有没有所有Android.因为制作Android会花费太多时间(大约很多小时) dvk项目: 解决方案 如果您建造午餐" sim-eng",则将获得一个为主机构建的dalvikvm(即,您正在构建的Linux Box).这已经使用glibc而不是仿生. 如果您想为设备构建,并且只需要更快的构建,则无需重建所有内容; " MMM Dalvik Snod"就足够了. (尽管如果您在Dalvik/Libcore/中没有更改任何内容,那么对VM进行更改也不应该重建太多,即使您做了完整的顶级" MAKE".) 不要忘记使用" make -j"将一些并行性进入您的构建! 其他解决方案 这个博客文章有关如何编译二进制的信息以及如何使用它.
以下是关于 dex 的编程技术问答
Android Newbie在这里试图在Android中使用我最喜欢的Java测试工具.我正在尝试使用以下博客文章中概述的Mockito 1.9.5,但无法在模拟器上运行测试(我目前没有物理设备可以使用). oighit-android教程: 我能够执行所有正常的JUNIT测试而没有问题,但是我利用Mockito的任何测试都会收到以下内容: Can't open dex cache '/data/dalvik-cache/data@data@com.trendium.peg@cache@Generated-621101.jar@classes.dex': No such file or directory Unable to open or create cache for /data/data/com.trendium.peg/cache/Generated-621101.jar (/data/dalvik-cache/data@data@com.trendium.p
例外是 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':_4SaleApp:transformClassesWithDexForRelease'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) at org.gradle.api.internal.tasks.execution.OutputDirectoryCr
使用gradle def( https://plus.google.com/+ianlake/posts/jw9x4pcb1rj ) apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { applicationId "info.osom.multidex" minSdkVersion 19 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules
我丢失了去年构建的所有应用程序的代码(对我的硬盘雷声,没有任何应用程序的备份).由于它们是相当简单的应用程序,因此我将它们置于逆向工程过程中.过去,我已经做了很多时间,每次我都没有问题(如果我们不计算工作时间将所有文件放在一个项目中).我已经完成了在硬盘倦怠期间丢失的3个应用程序.他们几乎完美地颠倒了,但是我被这一个倒了. 让我们详细了解.反向工程过程进行得很好.我能够从APK提取的编码XML文件中获取XML代码.我还能够从classes.dex中成功地反编译Java代码.我可以阅读所有文件,然后可以通过文本编辑器打开/查看. 但是我得到了一个奇怪的文件结构和怪异的文件名.项目文件位于通常的路径src/com/mycompanyname/appname内.在RI过程之后,某些文件的某些保留在主要路径中(R.java,第三方广告文件和其他一些文件),而所有其他文件都被调用这样的文件结构: a.java B.Java c.java ... Z.Java 我编写
一个反编译Android DEX(VM字节码)文件如何到相应的Java源代码? 解决方案 这很容易 获取这些工具: dex2jar 将dex文件转换为jar files jd-gui 在JAR 中查看Java文件 源代码非常可读,因为dex2jar进行了一些优化. 过程: 这是如何反编译的过程: 步骤1: 转换clast.dex in test_apk-debug.apk tes_apk-debug_dex2jar.jar.jar d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex 注释1:在Windows机器中,所有.sh脚本都被.bat脚本取代 注2:在Linux/Mac上不要忘记sh或bash.完整命令应为: sh d2j-dex
我开始使用Android支持设计库中的UI元素后,应用程序初始加载时间变得非常慢(大约8秒!),我真的不确定为什么. 我在大多数启动过程中运行了方法跟踪(Android Studio需要时间才能开始运行CPU显示器),并发现它花费了4秒钟: dalvik.system.DexFile.openDexFile,我不确定为什么要花这么长时间. 有什么想法吗? (我没有添加任何代码,因为我的应用中有很多代码,我不知道问题来自哪里... 解决方案 我在构建发行应用程序时会增加速度,而不是我正常运行的调试版本. 我不确定为什么它可以工作,但是我想这是因为编译器将EXT LIB链接到APK的方式.我曾经看到过与Android UI平台上的开发人员之一Chet Haase的采访,他解释了他们如何尽快显示该应用程序上的第一个活动以避免避免使用呆板的飞溅屏幕.也许该功能在发行构建过程中以某种方式启用了. 编辑: 正确的答案由@embydextrous写下面.它是由于在调试模
我和我的团队从另一个团队继承了一个大型Android项目.据报道,所有随附库的整个应用程序具有约35000种方法.现在,我们已经完成了在需要使用协议缓冲区的应用中实现新服务的任务. 问题在于,带有所有必需的.proto文件的生成的.jar文件创建了另外几个35000方法,即70000方法.而且,如果您不知道,Android编译器的限制为65536个方法.我们显然已经超出了该限制,我们正在遇到以下错误来编译应用程序: Unable to execute dex: method ID not in [0, 0xffff]: 65536 Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 是的,应用程序体系结构可能应该进行重组,但这需要时间.目前,我们正在尝试找出一个解决此问题的解决方案. 有什么建议? 解决方案 您可以使用另一
Gradle或Android中的DEX是什么? 在gradle中,dexoptions的含义是什么? 有时我的项目由于某些触点而不会编译. 我需要激活proguard来编译我的Android应用. 解决方案 在标准Java世界中: 编译标准Java代码时:编译器produce *.class文件.一个 *类文件包含可以在标准JVM上执行的标准Java字节码. 在Android世界中: 这是不同的.您使用Java语言编写您的代码,但是编译器不会产生 *.class文件,而是产生 *.dex文件. a *.dex文件包含可以在Android虚拟机(DALVIK)上执行的字节码,这不是标准的Java虚拟机. 要清楚:Android中的DEX文件相当于标准Java中的类. so dexoptions是A gradle对象 定义了一些用于配置此 java-code-to-bytecode 转换的选项.通过此对象配置的选项为: TargetAp
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 在最近从2.3.3版本更新Android Studio 3.0.1之后,我面临与DexMergerexception有关的问题. 其他人也发布了与此问题有关的问题.但是在这个问题中,我想分析堆栈跟踪以找到相关的解决方案(因为我在这里是新手.). 我无法解决. 这是我的build.gradle(模块:app) apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { appl
我正在尝试构建一个插件系统,该系统正在从其他apks导入在这里. P> 日食一直告诉我: 12-01 15:17:18.609:w/dalvikvm(23425):由意外dex解决课程:lde/anthropotec/activationapp/firstplugin/ui;(0x42901520):0x57D93000 pluginapi;] lde/anthropotec/activityApp/api/pluginapi;(0x428eb2b8):0x527E1000 (lde/anthropotec/activityApp/firstplugin/ui;在预验证期间使用了不同的LDE/Anthropotec/Activation App/Api/pluginapi;) 这不是惊喜,因为我在主机和插件中都导入了插件.据我了解,Eclipse似乎很害怕,这些诽谤并不相同.是否有办法告诉Eclipse如果已经存在于另一个APK中的情况,请不要导入Libary?还是有
当我们运行应用程序的APK文件时,我会遇到此错误.在build.gradle中,我们设置了Multidex,并在Gradle文件中存在编译多端.我们将Firebase版本的版本更改为上下和下方,但这对我们不起作用.这是我们在运行控制台中的完整日志: D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: ir.parsinteam.ojoobe, PID: 5141 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf; at com.google.android.gms.location.LocationSer
首先,我知道这个错误是已经问 案例有些不同: 我正在分发SDK(Android库项目).我的SDK需要等于(播放服务,支持V4,GSON JARS等)毕加索,所以我在gradle.build中有: compile 'com.squareup.picasso:picasso:2.5.2' 现在,当我测试将结果aar从此库项目导入到我的示例应用程序时 - 所有工作都很好. 问题是,我的客户将aar文件导入他的应用程序项目时,试图在他的应用程序中启动Activity与我的SDK功能有关的Activity获得上述错误: Failed resolution of: Lcom/squareup/picasso/Picasso: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path: DexPathList[[zip file "/data/ap
我正在从OSX上的命令行中编译我的(相当简单,只有5个带有几百个LOC的文件),请使用: ant debug 它有效.但是它的工作缓慢: BUILD SUCCESSFUL Total time: 26 seconds 为什么?即使我只更改一个Java文件中的一行,也需要这么多时间.大部分时间都花在dex阶段(约20秒)中,这是Afaik创建Dalvik字节码.但是我的朋友也使用Eclipse在Windows上也可以使用同一项目,这说明他的机器只需一两秒钟.我可以做些什么来加快此过程? 解决方案 我终于找到了解决方案!这有点黑客,但有效. 首先,转到您的Android-SDK/Platform-tools目录,然后将其重命名dx应用程序,例如dextool,最后创建带有内容的新dx文件: #!/bin/sh shift dextool --dex --incremental --no-optimize $@ 用您之前选择的名称替换" d
用户是否可以将我的应用程序的APK文件转换回实际代码? 如果他们这样做 - 有什么方法可以防止这种情况? 解决方案 首先, apk file 只是一个修改的JAR文件.因此,真正的问题是他们可以将DEX文件在其中反编译.答案有点像.已经有拆卸器,例如 dectexer 和 smali .您可以期望它们只会变得更好,从理论上讲,最终应该可以将其分配到实际的Java源(至少有时).请参阅上一个问题将DEX分解为Java Sourcececode . 您应该记住的是混淆永远不会起作用.选择一个良好的许可证,并尽最大努力通过法律执行它.不要用不可靠的技术措施浪费时间. 其他解决方案 apk文件是可以解释的.但是如果代码被混淆,可能很难理解. 使用 检索AndroidManifest.xml文件的内容 显示了各种信息(例如,活动,活动,服务,广播接收器,...) 命令: aapt aapt dump badging sampleApp.apk
我需要您的帮助.从: 更新我的gradle时,我遇到了一个运行时错误. 实施'com.google.android.gms:play-services-auth:15.0.1' 实现'com.facebook.android:Facebook-android-sdk:4.27.0' to: 实施'com.google.android.gms:play-services-auth:15.0.1' 实现'com.facebook.android:Facebook-android-sdk:4.27.0' 实施'com.google.android.gms:play-services-ads:15.0.1' 实施'com.facebook.android:Audience-network-sdk:4.27.0' 错误日志: E/Androidruntime:致命例外:主要 过程:id.android.steven.dev,pid:5539 java.lang.run
每当我加载应用程序时,我都会收到这个怪异的logcat消息,这不会导致崩溃,但仍然担心我. 我已经研究了不同的论坛,发现DEX是Java运行的代码.我仍然不知道为什么会收到此消息. 有人知道此错误消息是涉及到的内容以及我如何解决该错误? 07-11 13:53:53.277 19014-19075/com.example.abba.10thingright E/Zygote64:DEX校验和不匹配DEX: /data/data/com.example.abba.everythingright/files/instant-run/dex-temp/reload0x0000.dex.dex.endex.exped: 1564265601,实际:2911718928 解决方案 这是由称为Instant Run的开发工具引起的. 您不会在发布中看到. 如果此错误一直困扰,则可以在Android Studio的设置中禁用即时运行.
我做了: 在"设置" - >" Android SDK" - >" SDK工具" Google Play服务已检查并安装V.46 删除文件夹/.gradle "清洁项目" "重建项目 错误是: Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. > java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 项目build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'c
我最近尝试开放一个在某个时候开发的项目,并尝试重建它,并得到了整个负载Android Pre dex错误,我完全被认为是如何摆脱它们的.尝试了很多东西,例如更改Android API级别,清洁,更改JDK版本.所有这些都不起作用. 外面的任何专家都可以启发我这些错误的可能原因.? android pre dex pre dex错误屏幕截图 解决方案 步骤1:在默认配置 中添加启用多端X defaultConfig { applicationId "Your package name" minSdkVersion 16 targetSdkVersion 23 versionCode 5 versionName '1.0.5' multiDexEnabled true } 步骤2:在您的依赖项中添加此库 compile 'com.android.support:multidex:1.0.0' 步骤3