我的英语不好:),抱歉。
我使用工作室来构建Android Contacts apk,包括Contacts,ContactsCommon(lib)和PhoneCommon()。
现在,当我运行app时,本地路径不存在。
Android SDK工具24.0.2(最新版)
的build.gradle(项目)
classpath' com.android.tools.build:gradle:1.0.0'
gradle-wrapper.properties
distributionUrl = HTTPS://services.gradle.org/distributions/gradle-2.2.1-all.zip
我尝试遵循方法:
https://stackoverflow.com/q/27436269/4397112
https://stackoverflow.com/a/21842216/4397112
https://stackoverflow.com/a/19667599/4397112
等。
在我项目的根目录中,运行:
gradlew clean packageDebug
出了什么问题:任务执行失败':app:preDexDebug'。
com.android.ide.common.internal.LoggedErrorException:无法运行命令: D:\ Development \ Android \ Sdk \ build-tools \ 21.1.2 \ dx.bat -JXmx4g --dex --output D:\ AndroidStudioProjects \ Contacts \ app \ build \ intermediates \ pre-dexed \ debug \ classes-jarjar_framework -5c27d5f8ec6e579f128703ae9232253b06c7d5 2e.jar d:\ AndroidStudioProjects \联系人\应用\构建\中间体\分解-AAR \联系人\ ContactsCommon \未指定\库\类 - jarjar_framework.jar 错误代码: 2输出:
trouble writing output: Too many method references: 81922; max is 65536. You may try using --multi-dex option. References by package: 27 android 147 android.accessibilityservice 577 android.accounts 33 android.alsa 682 android.animation 11 android.annotation 5500 android.app 542 android.app.admin 401 android.app.backup 140 android.app.job 53 android.app.trust 89 android.app.usage 134 android.appwidget 1750 android.bluetooth 222 android.bluetooth.le 1879 android.content 1537 android.content.pm 554 android.content.res 532 android.database 498 android.database.sqlite 117 android.ddm 168 android.drm 30 android.emoji 23 android.filterfw 817 android.filterfw.core 26 android.filterfw.format 42 android.filterfw.geometry 46 android.filterfw.io 83 android.filterpacks.base 410 android.filterpacks.imageproc 6 android.filterpacks.numeric 17 android.filterpacks.performance 18 android.filterpacks.text 29 android.filterpacks.ui 18 android.filterpacks.videoproc 21 android.filterpacks.videosink 86 android.filterpacks.videosrc 223 android.gesture 1458 android.graphics 1337 android.graphics.drawable 40 android.graphics.drawable.shapes 87 android.graphics.pdf 532 android.hardware 283 android.hardware.camera2 19 android.hardware.camera2.dispatch 339 android.hardware.camera2.impl 462 android.hardware.camera2.legacy 25 android.hardware.camera2.marshal 213 android.hardware.camera2.marshal.impl 137 android.hardware.camera2.params 153 android.hardware.camera2.utils 247 android.hardware.display 431 android.hardware.hdmi 167 android.hardware.input 388 android.hardware.location 174 android.hardware.soundtrigger 231 android.hardware.usb 442 android.inputmethodservice 1053 android.location 3957 android.media 293 android.media.audiofx 44 android.media.audiopolicy 82 android.media.browse 48 android.media.effect 39 android.media.effect.effects 141 android.media.projection 645 android.media.session 964 android.media.tv 144 android.mtp 2232 android.net 102 android.net.dhcp 408 android.net.http 106 android.net.nsd 819 android.net.wifi 250 android.net.wifi.p2p 96 android.net.wifi.p2p.nsd 1 android.net.wimax 455 android.nfc 73 android.nfc.cardemulation 175 android.nfc.tech 1728 android.opengl 2778 android.os 266 android.os.storage 874 android.preference 655 android.print 6 android.print.pdf 169 android.printservice 631 android.provider 1854 android.renderscript 35 android.sax 272 android.security 160 android.service.dreams 76 android.service.fingerprint 85 android.service.media 275 android.service.notification 39 android.service.persistentdata 3 android.service.restrictions 30 android.service.textservice 70 android.service.trust 199 android.service.voice 137 android.service.wallpaper 149 android.speech 133 android.speech.srec 579 android.speech.tts 32 android.system 1010 android.telecom 958 android.telephony 48 android.telephony.cdma 14 android.telephony.gsm 52 android.test 812 android.text 116 android.text.format 374 android.text.method 375 android.text.style 49 android.text.util 556 android.transition 922 android.util 5239 android.view 591 android.view.accessibility 274 android.view.animation 473 android.view.inputmethod 139 android.view.textservice 934 android.webkit 8709 android.widget 19 com.android.i18n.phonenumbers 2 com.android.i18n.phonenumbers.geocoding 111 com.android.ims 469 com.android.ims.internal 24 com.android.internal 7 com.android.internal.annotations 1298 com.android.internal.app 98 com.android.internal.appwidget 130 com.android.internal.backup 92 com.android.internal.content 23 com.android.internal.database 8 com.android.internal.http 78 com.android.internal.http.multipart 106 com.android.internal.inputmethod 78 com.android.internal.location 12 com.android.internal.logging 51 com.android.internal.net 961 com.android.internal.os 23 com.android.internal.os.storage 156 com.android.internal.policy 27 com.android.internal.preference 184 com.android.internal.statusbar 403 com.android.internal.telecom 969 com.android.internal.telephony 94 com.android.internal.textservice 3 com.android.internal.transition 632 com.android.internal.util 499 com.android.internal.view 17 com.android.internal.view.animation 616 com.android.internal.view.menu 1723 com.android.internal.widget 232 com.android.internal.widget.multiwaveview 42 com.android.net 20 com.android.okhttp 3 com.android.org.bouncycastle.asn1.x509 2 com.android.org.bouncycastle.util.encoders 9 com.android.org.bouncycastle.util.io.pem 9 com.android.org.bouncycastle.x509 28 com.android.org.conscrypt 69 com.android.server 9 com.android.server.backup 31 com.android.server.net 13 com.google.android.collect 313 com.google.android.gles_jni 170 com.google.android.util 1 dalvik.bytecode 75 dalvik.system 7 dalvik.system.profiler 5 default 241 java.io 461 java.lang 5 java.lang.ref 39 java.lang.reflect 2 java.math 100 java.net 118 java.nio 7 java.nio.channels 15 java.nio.charset 40 java.security 16 java.security.cert 7 java.security.spec 43 java.text 437 java.util 52 java.util.concurrent 19 java.util.concurrent.atomic 21 java.util.concurrent.locks 6 java.util.jar 13 java.util.logging 16 java.util.regex 29 java.util.zip 8 javax.crypto 2 javax.crypto.spec 33 javax.microedition.khronos.egl 267 javax.microedition.khronos.opengles 1 javax.net 27 javax.net.ssl 8 junit.framework 7 libcore.icu 2 libcore.internal 18 libcore.io 5 libcore.net 2 libcore.net.event 29 libcore.util 2 org.apache.commons.codec.binary 4 org.apache.commons.logging 16 org.apache.harmony.dalvik.ddmc 2 org.apache.harmony.luni.internal.util 2 org.apache.harmony.security.asn1 6 org.apache.harmony.security.pkcs7 1 org.apache.harmony.security.x509 1 org.apache.harmony.xml 30 org.apache.http 10 org.apache.http.client 4 org.apache.http.client.methods 1 org.apache.http.client.params 1 org.apache.http.conn 4 org.apache.http.conn.scheme 1 org.apache.http.conn.ssl 10 org.apache.http.entity 3 org.apache.http.impl 3 org.apache.http.impl.client 1 org.apache.http.impl.conn.tsccm 3 org.apache.http.impl.entity 6 org.apache.http.impl.io 6 org.apache.http.io 12 org.apache.http.message 13 org.apache.http.params 9 org.apache.http.protocol 11 org.apache.http.util 3 org.ccil.cowan.tagsoup 2 org.kxml2.io 13 org.xml.sax 1 org.xml.sax.helpers 34 org.xmlpull.v1
尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。 建筑失败
总时间:1分钟34.902秒
我猜也许class-jarjar_framework.jar太大了。我正在构建android源码,我明天会找到一些jar而不是classes-jarjar_framework.jar。
有人提出一些建议,非常感谢
2014年12月28日更新
感谢@stkent,最后,我使用https://developer.android.com/tools/building/multidex.html#mdex-gradle来解决我的问题。我喜欢堆栈溢出。
当你遇到&#34时;本地路径不存在"问题,首先你应该知道问题在哪里。 所以运行
gradlew clean packageDebug
不 - 调试,减少信息
接下来,解决它
我的英语不好,再次抱歉:)
答案 0 :(得分:1)
您的应用已达到65K方法限制。有关解决方案,请参阅the official guide。复制自文档:
避免65K限制
在配置应用程序以启用65K或更多方法引用之前,您应该采取措施减少应用程序代码调用的引用总数,包括应用程序代码或包含的库定义的方法。以下策略可以帮助您避免达到dex参考限制:
- 查看应用程序的直接和传递依赖关系 - 确保您在应用程序中包含的任何大型库依赖关系的使用方式超过了添加到应用程序的代码量。一个常见的反模式是包含一个非常大的库,因为一些实用方法是有用的。减少应用程序代码依赖性通常可以帮助您避免dex参考限制。
- 使用ProGuard删除未使用的代码 - 为应用配置ProGuard设置以运行ProGuard,并确保为发布版本启用了收缩功能。启用收缩功能可确保您不会使用APK发送未使用的代码。
使用这些技术可以帮助您避免在应用中启用更多方法引用所需的构建配置更改。这些步骤还可以减小APK的大小,这对于带宽成本较高的市场尤为重要。
答案 1 :(得分:0)
我建议两种方式可以帮到你。
更改build.gradle
文件
buildTypes { 发布 { minifyEnabled false //改变这里 proguardFiles getDefaultProguardFile(' proguard-android.txt'),' proguard-rules.pro' }
转到计算机的此路径(Windows Os)并更改。
径; Controlpanel>System>Advance System Setting>Environment Variable
这将打开弹出窗口。在System Variable
上的PATH
下添加或更改,并为其值%SystemRoot%\system32
这可能会对你有所帮助