gpt4 book ai didi

android - 测试时的 64k 限制 - Android

转载 作者:行者123 更新时间:2023-12-03 05:11:49 32 4
gpt4 key购买 nike

我正在尝试在我的 android 应用程序中的特定模块上运行一些测试,但由于某种原因,我不断收到这些构建错误消息:

Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Error:Execution failed for task ':javadgd:transformClassesWithDexForDebugAndroidTest'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {--dex --num-threads=4 --output C:\Projects\DGDEditor\javadgd\build\intermediates\transforms\dex\androidTest\debug\folders\1000\1f\main C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_03333ab422775c158385448eafde7255a8524b93.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\javax.inject-1_721956a06ac86a777d8de583b4c13faebe0d5c5c.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_94d5d0d0b278f09742c1e1dd1e53e80c88aeaba2.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_2fd8a6413454d324a2bc2c41cedf751944c4a85a.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\jsr305-2.0.1_d0dc22afb31a509a829f5e56cd36e012ebe188e5.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_feb1c246f0d10c407b60ae0ecd1d6ea8d8beca61.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\debug_f41558349a77243324d91f8782be0d487cd7d6ed.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\pkix-1.51.0.0_b76041394e3ad7737254c45a49f806aadb0e59da.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\hamcrest-core-1.3_92e7cef8754982c623a8492d3b3952651a36c08f.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\parceler-1.1.8_c0288db4cd1aae135e8b25494edc84eb400f3614.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_6375c37ed5b22eb7cf9cd3a95bff1c6408d121ab.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_bfa059c3d3a726ece320b7ef44fc899d58e51e52.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_c7168d8cf335e64692d4939d085bc7489d9e37ee.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_f1704eb11b8725da59212cbcea409be026a3ffcd.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_67453a78ef3c9cab581c393c472c3c3d612dcc16.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\javax.annotation-api-1.2_99de26727b595d3c7e23682b1e351f77584621a6.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_19aa33b9e42e4289994b07b2a0039e60888115cc.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_b8055fc216a8eb86450b50466066c1960737277b.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\parceler-api-1.1.8_63d56b028e1b1695ca7293e1f2a92c9d9a0991f3.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\junit-4.12_70f50e338c3877b7b2e790ad100069bbc42c9c8f.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_76cd03c23e8d9d3dc8f3c881ebccac6befa92db3.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_f4edc33f0197e9449d5db5d862506bf37fe1c439.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_25f2307ba0685e5e9569cd17ea92c99bb4649923.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\hamcrest-library-1.3_cc5997a988d1cb5dc61f56c2702d0209d499e271.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\prov-1.51.0.0_3793358556a1c80f36dba381de93ced0fc398087.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_c06d6884053b63859253ba8751a5baef40098a74.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\support-annotations-25.1.0_8b16b00a90b3b73a336a7720f92a8e291227f223.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\core-1.51.0.0_f14b10294d4c741e145544e7806a68f73f58fe16.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\hamcrest-integration-1.3_77e530f0dc04d8547a01b2579bac749e0613dfdd.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\classes_4dc0d5d6487e5aaa62d200676a7d8d359cfdc7f6.jar C:\Projects\DGDEditor\javadgd\build\intermediates\pre-dexed\androidTest\debug\javawriter-2.1.1_cf45787cd93f38660e910b988d882dd18609ad89.jar}

我读到了 android 中的 64k 限制,但我认为这对我来说没有意义。我的应用程序中没有 64k 方法引用,也没有依赖于具有 64k 方法引用的库(我认为)。

这是我的模块级 build.gradle:
    apply plugin: 'com.android.library'

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.tom_roush:pdfbox-android:1.8.9.1'
compile 'org.parceler:parceler:1.1.8'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:2.8.9'
}

项目级 build.gradle 文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {

repositories {
maven { url "http://dl.bintray.com/shivasurya/materialsteppers" }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url "https://jitpack.io" }
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

我正在尝试在 androidTest 中运行仪器测试目录,由于需要 Context的目标应用程序。

有人知道为什么我会收到此错误吗?

最佳答案

是因为runt测试需要用到其他依赖,比如JUnit , Mockito等。这些仅在您运行测试时使用,并且方法计数与您的项目方法计数一起添加。

在你的毕业典礼上添加这个

default config {
....
multiDexEnabled true
}

如果 minSdkVersion < 20 你需要支持
dependencies {
....
compile 'com.android.support:multidex:1.0.1'
}

创建应用程序类
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
....
}
}

在您的 list 中,您需要声明它
<application
android:name=".MyApplication" >
...
</application>

关于android - 测试时的 64k 限制 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485277/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com