juicycleff / flutter-unity-view-widget

Embeddable unity game engine view for Flutter. Advance demo here https://github.com/juicycleff/flutter-unity-arkit-demo
BSD 3-Clause "New" or "Revised" License
2.09k stars 505 forks source link

Execution failed for task ':unityLibrary:BuildIl2CppTask'. 'eglib-config.h' file not found MacBook m1 #544

Open asikpro13 opened 2 years ago

asikpro13 commented 2 years ago

/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/build/deploy/il2cpp --compile-cpp --platform=Android --architecture=arm64 --outputpath=/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/jniLibs/arm64-v8a/libil2cpp.so --libil2cpp-static --baselib-directory=/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/jniStaticLibs/arm64-v8a --configuration=Release --dotnetprofile=unityaot-linux --enable-debugger --profiler-report --profiler-output-file=/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_conv.traceevents --print-command-line --generatedcppdir=/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/Source/il2cppOutput --cachedirectory=/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache --tool-chain-path=/Applications/Unity/Hub/Editor/2021.2.12f1/PlaybackEngines/AndroidPlayer/NDK Starting: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/build/deploy/bee_backend/mac-arm64/bee_backend --profile="/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate/backend_profiler0.traceevents" --stdin-canary --dagfile="/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate/bee.dag" --continue-on-failure FinalProgram WorkingDir: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate ExitCode: 4 Duration: 0s40ms ExitCode: 0 Duration: 0s0ms Starting: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/build/deploy/bee_backend/mac-arm64/bee_backend --profile="/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate/backend_profiler1.traceevents" --stdin-canary --dagfile="/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate/bee.dag" --continue-on-failure --dagfilejson="/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate/bee.dag.json" FinalProgram WorkingDir: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/build/il2cpp_arm64-v8a_Release/il2cpp_cache/buildstate ExitCode: 3 Duration: 10m:24s Build failed with 526 successful nodes and 73 failed ones Annotation: C_Android_arm64 87li/9953_m_vm3.lump.o Cmdline: "/Applications/Unity/Hub/Editor/2021.2.12f1/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -march=armv8-a -D__ANDROID_API__=22 -DANDROID -DHAVE_INTTYPES_H -no-canonical-prefixes -funwind-tables -fstack-protector -fdiagnostics-format=msvc -fomit-frame-pointer -std=c++11 -Wswitch -Wno-trigraphs -Wno-tautological-compare -Wno-invalid-offsetof -Wno-implicitly-unsigned-literal -Wno-integer-overflow -Wno-shift-negative-value -Wno-unknown-attributes -Wno-implicit-function-declaration -Wno-null-conversion -Wno-missing-declarations -Wno-unused-value -Wno-pragma-once-outside-header -fvisibility=hidden -fexceptions -fno-rtti -g -Os -fPIC -fno-strict-overflow -ffunction-sections -fdata-sections -fmessage-length=0 -pipe -DBASELIB_INLINE_NAMESPACE=il2cpp_baselib -DIL2CPP_MONO_DEBUGGER=1 -DRUNTIME_IL2CPP -DTARGET_ARM64 -DGC_NOT_DLL -DPLATFORM_UNITY -DUNITY_USE_PLATFORM_STUBS -DENABLE_OVERRIDABLE_ALLOCATORS -DIL2CPP_ON_MONO=1 -DDISABLE_JIT=1 -DDISABLE_REMOTING=1 -DHAVE_CONFIG_H -DMONO_DLL_EXPORT=1 -DIL2CPP_DEFAULT_DATA_DIR_PATH=Data -DNDEBUG -I"." -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/pch" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/baselib/Include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/baselib/Platforms/Android/Include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/eglib" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libmono/config" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/os/c-api" -o "87li/9953_m_vm3.lump.o" -fcolor-diagnostics -target aarch64-linux-android22 -fstrict-aliasing -fdiagnostics-format=msvc -c -x c++ "87li/xglm_vm3.lump.cpp" ExitCode: 1 Stdout: In file included from 87li/xglm_vm3.lump.cpp:12: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/vm/Thread.cpp:33: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/profiler-private.h:10: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/class-internals.h:12: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/metadata-internals.h:10: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/cil-coff.h:9: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/eglib/glib.h(23,10): fatal error: 'eglib-config.h' file not found

include

     ^~~~~~~~~~~~~~~~

1 error generated.

Error: Unity.IL2CPP.Building.BuilderFailedException: Build failed with 526 successful nodes and 73 failed ones Annotation: C_Android_arm64 87li/9953_m_vm3.lump.o Cmdline: "/Applications/Unity/Hub/Editor/2021.2.12f1/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" -march=armv8-a -D__ANDROID_API__=22 -DANDROID -DHAVE_INTTYPES_H -no-canonical-prefixes -funwind-tables -fstack-protector -fdiagnostics-format=msvc -fomit-frame-pointer -std=c++11 -Wswitch -Wno-trigraphs -Wno-tautological-compare -Wno-invalid-offsetof -Wno-implicitly-unsigned-literal -Wno-integer-overflow -Wno-shift-negative-value -Wno-unknown-attributes -Wno-implicit-function-declaration -Wno-null-conversion -Wno-missing-declarations -Wno-unused-value -Wno-pragma-once-outside-header -fvisibility=hidden -fexceptions -fno-rtti -g -Os -fPIC -fno-strict-overflow -ffunction-sections -fdata-sections -fmessage-length=0 -pipe -DBASELIB_INLINE_NAMESPACE=il2cpp_baselib -DIL2CPP_MONO_DEBUGGER=1 -DRUNTIME_IL2CPP -DTARGET_ARM64 -DGC_NOT_DLL -DPLATFORM_UNITY -DUNITY_USE_PLATFORM_STUBS -DENABLE_OVERRIDABLE_ALLOCATORS -DIL2CPP_ON_MONO=1 -DDISABLE_JIT=1 -DDISABLE_REMOTING=1 -DHAVE_CONFIG_H -DMONO_DLL_EXPORT=1 -DIL2CPP_DEFAULT_DATA_DIR_PATH=Data -DNDEBUG -I"." -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/pch" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/baselib/Include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/baselib/Platforms/Android/Include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/eglib" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libmono/config" -I"/Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/os/c-api" -o "87li/9953_m_vm3.lump.o" -fcolor-diagnostics -target aarch64-linux-android22 -fstrict-aliasing -fdiagnostics-format=msvc -c -x c++ "87li/xglm_vm3.lump.cpp" ExitCode: 1 Stdout: In file included from 87li/xglm_vm3.lump.cpp:12: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/vm/Thread.cpp:33: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/profiler-private.h:10: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/class-internals.h:12: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/metadata-internals.h:10: In file included from /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/metadata/cil-coff.h:9: /Users/vadimmazurek/StudioProjects/flutter_unity_widget/android/unityLibrary/src/main/Il2CppOutputProject/IL2CPP/external/mono/mono/eglib/glib.h(23,10): fatal error: 'eglib-config.h' file not found

include

     ^~~~~~~~~~~~~~~~

1 error generated.

at il2cpp.Program.DoRun(String[] args, RuntimePlatform platform, Il2CppCommandLineArguments il2CppCommandLineArguments, BuildingOptions buildingOptions, Boolean throwExceptions) in /Users/bokken/build/output/unity/il2cpp/il2cpp/Program.cs:line 331

NTC commented 2 years ago

I have the same error !

IluhinDotPro commented 2 years ago

I don't understand how it works.. but.. add

commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include")
commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include")

to android\unityLibrary\build.gradle after

def commandLineArgs = []
    commandLineArgs.add("--compile-cpp")
    commandLineArgs.add("--platform=Android")
    commandLineArgs.add("--architecture=" + architecture)
    commandLineArgs.add("--outputpath=" + workingDir + "/src/main/jniLibs/" + abi + "/libil2cpp.so")
    commandLineArgs.add("--libil2cpp-static")
    commandLineArgs.add("--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi)
    commandLineArgs.add("--incremental-g-c-time-slice=3")
    commandLineArgs.add("--configuration=" + configuration)
......

in method BuildIl2Cpp

NTC commented 2 years ago

Thanks, but unfortunately it doesn't seem to work... I still have the same error

IluhinDotPro commented 2 years ago

Try this commandLineArgs

    def commandLineArgs = []
    commandLineArgs.add("--compile-cpp")
    commandLineArgs.add("--platform=Android")
    commandLineArgs.add("--architecture=" + architecture)
    commandLineArgs.add("--outputpath=" + workingDir + "/src/main/jniLibs/" + abi + "/libil2cpp.so")
    commandLineArgs.add("--libil2cpp-static")
    commandLineArgs.add("--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi)
    commandLineArgs.add("--incremental-g-c-time-slice=3")
    commandLineArgs.add("--configuration=" + configuration)
    //commandLineArgs.add("--dotnetprofile=unityaot-linux")
    //commandLineArgs.add("--enable-debugger")
    //commandLineArgs.add("--profiler-report")
    //commandLineArgs.add("--profiler-output-file=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_conv.traceevents")
    commandLineArgs.add("--print-command-line")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include")
    commandLineArgs.add("--generatedcppdir=" + workingDir + "/src/main/Il2CppOutputProject/Source/il2cppOutput")
    commandLineArgs.add("--cachedirectory=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_cache")
    commandLineArgs.add("--tool-chain-path=" + android.ndkDirectory)
    staticLibraries.eachWithIndex {fileName, i->
        commandLineArgs.add("--additional-libraries=" + workingDir + "/src/main/jniStaticLibs/" + abi + "/" + fileName)
    }
NTC commented 2 years ago

Thank you ! it works !

mvn-daipham2-hn commented 2 years ago

@IluhinDotPro It works. Thank you!

yfunk commented 2 years ago

Same issue, but on an Intel Macbook, so this doesn't seem to be specific to M1. Removing the Debugger / Profiler related command line arguments as suggested above also solved it for me.

Any ideas on why this happens? The project exported from Unity builds fine by itself.

lswd commented 2 years ago

Try this commandLineArgs

    def commandLineArgs = []
    commandLineArgs.add("--compile-cpp")
    commandLineArgs.add("--platform=Android")
    commandLineArgs.add("--architecture=" + architecture)
    commandLineArgs.add("--outputpath=" + workingDir + "/src/main/jniLibs/" + abi + "/libil2cpp.so")
    commandLineArgs.add("--libil2cpp-static")
    commandLineArgs.add("--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi)
    commandLineArgs.add("--incremental-g-c-time-slice=3")
    commandLineArgs.add("--configuration=" + configuration)
    //commandLineArgs.add("--dotnetprofile=unityaot-linux")
    //commandLineArgs.add("--enable-debugger")
    //commandLineArgs.add("--profiler-report")
    //commandLineArgs.add("--profiler-output-file=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_conv.traceevents")
    commandLineArgs.add("--print-command-line")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include")
    commandLineArgs.add("--generatedcppdir=" + workingDir + "/src/main/Il2CppOutputProject/Source/il2cppOutput")
    commandLineArgs.add("--cachedirectory=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_cache")
    commandLineArgs.add("--tool-chain-path=" + android.ndkDirectory)
    staticLibraries.eachWithIndex {fileName, i->
        commandLineArgs.add("--additional-libraries=" + workingDir + "/src/main/jniStaticLibs/" + abi + "/" + fileName)
    }

hello,Where do I add the above code,Below is the unityLibrary code in my project

`// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

apply plugin: 'com.android.library'

dependencies { implementation(name: 'unity-classes', ext:'jar') }

android { compileSdkVersion 29 buildToolsVersion '30.0.2'

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 29
    ndk {
        abiFilters 
    }
    versionCode 1
    versionName '0.1'
    consumerProguardFiles 'proguard-unity.txt'
}

lintOptions {
    abortOnError false
}

aaptOptions {
    noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ')
    ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
}

packagingOptions {
    doNotStrip '*/armeabi-v7a/*.so'
    doNotStrip '*/arm64-v8a/*.so'
}

}

def getSdkDir() { Properties local = new Properties() local.load(new FileInputStream("${rootDir}/local.properties")) return local.getProperty('sdk.dir') }

def BuildIl2Cpp(String workingDir, String targetDirectory, String architecture, String abi, String configuration) { exec { commandLine(workingDir + "/src/main/Il2CppOutputProject/IL2CPP/build/deploy/netcoreapp3.1/il2cpp", "--compile-cpp", "--libil2cpp-static", "--platform=Android", "--architecture=" + architecture, "--configuration=" + configuration, "--outputpath=" + workingDir + targetDirectory + abi + "/libil2cpp.so", "--cachedirectory=" + workingDir + "/build/il2cpp"+ abi + "" + configuration + "/il2cpp_cache", "--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include", "--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include", "--tool-chain-path=" + android.ndkDirectory, "--map-file-parser=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/MapFileParser/MapFileParser.exe", "--generatedcppdir=" + workingDir + "/src/main/Il2CppOutputProject/Source/il2cppOutput", "--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi, "--dotnetprofile=unityaot") environment "ANDROID_SDK_ROOT", getSdkDir() } delete workingDir + targetDirectory + abi + "/libil2cpp.sym.so" ant.move(file: workingDir + targetDirectory + abi + "/libil2cpp.dbg.so", tofile: workingDir + "/symbols/" + abi + "/libil2cpp.so")

}

android { task BuildIl2CppTask { doLast {

          BuildIl2Cpp(projectDir.toString().replaceAll('\\\\', '/'), '/src/main/jniLibs/', 'ARMv7', 'armeabi-v7a', 'Release');
          BuildIl2Cpp(projectDir.toString().replaceAll('\\\\', '/'), '/src/main/jniLibs/', 'ARM64', 'arm64-v8a', 'Release');
    }
}
afterEvaluate {
    if (project(':unityLibrary').tasks.findByName('mergeDebugJniLibFolders'))
        project(':unityLibrary').mergeDebugJniLibFolders.dependsOn BuildIl2CppTask
    if (project(':unityLibrary').tasks.findByName('mergeReleaseJniLibFolders'))
        project(':unityLibrary').mergeReleaseJniLibFolders.dependsOn BuildIl2CppTask
}
sourceSets {
    main {
        jni.srcDirs = ["src/main/Il2CppOutputProject"]
    }
}

}`

图片

khal-it commented 2 years ago

could you share the full gradle file

IluhinDotPro commented 2 years ago

could you share the full gradle file

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

apply plugin: 'com.android.library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

android {
    compileSdkVersion 30
    buildToolsVersion '30.0.2'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 30
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
        versionCode 1
        versionName '1.0.0'
        consumerProguardFiles 'proguard-unity.txt'
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ')
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }

    packagingOptions {
        doNotStrip '*/armeabi-v7a/*.so'
        doNotStrip '*/arm64-v8a/*.so'
    }
}

def getSdkDir() {
    Properties local = new Properties()
    local.load(new FileInputStream("${rootDir}/local.properties"))
    return local.getProperty('sdk.dir')
}

def BuildIl2Cpp(String workingDir, String targetDirectory, String architecture, String abi, String configuration) {
    exec {
        commandLine(workingDir + "/src/main/Il2CppOutputProject/IL2CPP/build/deploy/netcoreapp3.1/il2cpp.exe",
            "--compile-cpp",
            "--libil2cpp-static",
            "--platform=Android",
            "--architecture=" + architecture,
            "--configuration=" + configuration,
            "--outputpath=" + workingDir + targetDirectory + abi + "/libil2cpp.so",
            "--cachedirectory=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_cache",
            "--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include",
            "--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include",
            "--tool-chain-path=" + android.ndkDirectory,
            "--map-file-parser=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/MapFileParser/MapFileParser.exe",
            "--generatedcppdir=" + workingDir + "/src/main/Il2CppOutputProject/Source/il2cppOutput",
            "--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi,
            "--dotnetprofile=unityaot")
        environment "ANDROID_SDK_ROOT", getSdkDir()
    }
    delete workingDir + targetDirectory + abi + "/libil2cpp.sym.so"
    ant.move(file: workingDir + targetDirectory + abi + "/libil2cpp.dbg.so", tofile: workingDir + "/symbols/" + abi + "/libil2cpp.so")
}

android {
    task BuildIl2CppTask {
        doLast {
              BuildIl2Cpp(projectDir.toString().replaceAll('\\\\', '/'), '/src/main/jniLibs/', 'ARMv7', 'armeabi-v7a', 'Release');
              BuildIl2Cpp(projectDir.toString().replaceAll('\\\\', '/'), '/src/main/jniLibs/', 'ARM64', 'arm64-v8a', 'Release');
        }
    }
    afterEvaluate {
        if (project(':unityLibrary').tasks.findByName('mergeDebugJniLibFolders'))
            project(':unityLibrary').mergeDebugJniLibFolders.dependsOn BuildIl2CppTask
        if (project(':unityLibrary').tasks.findByName('mergeReleaseJniLibFolders'))
            project(':unityLibrary').mergeReleaseJniLibFolders.dependsOn BuildIl2CppTask
    }
    sourceSets {
        main {
            jni.srcDirs = ["src/main/Il2CppOutputProject"]
        }
    }
}
mso7nueh commented 1 year ago

Hello. There was a problem with the crash of the application immediately after launch. After the change build.gradle in accordance with the recommendations of @lswd, everything worked! But after each export, the file build.gradle is overwritten and the application starts to crash again, please tell me how it can be fixed.

timbotimbo commented 1 year ago

@mso7nueh your issue sounds different as this is about building the app, not a crash while running it. Your crash looks like it is fixed by the change in https://github.com/juicycleff/flutter-unity-view-widget/pull/722

ChurikiTenna commented 9 months ago

Try this commandLineArgs

    def commandLineArgs = []
    commandLineArgs.add("--compile-cpp")
    commandLineArgs.add("--platform=Android")
    commandLineArgs.add("--architecture=" + architecture)
    commandLineArgs.add("--outputpath=" + workingDir + "/src/main/jniLibs/" + abi + "/libil2cpp.so")
    commandLineArgs.add("--libil2cpp-static")
    commandLineArgs.add("--baselib-directory=" + workingDir + "/src/main/jniStaticLibs/" + abi)
    commandLineArgs.add("--incremental-g-c-time-slice=3")
    commandLineArgs.add("--configuration=" + configuration)
    //commandLineArgs.add("--dotnetprofile=unityaot-linux")
    //commandLineArgs.add("--enable-debugger")
    //commandLineArgs.add("--profiler-report")
    //commandLineArgs.add("--profiler-output-file=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_conv.traceevents")
    commandLineArgs.add("--print-command-line")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/external/bdwgc/include")
    commandLineArgs.add("--additional-include-directories=" + workingDir + "/src/main/Il2CppOutputProject/IL2CPP/libil2cpp/include")
    commandLineArgs.add("--generatedcppdir=" + workingDir + "/src/main/Il2CppOutputProject/Source/il2cppOutput")
    commandLineArgs.add("--cachedirectory=" + workingDir + "/build/il2cpp_"+ abi + "_" + configuration + "/il2cpp_cache")
    commandLineArgs.add("--tool-chain-path=" + android.ndkDirectory)
    staticLibraries.eachWithIndex {fileName, i->
        commandLineArgs.add("--additional-libraries=" + workingDir + "/src/main/jniStaticLibs/" + abi + "/" + fileName)
    }

This solved the error, but app crashes right after launch with 'Lost connection to device.' and loads of log. This has never happened before..

Log:

.... continue ....
      #130 pc 0000000000ac4b7c  /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (com.android.internal.os.ZygoteInit.main+3548)
      #131 pc 0000000000360880  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 3cd43dfd934282c944e52afdac5120fb)
      #132 pc 00000000004944cc  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+516) (BuildId: 3cd43dfd934282c944e52afdac5120fb)
      #133 pc 0000000000553530  /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+112) (BuildId: 3cd43dfd934282c944e52afdac5120fb)
      #134 pc 00000000000c0ce8  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+120) (BuildId: adaff87eb38d1f1656cbc504539d7ceb)
      #135 pc 00000000000cd444  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+852) (BuildId: adaff87eb38d1f1656cbc504539d7ceb)
      #136 pc 0000000000002574  /system/bin/app_process64 (main+1300) (BuildId: 2b60f9748c99330a43e8a5f1f84b8bcc)
      #137 pc 0000000000084d70  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96) (BuildId: 223ef8d5f0fe5d949ebf7e38286d3677)
Lost connection to device.