Android bug with Unity as a Library - 'Failed to load IL2CPP.'

Hello,

We’re having some issues with Unity as a Library with the 2020LTS version of Unity when importing into an android application. We’ve exported the build out and added the :unity library as intended on our android build and now we keep getting the attached message when ever we attempt to launch the unity player. We’ve also tried with both the 2020.3.5f1 and 2020.3.4f1 versions with no luck.

We’ve had this same implementation working successfully with the 2019.4.19f1 build but since attempting to update to the 2020LTS build we can’t get things to run. We’re just trying to figure out what is causing the updated IL2CPP issues.

Thanks


Most likely, you didn’t set up dependencies correctly, unityLibrary\build.gradle has a task BuildIl2CppTask, apparently it’s not called.

Check launcher build.gradle from empty project, it contains lines

dependencies {
    implementation project(':unityLibrary')
    }

Does your main gradle file has this dependency set?

This is being set currently in both our launcher/build.grade as well as our build.gradle ( app )

Would it be possible to show your gradle file? if BuildIl2CppTask is really executed, it should produce libil2cpp.so in unityLibrary\src\main\jniLibs

Attached are images of our build.gradle (unityLibrary). Do you need to see our build.gradle (launcher) and build.gradle ( :app )?

7067707--839944--Screen Shot 2021-04-22 at 2.39.14 PM (2).png
7067707--839947--Screen Shot 2021-04-22 at 2.39.24 PM (2).png
7067707--839950--Screen Shot 2021-04-22 at 2.39.31 PM (2).png

Yes, because the bug is probably in your build.gradle (launcher), could you attach as file instead of screenshots?

Here is a copy of our launcher build.gradle

7067836–839959–build.gradle.txt (1.67 KB)

Hmph, it works fine for me.

  • Created an empty project with 2020.3.5f
  • Switched to il2cpp, selected armv7 & arm64
  • Export Project
  • Overwrote contents of launcher/build.gradle with gradle file you posted. Click Sync
  • Build
  • Success (unityLibrary\src\main\jniLibs\arm64-v8a\libil2cpp.so, unityLibrary\src\main\jniLibs\armeabi-v7a\libil2cpp.so were created)

As you see from screenshot, in build output, there’s a task

> Task :unityLibrary:BuildIl2CppTask

the full output is

Executing tasks: [:launcher:assembleProdDebug] in project F:\UnityProjects\TestProject\Export


> Configure project :launcher
WARNING: The option 'android.enableR8' is deprecated and should not be used anymore.
It will be removed in a future version of the Android Gradle plugin, and will no longer allow you to disable R8.

> Task :launcher:preBuild UP-TO-DATE
> Task :unityLibrary:preBuild UP-TO-DATE
> Task :unityLibrary:preDebugBuild UP-TO-DATE
> Task :unityLibrary:compileDebugAidl NO-SOURCE
> Task :unityLibrary:packageDebugRenderscript NO-SOURCE
> Task :unityLibrary:compileDebugRenderscript NO-SOURCE
> Task :launcher:extractProguardFiles
> Task :launcher:preProdDebugBuild
> Task :launcher:compileProdDebugAidl NO-SOURCE
> Task :unityLibrary:generateDebugBuildConfig
> Task :launcher:compileProdDebugRenderscript NO-SOURCE
> Task :unityLibrary:generateDebugResValues
> Task :unityLibrary:generateDebugResources
> Task :launcher:generateProdDebugBuildConfig
> Task :launcher:mainApkListPersistenceProdDebug
> Task :launcher:generateProdDebugResValues
> Task :launcher:generateProdDebugResources
> Task :launcher:createProdDebugCompatibleScreenManifests
> Task :launcher:extractDeepLinksProdDebug
> Task :launcher:checkProdDebugDuplicateClasses
> Task :launcher:processProdDebugJavaRes NO-SOURCE
> Task :launcher:mergeProdDebugShaders
> Task :unityLibrary:packageDebugResources
> Task :launcher:compileProdDebugShaders
> Task :unityLibrary:extractDeepLinksDebug
> Task :unityLibrary:processDebugJavaRes NO-SOURCE
> Task :launcher:generateProdDebugAssets
> Task :unityLibrary:javaPreCompileDebug
> Task :launcher:mergeProdDebugJniLibFolders
> Task :unityLibrary:mergeDebugShaders
> Task :unityLibrary:compileDebugShaders
> Task :unityLibrary:generateDebugAssets
> Task :launcher:validateSigningProdDebug
> Task :launcher:mergeProdDebugResources
> Task :unityLibrary:packageDebugAssets
> Task :launcher:mergeProdDebugAssets

> Task :unityLibrary:BuildIl2CppTask
Building libil2cpp.so with AndroidToolChain
    Output directory: F:\UnityProjects\TestProject\Export\unityLibrary\src\main\jniLibs\armeabi-v7a
    Cache directory: F:\UnityProjects\TestProject\Export\unityLibrary\build\il2cpp_armeabi-v7a_Release\il2cpp_cache
ObjectFiles: 118 of which compiled: 118
    Time Compile: 12301 milliseconds Lump_libil2cpp_vm.cpp
    Time Compile: 10067 milliseconds mscorlib4.cpp
    Time Compile: 9110 milliseconds Generics.cpp
    Time Compile: 8904 milliseconds Generics1.cpp
    Time Compile: 8643 milliseconds Generics2.cpp
    Time Compile: 8256 milliseconds UnityEngine.CoreModule.cpp
    Time Compile: 8027 milliseconds mscorlib9.cpp
    Time Compile: 7868 milliseconds Lump_libil2cpp_icalls.cpp
    Time Compile: 7332 milliseconds mscorlib10.cpp
    Time Compile: 7265 milliseconds mscorlib1.cpp
Total compilation time: 27238 milliseconds.
Total link time: 1652 milliseconds.
Cleaned up 0 object files.

> Task :unityLibrary:parseDebugLocalResources
> Task :unityLibrary:processDebugManifest
> Task :unityLibrary:compileDebugLibraryResources
> Task :unityLibrary:bundleLibResDebug

> Task :unityLibrary:BuildIl2CppTask
Building libil2cpp.so with AndroidToolChain
    Output directory: F:\UnityProjects\TestProject\Export\unityLibrary\src\main\jniLibs\arm64-v8a
    Cache directory: F:\UnityProjects\TestProject\Export\unityLibrary\build\il2cpp_arm64-v8a_Release\il2cpp_cache
ObjectFiles: 118 of which compiled: 118
    Time Compile: 11953 milliseconds Lump_libil2cpp_vm.cpp
    Time Compile: 8892 milliseconds mscorlib4.cpp
    Time Compile: 8520 milliseconds Generics.cpp
    Time Compile: 8357 milliseconds Generics1.cpp
    Time Compile: 8131 milliseconds Generics2.cpp
    Time Compile: 8044 milliseconds UnityEngine.CoreModule.cpp
    Time Compile: 7713 milliseconds Lump_libil2cpp_icalls.cpp
    Time Compile: 7580 milliseconds mscorlib9.cpp
    Time Compile: 7095 milliseconds mscorlib10.cpp
    Time Compile: 6823 milliseconds mscorlib1.cpp
Total compilation time: 26261 milliseconds.
Total link time: 2553 milliseconds.
Cleaned up 0 object files.

> Task :unityLibrary:mergeDebugJniLibFolders
> Task :launcher:processProdDebugManifest
> Task :launcher:mergeProdDebugJavaResource
> Task :unityLibrary:mergeDebugNativeLibs
> Task :unityLibrary:stripDebugDebugSymbols
> Task :unityLibrary:copyDebugJniLibsProjectOnly
> Task :unityLibrary:generateDebugRFile
> Task :launcher:processProdDebugResources
> Task :launcher:mergeProdDebugNativeLibs
> Task :launcher:stripProdDebugDebugSymbols

> Task :unityLibrary:compileDebugJavaWithJavac
Note: F:\UnityProjects\TestProject\Export\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :unityLibrary:mergeDebugGeneratedProguardFiles
> Task :unityLibrary:exportDebugConsumerProguardFiles
> Task :unityLibrary:bundleLibRuntimeDebug
> Task :unityLibrary:bundleLibCompileDebug
> Task :launcher:javaPreCompileProdDebug
> Task :launcher:compileProdDebugJavaWithJavac
> Task :launcher:compileProdDebugSources
> Task :launcher:mergeProdDebugGeneratedProguardFiles

> Task :launcher:minifyProdDebugWithProguard
ProGuard, version 6.0.3
Reading input...
Reading program jar [F:\UnityProjects\TestProject\Export\unityLibrary\libs\unity-classes.jar] (filtered)
Reading program jar [F:\UnityProjects\TestProject\Export\unityLibrary\build\intermediates\runtime_library_classes\debug\classes.jar] (filtered)
Reading program jar [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\prodDebug\R.jar] (filtered)
Reading program directory [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\javac\prodDebug\classes] (filtered)
Reading program jar [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\merged_java_res\prodDebug\out.jar] (filtered)
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\android.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\29.0.2\core-lambda-stubs.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\optional\org.apache.http.legacy.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\optional\android.car.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\optional\android.test.mock.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\optional\android.test.base.jar]
Reading library jar [C:\MyUnityInstalls\2020.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms\android-29\optional\android.test.runner.jar]
Initializing...
Note: you're ignoring all warnings!
Ignoring unused library classes...
  Original number of library classes: 5033
  Final number of library classes:    646
Printing kept classes, fields, and methods...
Inlining subroutines...
Shrinking...
Printing usage to [F:\UnityProjects\TestProject\Export\launcher\build\outputs\mapping\prodDebug\usage.txt]...
Removing unused program classes and class elements...
  Original number of program classes: 108
  Final number of program classes:    102
Obfuscating...
Printing mapping to [F:\UnityProjects\TestProject\Export\launcher\build\outputs\mapping\prodDebug\mapping.txt]...
Preverifying...
Writing output...
Preparing output jar [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\shrunk_jar\prodDebug\minified.jar]
  Copying resources from program jar [F:\UnityProjects\TestProject\Export\unityLibrary\libs\unity-classes.jar] (filtered)
  Copying resources from program jar [F:\UnityProjects\TestProject\Export\unityLibrary\build\intermediates\runtime_library_classes\debug\classes.jar] (filtered)
  Copying resources from program jar [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\prodDebug\R.jar] (filtered)
  Copying resources from program directory [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\javac\prodDebug\classes] (filtered)
  Copying resources from program jar [F:\UnityProjects\TestProject\Export\launcher\build\intermediates\merged_java_res\prodDebug\out.jar] (filtered)

> Task :launcher:dexBuilderProdDebug
> Task :launcher:mergeDexProdDebug
> Task :launcher:packageProdDebug
> Task :launcher:assembleProdDebug

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 4s
48 actionable tasks: 48 executed
  • Can you do the same as me, and check if empty project with your overridden launcher build.gradle works?
  • Can you copy paste your build output? (The one which doesn’t work)
  • Alternatively try attaching unityLibrary build.gradle and root build.gradle