Java com.android.build.transform.api.TransformException
我正在尝试集成Google登录,在我的应用程序中,我添加了以下库:Java com.android.build.transform.api.TransformException,java,android,gradle,google-play-services,google-signin,Java,Android,Gradle,Google Play Services,Google Signin,我正在尝试集成Google登录,在我的应用程序中,我添加了以下库: compile 'com.google.android.gms:play-services-identity:8.1.0' compile 'com.google.android.gms:play-services-plus:8.1.0' 还将此添加到项目构建渐变中: classpath 'com.google.gms:google-services:1.4.0-beta3' apply plugin: 'com.googl
compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
还将此添加到项目构建渐变中:
classpath 'com.google.gms:google-services:1.4.0-beta3'
apply plugin: 'com.google.gms.google-services'
还向应用程序构建渐变添加插件:
classpath 'com.google.gms:google-services:1.4.0-beta3'
apply plugin: 'com.google.gms.google-services'
然后添加所需的权限
但当我尝试运行我的应用程序时,收到以下错误:
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2
尝试将
multiDexEnabled true
添加到你的应用程序build.gradle文件中
defaultConfig {
multiDexEnabled true
}
编辑:
先试试史蒂夫的。如果频繁发生或第一步没有帮助,启用多索引可能会有所帮助。对于那些喜欢深入挖掘的人,这里有两个类似的问题(有更多答案):
我只需要清理我的项目,然后它就成功地构建了。另一件需要注意的事情是,您不使用
compile 'com.google.android.gms:play-services:8.3.0'
这将导入所有播放服务,只需一个helloworld就可以超过单个dexapk的65535方法限制
始终仅指定所需的服务,例如:
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-plus:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
如果您使用的是最新的gradle版本ie
classpath'com.android.tools.build:gradle:1.5.0'和classpath'com.google.gms:google services:1.4.0-beta3'
,那么请尝试从SDK管理器更新最新的支持响应并重建整个项目。我在android Studio 1.5.1和gradle 1.5.0中也遇到了类似的问题。
我只需要从依赖项中删除不需要的库,这些依赖项可能会自动添加到我的应用程序的build.gradle文件中。
一个是:编译'com.google.android.gms:play services:8.4.0'。
因此,为了获得最佳实践,请尝试只包含特定的播放服务库,如“仅包含广告”
dependencies {
compile 'com.google.android.gms:play-services-ads:8.4.0'
}
虽然
defaultConfig {
multiDexEnabled true
}
这也将解决这个问题,但在gradle控制台中提供了大量注释,使得在构建过程中发现其他真正的问题变得很混乱,我使用AS 1.5.1时遇到了相同的问题。但是仅仅清理项目是不行的,所以我尝试了一些东西
- 清洁工程
- 重新启动为
- 同步项目
这对我很有用,所以我希望这能有所帮助。当我在项目中添加一些新方法时,这个错误开始出现。我知道我还远远没有达到65k方法的极限,如果我能帮助的话,我不想为我的项目启用multiDex支持 我通过增加
:app:transformClassesForDexForDebug
任务的可用内存来解决这个问题。为此,我在gradle.build
中指定了javaMaxHeapSize
gradle.build
android {
...
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
}
我尝试了这一点,但在解决此问题的其他常见解决方案方面没有成功:
- 运行项目
clean
- 从我的项目中手动删除
和/app/build
目录/build
- 使Gradle缓存无效并重新启动Android Studio
注意:增加DEX任务的可用内存可能会导致内存较低的系统出现性能问题 您可以查看 Manifest.xml
<?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>
...
当我通过git回滚到旧版本时,我遇到了同样的问题,该版本以前有一个第三方api的.jar库,出于某种原因,原来相同sdk的两个jar,只是不同的版本在/libs文件夹中 如果需要为cordova插件添加此参考,请在plugin.xml文件中添加下一行
<framework src="com.android.support:support-v4:+" />
如果不同的依赖项具有相同的jar,也会导致此生成错误 例如:
compile('com.a.b:library1');
compile('com.c.d:library2');
如果“library1”和“library2”有一个名为
xxx.jar的jar,这将导致这样一个错误。这发生在我身上是因为Eclipse内存泄漏。我不得不重新启动电脑。我在gradle中更改了几个PNG和版本号,现在我得到了这个。再多的清洁和重启都没有帮助。禁用即时跑步为我修复了它。YMMV在我的案例中将BuildTools版本从“24”更改为“23.0.2”,解决了这个问题。我有相同的选择,一旦我关闭Instant run,它在我的API16设备上运行良好,但在API24设备上,它在Instant run上运行良好
希望这能帮助有同样问题的人首先删除中间文件
您的应用程序文件夹\APP\build\mediates
或
清理项目,然后重建
然后再加上
multiDexEnabled true
i、 e
这对我来说很有用只需进入构建-编辑构建类型-属性选项卡-构建类型版本并将其降级到23.0.1版即可。单击“确定”。
这适用于android studio 1.5。
这对我很管用。写的答案在gradleput中
默认配置{
多索引启用真
}
然后清单中的应用程序名称
android:name=“android.support.multidex.MultiDexApplication”
希望这个答案对某些人来说是非常有用的在我的例子中,出现了异常,因为所有的google play服务扩展都不具有如下相同的版本
compile 'com.google.android.gms:play-services-plus:9.8.0'
compile 'com.google.android.gms:play-services-appinvite:9.8.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
当我把这个改成
compile 'com.google.android.gms:play-services-plus:9.8.0'
compile 'com.google.android.gms:play-services-appinvite:9.8.0'
compile 'com.google.android.gms:play-services-analytics:9.8.0'
我用下一句话解决了这个问题:
我配置了
在build.gradle中,您需要添加下一个
android {
...
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
...
}
dexOptions {
incremental true
maxProcessCount 4 // this is the default value
javaMaxHeapSize "2g"
}
...
}
dependencies {
...
compile 'com.android.support:multidex:1.0.1'
...
}
在local.properties中添加下一个
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
之后,您还需要将多索引添加到应用程序类中
public class MyApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
//mas codigo
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
不要忘记将行代码添加到Manifest.xml中
<application
...
android:name=".MyApplication"
...
/>
仅此而已,这足以解决该缺陷:
任务“:app:transformClassesWithDexForDebug”的执行失败。
使用javaMaxHeapSize“2g”和local.properties org.gradle.jvmargs=-Xmx2048m很好地检查build.gradle。这段代码解决了这个问题
defaultConfig {
multiDexEnabled true
}
最简单的方法
dexOptions {
javaMaxHeapSize "4g"
}
defaultConfig {
multiDexEnabled true
}
org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
compile 'com.android.support:multidex:1.0.1'
android {
//...
buildToolsVersion '26.0.2' // change from '23.0.2'
//...
}