Articles of android multidex

执行任务失败:app:shrinkReleaseMultiDexComponents'

在Android Studio中生成已签名的apk时,出现以下错误。 :app:shrinkReleaseMultiDexComponents FAILED Error:Execution failed for task ':app:shrinkReleaseMultiDexComponents'. > java.io.IOException: The output jar [E:\SVN_studio\100's\trunk\app\build\intermediates\multi-dex\release\componentClasses.jar] must be specified after an input jar, or it will be empty. Information:BUILD FAILED Information:1 error Information:Total time: 35.975 secs Information:159 warnings 这里是我的build.gradle文件 apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 21 buildToolsVersion "22.0.1" defaultConfig { applicationId "<packageName>" minSdkVersion […]

如何通过导入正确的库来避免DEX 64K LIMIT

在编译我使用的所有库时,我遇到了这个问题, 在Dalvik中溢出了64k方法限制 。 当我导入支持库的时候,我开始遇到这个问题,因为有些已经包含在其他支持库中,结果溢出了极限。 有没有办法来validation一个库是否在当前项目中未使用或已经通过其他库依赖关系导入? 目前,我排除了我所知道的那些,但是看起来很奇怪,不得不亲自去做。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:multidex:1.0.1' compile "com.android.support:percent:${supportLibVersion}" compile("com.android.support:design:${supportLibVersion}") { exclude module: 'support-v4' } compile("com.android.support:cardview-v7:${supportLibVersion}") { exclude module: 'support-v4' } compile('com.github.nkzawa:socket.io-client:0.4.1') { exclude group: 'org.json', module: 'json' } compile('com.astuetz:pagerslidingtabstrip:1.0.1') { exclude module: 'support-v4' } //… } 目前的解决scheme: 使用Gradle插件 – 我们写了一个非常容易使用的Gradle插件,后面列出了随包装数量一起打包的方法数量。 你可以在这里find更多关于它的信息。 www.methodscount.com – 想知道一个特定的图书馆将添加到您的应用程序有多less种方法? 只需在这个网站上input'compile'语句,它会告诉你它的方法数量,依赖关系,JAR大小和DEX大小。 Android […]

Android – 使用Dex进行debugging

我的项目工作正常,直到我添加Facebook的依赖。 我已经开始得到这个错误。 我读过很多问题,这个问题似乎与MultiDex有关。 但是,没有任何解决scheme为我工作 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 1 即使删除了我所添加的东西,它仍然显示,而且在build设时比平常还要花费很多时间 这是我的build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "net.ciblo.spectrodraft" minSdkVersion 15 targetSdkVersion 23 versionCode 1 multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' […]

Android 4.4.4上的FlexJson ClassNotFoundexception

我有Android设备的multidex项目。 我使用Flexjson。 我已经用flexjson 3.3和2.xtesting过了。 它与Android 5.x完美的工作,但在Android 4.4.4崩溃。 它看起来像Dex支持库不适合与旧的Android版本,但我不知道。 这是我的堆栈跟踪: 06-29 03:50:44.763 11884-11884/com.pigdroid.gameboard E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.pigdroid.gameboard, PID: 11884 flexjson.JSONException: [ layers.values ]: Could not load com.pigdroid.game.board.tile.model.IntTileLayer at flexjson.ObjectBinder.findClassInMap(ObjectBinder.java:250) at flexjson.ObjectBinder.findClassName(ObjectBinder.java:213) at flexjson.ObjectBinder.bind(ObjectBinder.java:92) at flexjson.ObjectBinder.bindIntoCollection(ObjectBinder.java:110) at flexjson.factories.ListObjectFactory.instantiate(ListObjectFactory.java:13) at flexjson.ObjectBinder.bind(ObjectBinder.java:95) at flexjson.ObjectBinder.bindIntoObject(ObjectBinder.java:149) at flexjson.factories.ExistingObjectFactory.instantiate(ExistingObjectFactory.java:25) at flexjson.ObjectBinder.bind(ObjectBinder.java:95) at flexjson.ObjectBinder.bind(ObjectBinder.java:74) at flexjson.JSONDeserializer.deserialize(JSONDeserializer.java:241) at flexjson.JSONDeserializer.deserializeInto(JSONDeserializer.java:301) at com.pigdroid.game.model.memento.UndoableObject.from(UndoableObject.java:35) at […]

RoboGuice 3.0 NoClassDefFoundError:roboguice.inject.ContextScopedRoboInjector

这并不总是可见,但在特定的API 14和19上看到。 以下是堆栈跟踪 java.lang.NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector at roboguice.RoboGuice.getInjector(RoboGuice.java:197) at roboguice.activity.RoboActivity.onCreate(RoboActivity.java:90) at com.bnmcombines.galleryflavors.Launcher.onCreate(Launcher.java:71) at android.app.Activity.performCreate(Activity.java:5343) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) at android.app.ActivityThread.access$900(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5345) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) at dalvik.system.NativeStart.main(Native Method) RoboGuice 3.0已经logging了一个问题: https : //github.com/roboguice/roboguice/issues/328 但没有回应,我们目前被封锁。 问题解决了 这次我更仔细地介绍了MultiDex Document,并将我的AndroidManifest.xml更新到了我以前错过的版本 <application … android:name="android.support.multidex.MultiDexApplication"> … </application> […]

Android Studio 2.0即时运行会导致DexFile无法加载所有类

我有一些代码来得到一个类似于这个包的所有类的列表: try { DexFile df = new DexFile(context.getPackageCodePath()); for (Enumeration<String> iter = df.entries(); iter.hasMoreElements();) { String s = iter.nextElement(); } } catch (IOException e) { e.printStackTrace(); } 但是,由于我将Android Studio升级到版本2.0,因此此代码已停止工作。 我发现罪魁祸首是即时跑步。 如果我debugging应用程序,我可以看到,没有实例运行,DexFilevariables,df,包含类名称的列表(超过4000)。 当“即时运行”打开时,我只能得到30个左右的类名,而我正在寻找的类不在那里。 我有一种感觉,它与多dex有关,但我不知道即时运行是如何工作在封面(我的应用程序不使用multidex)。 有谁知道我可以如何获得类似这样的Instant Run打开的列表? 或者是否有人知道我为什么看到这种行为(会很好理解)?

Android Gradle插件multidex ZipException

我试图使用新的multidex选项,但我得到以下错误: Execution failed for task ':packageAll[Variant]TestClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/multidex/BuildConfig.class 我只能在运行connectedAndroidTests任务时发现问题,而不是简单地构build项目( 构build )。

我可以在Androiddebugging版本中启用multidex吗?

Dears,我读过许多博客文章,multidex应用程序的启动速度比正常的应用程序慢。 我的应用程序使用了很多超过64k方法的库,所以我使用multidex。 但是当我在发布版本中使用proguard时,最终的apk变得less于64k的方法 所以我的问题是:我可以在Androiddebugging版本中启用multidex,所以我没有运行时错误? 并在发布版本中禁用多个dex,因为我不需要它? 如果是的话,怎么样? 如果没有,Android是否足够聪明,加快启动,因为它应该认识到,应用程序没有超过64k,即使它是多个dex应用程序?

Android MultiDex – 关于内部工作的问题

我最近从Android上发现了新的MultiDexfunction,用于处理超过65,000个引用的应用程序。 请参阅: https : //developer.android.com/tools/building/multidex.html 有人可以帮助我理解以下问题: 1)Gradle构build插件如何确定要放入主要的dex文件(classes.dex)与辅助dex文件? 基于文档,有一些东西需要在初级dex中,但没有给出任何例子。 所有的活动都需要在主要的dex文件中吗? 引用文字: 在Dalvik运行时执行时,主要的dex文件中需要哪些类是复杂的要求。 Android构build工具更新处理Android需求,但其他包含的库可能还有其他依赖需求,包括使用内省或从本地代码调用Java方法。 在更新multidex构build工具之前,有些库可能无法使用,以允许您指定必须包含在主dex文件中的类。 2)当仅为Android API Level 21(Android L)及更高版本构build时,Gradle Build Plugin中会有不同的行为。 它说速度要快得多,因为它“将应用程序的每个模块(包括依赖项)构build为单独的dex文件,这通常被称为预分离。 Android中模块的定义是什么? 这是在这里提到的Java库,Android库和Android应用程序模块: http : //developer.android.com/sdk/installing/studio-build.html#projectModules ? 远程或本地二进制相依性(如:Jars)作为单独的模块计算,因此得到放入一个不同的dex文件或他们被包含在模块取决于他们?

Android多个dex文件定义Lcom / google / android / gms / common / api / zza

构build项目并将应用程序部署到API级别为22或25的模拟器可以,但是当我尝试构buildAPK或将应用程序部署到API级别为16的我的实际设备时,出现以下错误: Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/common/api/zza; 我的项目build.gradle文件: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 我的应用程序build.gradle文件: apply plugin: 'com.android.application' apply plugin: […]