我有一个相当大的Android应用程序,它依赖于许多库项目.Android编译器对每个.dex文件有65536个方法的限制,我超过了这个数字.
当你达到方法限制时,你可以选择两种途径(至少我知道).
1)缩小你的代码
2)构建多个dex文件(参见此博文)
我调查了两个并试图找出导致我的方法计数变得如此之高的原因.Google Drive API占据了Guava依赖的最大块,超过12,000.Drive API v2的总库存超过23,000!
我想我的问题是,你认为我该怎么做?我应该删除Google云端硬盘集成作为我应用的功能吗?有没有办法缩小API(是的,我使用proguard)?我应该采用多重dex路由(看起来相当痛苦,尤其是处理第三方API)?
每次我尝试在我的Motorola Xoom上安装我的应用程序时,我收到一个INSTALL_FAILED_DEXOPT错误.
以下是来自控制台的错误消息:
[2011-08-02 09:34:43 - Blade] Installation error: INSTALL_FAILED_DEXOPT
[2011-08-02 09:34:43 - Blade] Please check logcat output for more details.
[2011-08-02 09:34:43 - Blade] Launch canceled!
Run Code Online (Sandbox Code Playgroud)
这里是相应的logcat:
08-02 09:47:48.910: ERROR/PackageManager(142): Package com.theisenp.blade has mismatched uid: 10023 on disk, 10073 in settings
08-02 09:47:48.910: INFO/PackageManager(142): Linking native library dir for /data/app/com.theisenp.blade-1.apk
08-02 09:47:49.110: ERROR/dalvikvm(2094): Duplicate interface: 'Lgnu/trove/TIntIntProcedure;'
08-02 09:47:49.110: ERROR/dalvikvm(2094): Trouble with item 1108 @ offset 0x5d49c
08-02 09:47:49.110: ERROR/dalvikvm(2094): Cross-item verify of section type …Run Code Online (Sandbox Code Playgroud) 当我在虚拟设备上传我的应用程序时,我有一个问题,如何修复它?虚拟设备:Nexus S,CPU:Intel Atom x86.我使用的是Android Studio
Waiting for device.
Target device: emulator-5554
Uploading file
local path: D:\git\Genius\app\build\apk\app-debug-unaligned.apk
remote path: /data/local/tmp/com.vlad.genius.app
Installing com.vlad.genius.app
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.vlad.genius.app"
pkg: /data/local/tmp/com.vlad.genius.app
Failure [INSTALL_FAILED_DEXOPT]
Run Code Online (Sandbox Code Playgroud)
我使用擦除用户数据运行虚拟设备,但它不帮助我.
在Logcat中,我看到了这一行:
05-04 16:44:49.940 1775-1775/? W/dalvikvm? DexOptZ: zip archive '/data/app/com.vlad.genius.app-1.apk' does not include classes.dex
05-04 16:44:49.940 956-956/? W/installd? DexInv: --- END '/data/app/com.vlad.genius.app-1.apk' --- status=0xff00, process failed
05-04 16:44:49.940 956-956/? E/installd? dexopt failed on '/data/dalvik-cache/data@app@com.vlad.genius.app-1.apk@classes.dex' res = 65280
Run Code Online (Sandbox Code Playgroud) 我在Android中使用ccr4j API,所以当我运行我的项目时,它会抛出一个错误:
安装应用程序时出错(INSTALL_FAILED_DEXOPT)
我也从net和同一站点找到了,做了所有尝试,
1.从设备上卸载了相同的应用程序.
2.使用擦除用户数据运行仿真器.
但仍然会出现同样的错误.
所以任何人都知道为什么会抛出这种错误?
在 android 模拟器中运行我的应用程序时出现错误
com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_DEXOPT
当我尝试在运行Gingerbread和Froyo的设备上安装我的apk文件时,它会抛出此错误:无法安装应用程序:pkg:/sdcard/temp.apk失败[INSTALL_FAILED_DEXOPT].如果有人通过Google Play安装它,则会显示一个弹出窗口,其中显示以下消息:"程序包文件无效".我联系了Google Play开发人员支持,他们建议我在Android开发论坛上搜索"dexopt failed gingerbread froyo",我确实搜索了这个问题,但找不到任何解决方案.任何帮助,将不胜感激.
编辑:此错误有帮助吗?DexInv:--- END'/mnt/asec/org.example.android-1/pkg.apk'--- status = 0x000b,在'/ data/dalvik-cache/mnt @ asec @ org上处理失败dexopt失败. example.android-1 @ pkg.apk @ classes.dex'res = 11
当运行eclipse时,应用程序每次都会崩溃
LinearAlloc超出容量(5242880),最后= 208
这种情况正在发生,当我创建AsyncTask时,奇怪的是每次都会发生这种情况.什么时候评论并运行它的运行.
Logcat是:
02-09 04:02:23.374: I/dalvikvm(3351): DexOpt: not resolving ambiguous class 'Lorg/apache/http/HttpEntityEnclosingRequest;'
02-09 04:02:23.374: I/dalvikvm(3351): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/binary/Base64;'
02-09 04:02:23.378: D/dalvikvm(3351): DexOpt: not verifying 'Lorg/apache/commons/codec/net/QuotedPrintableCodec;': multiple definitions
02-09 04:02:23.378: D/dalvikvm(3351): DexOpt: not verifying 'Lorg/apache/commons/codec/net/StringEncodings;': multiple definitions
02-09 04:02:23.378: D/dalvikvm(3351): DexOpt: not verifying 'Lorg/apache/commons/codec/net/URLCodec;': multiple definitions
02-09 04:02:23.394: I/dalvikvm(3351): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/logging/LogFactory;'
02-09 04:02:23.397: I/dalvikvm(3351): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/codec/net/URLCodec;'
02-09 04:02:23.487: I/dalvikvm(3351): DexOpt: not resolving ambiguous class 'Lorg/apache/commons/logging/impl/LogFactoryImpl;'
02-09 04:02:23.487: D/dalvikvm(3351): …Run Code Online (Sandbox Code Playgroud) 我在Android 4.0上制作了一个带有odex的apk.并尝试将其安装到模拟器.
adb shell install test.apk
Run Code Online (Sandbox Code Playgroud)
获取错误消息是失败失败[INSTALL_FAILED_DEXOPT].还尝试将apk和odex文件推送到/ system/app,它不起作用.如何安装这个apk?
我用的是最新的adt-bundle-windows-x86_64-20130717,与
我曾尝试在仿真器2.3.3上安装应用程序,包括ARM和Intel.但是,它不再起作用(在我使用最新的adt之前,它曾经在我的同一台Win64机器上工作)
Installation error: INSTALL_FAILED_DEXOPT
Please check logcat output for more details.
Launch canceled!
Run Code Online (Sandbox Code Playgroud)
我的模拟器设置如下.

我曾经按照如何解决INSTALL_FAILED_DEXOPT这个错误?.这对我的情况没有帮助.
请注意,4.1.2的仿真器对Intel非常有效.我甚至尝试通过电子邮件发送APK,然后从模拟器下载 - >安装.但是,这就是我所得到的Application not installed

解决这个问题的任何解决方法?
我的logcat正在进行此类日志记录
E/PackageManager(855): Package org.yccheok.jstock.gui has mismatched uid: 10031 on disk, 10033 in settings
E/dalvikvm(1241): LinearAlloc exceeded capacity (5242880), last=468
E/dalvikvm(1241): VM aborting
E/installd(798): dexopt failed on '/data/dalvik-cache/data@app@org.yccheok.jstock.gui-1.apk@classes.dex' res = 11
Run Code Online (Sandbox Code Playgroud)
注意,如果我使用的是模拟器4.1.2,则不会出现此问题
生成的"app-release.apk"不能用于我的设计,但"app-debug.apk"工作正常,
更新:
在转到我的应用程序的上一版本之后:
在我的MainActivity我有这个字符串:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String PREFS_NAME = "MyPrefsFile";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
if (settings.getBoolean("my_first_time", true)) {
//the app is being launched for first time, do something
TeamModel pm;
DBHelper db;
String teamNames1= "Los Angeles Lakers";
String teamOpponent1= "Golden State Warriors";
String teamDate1= "2015-03-16 22:30";
String teamNames2= "Atlanta Hawks";
String teamOpponent2= "Sacramento Kings";
String teamDate2= "2015-03-16 20:00";
.
.
String teamNames348= "Charlotte Hornets"; …Run Code Online (Sandbox Code Playgroud) 所以在这个主题上有几篇帖子,但看起来我的日志猫完全不同了.不知道发生了什么事.当我尝试在我的设备上运行时,我得到控制台日志:
[2012-07-17 14:50:56 - zrox] Uploading zrox.apk onto device '3134F748F94100EC'
[2012-07-17 14:50:56 - zrox] Installing zrox.apk...
[2012-07-17 14:50:57 - zrox] Installation failed due to invalid APK file!
[2012-07-17 14:50:57 - zrox] Please check logcat output for more details.
[2012-07-17 14:50:57 - zrox] Launch canceled!
Run Code Online (Sandbox Code Playgroud)
和Logcat:
07-17 19:50:56.043: W/zipro(4533): Unable to open zip '/data/local/tmp/zrox.apk': Permission denied
07-17 19:50:56.043: D/asset(4533): failed to open Zip archive '/data/local/tmp/zrox.apk'
07-17 19:50:56.047: D/dalvikvm(252): WAIT_FOR_CONCURRENT_GC blocked 0ms
07-17 19:50:56.047: W/PackageParser(4533): Unable to read AndroidManifest.xml of /data/local/tmp/zrox.apk
07-17 …Run Code Online (Sandbox Code Playgroud)