目前正在开发我的android应用程序。在我的项目中包括play服务和firebase库之后,我遇到了这个错误,无法运行我的代码
: app: prePackageMarkerForDebug: app: transformClassesAuthDexForDebug要在进程中运行dex,Gradle守护程序需要更大的堆。它目前大约有910 MB。为了更快的构建,将Gradle守护程序的最大堆大小增加到超过2048 MB。要执行此设置org.gradle.jvmargs=-Xmx2048M在项目中gradle.properties.有关详细信息,请参阅https://docs.gradle.org/current/userguide/build_environment.html错误:. dex文件中方法引用的数量不能超过64K。了解如何在https://developer.android.com/tools/building/multidex.html解决此问题:app: transformClassesAuthDexForDebug FAILED错误:任务执行失败':app: transformClassesSusDexForDebug'。com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process'命令'/Library/Java /JavaVirtualMachines/jdk1.8."以非零退出值结束2
这是我的身材。gradle文件在这里:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "xyz.in.network"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
multiDexEnabled true
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile project(':libs:ViewPagerIndicator')
compile 'com.google.android.gms:play-services:9.0.0'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.google.android.gms:play-services-maps:9.0.0'
compile 'com.google.android.gms:play-services-location:9.0.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.getbase:floatingactionbutton:1.10.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.volley:volley:1.0.0'
compile 'com.google.firebase:firebase-messaging:9.0.0'
compile 'com.android.support:multidex:1.0.1'
}
apply plugin: 'com.google.gms.google-services'
我的文件在这里
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name="android.support.multidex.MultiDexApplication"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Util.DisconnectedNetwork"
android:screenOrientation="portrait"
android:theme="@style/Theme.Transparent"></activity>
<service android:name=".FCM.FirebaseMessagingHandler">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".FCM.FirebaseRegistrationTokenHandler">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
将堆大小增加到2048M后。Gradle给出这个错误
错误:任务执行失败:应用程序:transformClassesWithDexForDebug。com.android.build.api.transform。TransformException:com.android.ide.common.process。ProcessException:java.util.concurrent。ExecutionException:com.android.dex。DexIndexOverflowException:方法ID不在[0,0xffff]:65536中
我遵循了android开发者网站上给出的所有说明,但仍然遇到了这个问题。如何解决这个问题?
您已经为释放风味启用了 mutlidex,您也应该有此行用于调试风味
debug {
multiDexEnabled true
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
multiDexEnabled true
}
我的应用程序遇到了类似的错误,因此我在Android Studio中安装了一个名为“方法计数”的插件(http://www.methodscount.com/). 它显示了每个依赖项使用的方法引用的数量,并显示了编译路径
compile 'com.google.android.gms:play-services:9.0.1'
有超过69k的引用
我将其更改为显示您的依赖项之一:
compile 'com.google.android.gms:play-services:9.0.0'
它显示了69,520个方法引用作为此编译路径的依赖项。
很可能您没有使用编译路径的范围,并且可能能够指定更集中的路径,以消除大量使用的方法引用,并在65k最大值下获得通过。个性化服务列表如下。
就我而言,我只能想象大约一年前当我将Firebase纳入我的应用程序时,我添加了gms服务线,但在Firebase网站上找不到相同的参考资料。
仅仅意识到你的问题上的一个评论说了类似的事情,把依赖分解成你所需要的。
您需要在android默认配置中启用multidex
,然后:
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.example.case"
minSdkVersion 16
targetSdkVersion 23
versionCode 43
versionName "4.0.13"
// Enabling multidex support.
multiDexEnabled true
}
当您在日常工作中构建应用程序时,通常使用< code>debug默认风格。因此,如果您的应用程序有超过65k的方法,您需要在所有版本上启用它。
另外,您可能希望在调试版本中使用Proguard,这样就不必在其上启用multiDex。
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
最后一部分:在清单中添加 MultiDex 应用程序(或作为您自己的应用程序的父级)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
我刚刚完成了我的android应用程序,我在android studio模拟器上运行它。它很好,一切都很好,但我有一个问题-当我想生成签名的apk时,我得到了这两个错误,不能完成apk构建过程。我尝试了很多方法来解决我得到的这两个错误,但是没有结果。 错误截图
问题内容: 我有这样的代码: 为什么我不能在第(5)行中打电话;在第(6)行中将为哪个类调用? 问题答案: 您不能这样做,因为子类的方法不在您的超类中。在这种情况下,尽管String是Object的子类,因为在java.lang.Object类中未声明length(),但无法在其实例上调用length。 但是equals()方法在字符串类中被覆盖,因此将调用Strings的equals()
问题内容: 我知道这个问题已经在这里问过几次了。但是我还没有看到任何可能的解决方案。在我将项目“以Android应用程序身份运行”之前,如果我不清理它,则会收到以下错误,并且必须重新启动Eclipse …并再次清理。 com.jstun.core …是我的src文件夹的一部分,我当然不能删除它。即使我删除该程序包,另一个程序包也会显示为错误,例如: 自更新为ADT 15以来,我已经看到此错误,我正
我错过了Java的一次讲座,主题是类、方法、构造函数等。作业是一项任务: 创建一个类Person,其对象描述人员,并且只包含两个字段:name(String)和生年(int)。在此类中,定义 > 建造师姓名和出生年份; 构造函数只取名称并将出生年份设置为默认值1990; 方法是如果此人是女性,则女性返回true(我们不太明智地假设只有女性和所有女性的名字以字母“a”结尾);否则该方法返回false
我使用这个模块上传文件到亚马逊 https://www.npmjs.com/package/streaming-s3,如果文件小于或等于 5 MB,则工作正常。 我试着上传6 MB大小的PDF文件。它显示上传成功,但当我试图通过aws打开该文件。 它显示无法加载PDF文档 当我在Aws上检查大小时,显示为5MB。 我正在使用以下代码在 AWS 上上传 这对于小于5 MB的文件工作正常。 有什么想法