通常,必须将其转换为库才能将其嵌入到另一个应用程序中。但是,现在我想将其转换为动态功能。
我把它放在了 Unity 项目的清单中:
<dist:module
dist:onDemand="true"
dist:title="@string/title_gamejam_as_dynamic_feature">
<dist:fusing dist:include="true" />
</dist:module>
另外,我已经注释掉了bundle{}
它的 Gradle 文件的一部分。如果我没有对此发表评论,我最终会收到以下错误:
Could not find method bundle() for arguments [build_9piysgasfu4pgl4v1ppx46cyn$_run_closure3$_closure12@44175a08] on object of type com.android.build.gradle.AppExtension.
我还确保UnityPlayerActivity
那里扩展了我AppCompatActivity
使用 的自定义SplitCompat.install(this)
[虽然它扩展了Activity
]。
现在我的问题是,由于某种原因Assets
,Unity 项目没有在基础 APK 中注册,所以UnityPlayerActivity
最终在启动时崩溃。
我究竟做错了什么?
编辑:错误堆栈跟踪如下:
01-15 03:48:18.343 15446-15522/? E/mono: The assembly mscorlib.dll was not found or could not be loaded.
01-15 03:48:18.343 15446-15522/? E/mono: It should have been installed in the `/data/app/test.com.ondemandtest-1/base.apk/assets/bin/Data/Managed/mono/4.5/mscorlib.dll' directory.
01-15 03:48:18.343 15446-15446/? E/CRASH: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
01-15 03:48:18.343 15446-15446/? E/CRASH: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-15 03:48:18.343 15446-15446/? E/CRASH: Build type 'Release', Scripting Backend 'mono', CPU 'armeabi-v7a'
01-15 03:48:18.343 15446-15446/? E/CRASH: Build fingerprint: 'Huawei/ALE-L21/hwALE-H:5.0.1/HuaweiALE-L21/C636B150:user/release-keys'
01-15 03:48:18.343 15446-15446/? E/CRASH: Revision: '0'
01-15 03:48:18.343 15446-15446/? E/CRASH: pid: 15446, tid: 15446, name: om.ondemandtest >>> test.com.ondemandtest <<<
01-15 03:48:18.343 15446-15446/? E/CRASH: r0 00000000 r1 ffc2fb10 r2 6f5aec60 r3 00000000
01-15 03:48:18.343 15446-15446/? E/CRASH: r4 ffc2fb10 r5 e22c0250 r6 00000000 r7 6f5aec60
01-15 03:48:18.343 15446-15446/? E/CRASH: r8 ffc2fad4 r9 ab3f7930 sl ffc2fa9f fp ffc2fa50
01-15 03:48:18.343 15446-15446/? E/CRASH: ip e1fafee8 sp ffc2fa40 lr e1fb0040 pc e1fafca8 cpsr 00003c56
01-15 03:48:18.343 15446-15446/? E/CRASH: backtrace:
编辑2:
经过进一步检查,我发现它mscorlib.dll
不在mono
.so 文件中,而是在 Assets 文件夹中。将 Unity 项目复制assets/bin/Data/...
到基础项目中(复制到完全相同的路径中)是可行的……但这只是破坏了模块化的意义。
Unity 项目有什么方法可以使用它带来的 Assets 而无需在部署之前将其复制到 Base APK 中?