我试图创建一个依赖于来自java库模块的java代码的android应用程序,但每当我尝试使用该java库中的任何对象时,我总是得到以下内容
任务执行失败':app:transformClassesWithDexForDebug'。
com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process' command' C:\ Program Files \ Java \ jdk1.8.0_121 \ bin \ java.exe''完成非零退出值1
我已经查看了以下Execution failed for task ':app:transformClassesWithDexForDebug' while implementing Google sign in for Android并且我已经尝试过几乎所有的建议,但它仍然无法构建。我的java库确实使用了android使用的json库,我得到了一些关于它的警告,但它说它只会被忽略
这是我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "pwils33.familymap"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries false
incremental true
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile project(':shared')
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:support-v4:25.3.0'
compile 'com.android.support:multidex:1.0.1'
}
我将该模块用于我已经构建的另一个Java应用程序,因此我无法将其转换为android库。任何帮助将不胜感激
编辑我已尝试将我的应用程序设为多dex应用程序,但也无法正常工作,此处是我的应用程序清单
<?xml version="1.0" encoding="utf-8"?>
<manifest package="pwils33.familymap"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name="android.support.multidex.MultiDexApplication">
<activity android:name=".activities.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:0)
尝试以下代码来解决您的问题:
parseProfileResponse
答案 1 :(得分:0)
在您应用的模块multidex
文件中加入build.gradle
库:
compile 'com.android.support:multidex:1.0.1'
然后通过添加:
在defaultConfig
部分启用多索引
multiDexEnabled true
如果您没有覆盖Application
,请修改清单<Application>
代码,然后添加:
<application
android:name="android.support.multidex.MultiDexApplication">
如果您覆盖Application
类,请从MultiDexApplication
类(来自上述multidex
库扩展它:
public class AndroidApplication extends MultiDexApplication { ... }
如果你覆盖Application
类并且它实际上扩展了其他类(例如因为使用经常需要从它的类扩展的ORM库),请通过从{{1}调用来安装multidex }:
attachBaseContext
Google's documentation中提供了更多详细信息。
答案 2 :(得分:0)
我终于明白了。事实证明,多索引库不支持1.8,因为我的计算机上有java 8,当它从我的java模块中找到编译后的代码时,它就破坏了它。我将以下几行添加到我的build.gradle到我的java模块,最后让它工作
sourceCompatibility = 1.7
targetCompatibility = 1.7
dependencies {
...
}