Unity il2cpp.exe did not run properly!

文章讲述了在Unity使用IL2CPP进行Android应用打包时遇到的编译错误,特别提到`HelloWeb`方法的引用缺失。作者发现这是由于没有正确处理跨平台的JS通信导致的,通过将相关方法放入平台判断解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先复制下打包时的详细的报错信息

Exception: E:\UnityInstall\2019.4.40f1c1\Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe did not run properly!

Failed running "E:\UnityInstall\2019.4.40f1c1\Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe" --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="Android" --architecture="ARM64" --configuration="Release" --outputpath="F:\WorkSpace\XFDW\Temp\StagingArea\assets\bin\Data\Native\arm64-v8a\libil2cpp.so" --cachedirectory="F:\WorkSpace\XFDW\Assets\..\Library\il2cpp_android_arm64-v8a/il2cpp_cache" --additional-include-directories="E:/UnityInstall/2019.4.40f1c1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\bdwgc/include" --additional-include-directories="E:/UnityInstall/2019.4.40f1c1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\libil2cpp/include" --tool-chain-path="E:/UnityInstall/2019.4.40f1c1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK" --profiler-report --map-file-parser=E:/UnityInstall/2019.4.40f1c1/Editor/Data/Tools/MapFileParser/MapFileParser.exe --directory=F:/WorkSpace/XFDW/Temp/StagingArea/assets/bin/Data/Managed --generatedcppdir=F:/WorkSpace/XFDW/Temp/StagingArea/Il2Cpp/il2cppOutput  

stdout:
Building libil2cpp.so with AndroidToolChain
    Output directory: F:\WorkSpace\XFDW\Temp\StagingArea\assets\bin\Data\Native\arm64-v8a
    Cache directory: F:\WorkSpace\XFDW\Library\il2cpp_android_arm64-v8a\il2cpp_cache
ObjectFiles: 242 of which compiled: 0
Total compilation time: 87 milliseconds.
il2cpp.exe didn't catch exception: Unity.IL2CPP.Building.BuilderFailedException: E:\UnityInstall\2019.4.40f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++ @"C:\Users\Administrator\AppData\Local\Temp\tmp7FB2.tmp" -o "F:\WorkSpace\XFDW\Library\il2cpp_android_arm64-v8a\il2cpp_cache\linkresult_1C87142100D40B026D8902A5BA069857\libil2cpp.so" -shared -Wl,-soname,libil2cpp.so -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id -stdlib=libc++ -static-libstdc++ -target aarch64-linux-android21 -Wl,--wrap,sigaction -llog -rdynamic -fuse-ld=bfd.exe

F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/F11B10AE2BABBBB5077CA8652805A639.o: In function `ReturnHome_HelloWeb_m777EECCBD6335B1D36242600AB1272EAF8DC337C':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp3.cpp:37779: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/8BAF62A7FEEC4FA6AAE0B52520A75B85.o: In function `HomeControl_HelloWeb_mE5D88F0739AE96C06829BDB6475E5669CA1695F4':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp1.cpp:28376: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `UnityCallWeb_HelloWeb_m32210A228793BEB76EB48B69F3B63E292721D5B7':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:19704: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `UnityCallWeb_Start_mD59062FA4947893834C85A1058A4A3956833E4C3':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:19704: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_SayHello_m605ECAA8462FBA3BE71B8F5EE816629BA38E4AAA':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21360: undefined reference to `SayHello'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_ReportReady_m0DC8233EAB69A0AC2487D4CB5023E1742202F872':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21370: undefined reference to `ReportReady'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_Start_mC3E9A338C7C86A2D2158B43B9D333B29C61C201C':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21370: undefined reference to `ReportReady'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_SayHello_m605ECAA8462FBA3BE71B8F5EE816629BA38E4AAA':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21360: undefined reference to `SayHello'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)


   �� Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet`1 objectFiles, CppToolChainContext toolChainContext)
   �� Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   �� il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   �� il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   �� il2cpp.Program.Main(String[] args)
stderr:

δ��������쳣:  Unity.IL2CPP.Building.BuilderFailedException: E:\UnityInstall\2019.4.40f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++ @"C:\Users\Administrator\AppData\Local\Temp\tmp7FB2.tmp" -o "F:\WorkSpace\XFDW\Library\il2cpp_android_arm64-v8a\il2cpp_cache\linkresult_1C87142100D40B026D8902A5BA069857\libil2cpp.so" -shared -Wl,-soname,libil2cpp.so -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id -stdlib=libc++ -static-libstdc++ -target aarch64-linux-android21 -Wl,--wrap,sigaction -llog -rdynamic -fuse-ld=bfd.exe

F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/F11B10AE2BABBBB5077CA8652805A639.o: In function `ReturnHome_HelloWeb_m777EECCBD6335B1D36242600AB1272EAF8DC337C':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp3.cpp:37779: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/8BAF62A7FEEC4FA6AAE0B52520A75B85.o: In function `HomeControl_HelloWeb_mE5D88F0739AE96C06829BDB6475E5669CA1695F4':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp1.cpp:28376: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `UnityCallWeb_HelloWeb_m32210A228793BEB76EB48B69F3B63E292721D5B7':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:19704: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `UnityCallWeb_Start_mD59062FA4947893834C85A1058A4A3956833E4C3':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:19704: undefined reference to `HelloWeb'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_SayHello_m605ECAA8462FBA3BE71B8F5EE816629BA38E4AAA':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21360: undefined reference to `SayHello'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_ReportReady_m0DC8233EAB69A0AC2487D4CB5023E1742202F872':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21370: undefined reference to `ReportReady'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_Start_mC3E9A338C7C86A2D2158B43B9D333B29C61C201C':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21370: undefined reference to `ReportReady'
F:/WorkSpace/XFDW/Library/il2cpp_android_arm64-v8a/il2cpp_cache/CC424CC5A8C0D21EBABDB41DC3D801E3.o: In function `WebglOpenUrlTest_SayHello_m605ECAA8462FBA3BE71B8F5EE816629BA38E4AAA':
F:\WorkSpace\XFDW\Temp\StagingArea\Il2Cpp\il2cppOutput/Assembly-CSharp4.cpp:21360: undefined reference to `SayHello'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)


   �� Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet`1 objectFiles, CppToolChainContext toolChainContext)
   �� Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   �� il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   �� il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   �� il2cpp.Program.Main(String[] args)

UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1[T] setupStartInfo) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1[T] arguments, System.Action`1[T] setupStartInfo, System.String workingDirectory) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data, System.String outputDirectory, System.String workingDirectory, System.Boolean platformSupportsManagedDebugging) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditorInternal.IL2CPPBuilder.Run () (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action`1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <522ce3e5b23c4a79a9d6d60ae8534e49>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <522ce3e5b23c4a79a9d6d60ae8534e49>:0)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (UnityEditor.BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <522ce3e5b23c4a79a9d6d60ae8534e49>:0)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <522ce3e5b23c4a79a9d6d60ae8534e49>:0)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <1c3f2414c4a84f3b8595a170f3d15b04>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
 

 il2cpp.exe did not run properly报错的原因有很多,笔者先详细介绍下自己这边出现的原因:

这个工程是分为安卓端和WEB端,WEB端:客户要求打开其他的网页时,关闭当前网页,所以笔者使用Unity与JS的通信的方式去关闭当前网页。

因为需要适配安卓的64位机型,所以选择了使用IL2CPP。

详细设置如下图

 结果打包安卓时就报Exception: E:\UnityInstall\2019.4.40f1c1\Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe did not run properly!

在网上找了好多博主的博客,按照教程走之后还是无法打包。

无意中翻到这篇问答:Unit2017.4.34f1使用IL2CPP构建APK-腾讯云开发者社区-腾讯云

 

这个不就是和JS通信使用的东西。之后详细查看报错信息 ,

再对比与JS通信时使用的方法名,找到了出问题的地方

 将与JS通信的方法放入Unity的平台判断中后,即可正常打包。下面是笔者将HomeControl中的HelloWeb方法放入的图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值