unity使用gradle方式打包遇到的坑(3)

使用带java8支持的gradle打包可能会遇到这样的问题:

CommandInvokationFailure: Gradle build failed. 
D:\jdk\jdk1.8.0_191\bin\java.exe -classpath "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'gradleOut'.
> Jack is required to support java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED in 6s
]
stdout[
Parallel execution with configuration on demand is an incubating feature.
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to D:\Android_SDK\android-sdk\ndk-bundle.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to D:\Android_SDK\android-sdk\ndk-bundle.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

The setTestClassesDir(File) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the setTestClassesDirs(FileCollection) method instead.
The getTestClassesDir() method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the getTestClassesDirs() method instead.
The ConfigurableReport.setDestination(Object) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the method ConfigurableReport.setDestination(File) instead.
]
exit code: 1
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.HostView:OnGUI()
 

解决方案:

在模板文件的如下位置添加:

android {
    compileSdkVersion **APIVERSION**
    // buildToolsVersion '**BUILDTOOLS**'
    buildToolsVersion "26.0.2"

    compileOptions {                                                            //java8的支持
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8            
    }

    defaultConfig {
        jackOptions {                  //添加的代码
             enabled true
        }

该情况通常在较低版本的unity上出现,如果使用最新版本的untiy其gradle可能不会报错

其次,某些使用较低版本的unity(如5.5)打带有google的包可能会出现依赖函数google()不存在的情况,其可以通过使用稍高版本的unity中的gradle替换(主要是lib文件和几个模板文件)

最后注意dependencies属性中在不同版本的gradle中函数的名字问题,较高版本可以参考最新AS中的写法,较低版本尝试使用compile来代替

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Unity使用 Gradle 来编译 il2cpp,需要进行以下步骤: 1. 打开 Unity,选择 File -> Build Settings,在弹出的窗口中选择 Android 平台。 2. 在右侧的面板中,选择 Player Settings,进入 Android Player Settings 界面。 3. 在 Android Player Settings 界面中,找到 Publishing Settings,勾选 Custom Main Gradle Template。 4. 点击 Edit Main Gradle Template 按钮,打开 Gradle 模板文件。 5. 在模板文件中,找到 buildTypes 部分,添加以下代码: ``` release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ndk { abiFilters "armeabi-v7a", "arm64-v8a" } externalNativeBuild { ndkBuild { path "src/main/cpp/Android.mk" } } } ``` 说明: - `minifyEnabled` 表示是否启用代码混淆,默认为 false。 - `proguardFiles` 表示混淆规则文件,默认为 Android SDK 中的 proguard-android.txt 文件。 - `ndk` 表示指定编译的 ABI 类型,这里指定了 armeabi-v7a 和 arm64-v8a 两种类型。 - `externalNativeBuild` 表示使用外部编译工具进行编译。 - `ndkBuild` 表示使用 ndk-build 工具进行编译。 - `path` 表示 ndk-build 工具的编译脚本文件路径。 6. 保存模板文件,返回 Android Player Settings 界面。 7. 在 Android Player Settings 界面中,找到 Publishing Settings,勾选 Custom Gradle Properties。 8. 在 Custom Gradle Properties 中添加以下代码: ``` android.useAndroidX=true android.enableJetifier=true ``` 说明: - `android.useAndroidX` 表示是否使用 AndroidX 库,默认为 true。 - `android.enableJetifier` 表示是否启用 Jetifier 工具,将旧版的 Support 库转换为 AndroidX 库,默认为 true。 9. 点击 Build 按钮,进行 il2cpp 编译。编译完成后,会生成生成 APK 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值