我正在开发一款Android应用,用户可以在其中玩多款Unity游戏。然而,如果可能的话,实现这个简单的方面已经证明对Unity太复杂了。
在分析了Android上的Unity如何工作之后,我明白它使用了一堆库(称为libmain.so,libunity.so和libmono.so),这三个库指的是存储在里面的实际游戏的代码android app的apk,特别是“assets / bin / Data /”目录。该目录在库的代码中是硬编码的,并且从法律上阻止了库中的所有内容被更改。
因此,为了让用户能够玩多个游戏,我认为我可以将用户当前想要玩的游戏放在“assets / bin / Data”目录中,所以当Unity库想要开始游戏,他们会在“资产/ bin /数据”中找到它并启动它。然后当用户想要玩另一个游戏时,我只需将“asseets / bin / Data”中旧游戏的文件替换为新游戏的文件,Unity库将因此播放另一个游戏,依此类推
然而,这不起作用,因为不允许Android应用修改自己的apk。
所以,为了解决这个问题,我认为我可以将游戏文件放在应用程序的外部或内部存储中的某个位置,然后在“资产”内的那些文件中添加符号链接(快捷方式) / bin中/数据”。
这样,当Unity的图书馆想玩游戏时,他们会进入“资产/ bin /数据”目录,在那里他们会找到应用程序存储中实际游戏的快捷方式,因为我可以自由更改应用程序存储的内容,然后我就可以按需更换游戏。
我的问题是:是否可以创建从应用程序资产到应用程序存储的符号链接(快捷方式)?如果是,怎么??
如果有任何不清楚的地方,请让我详细说明
谢谢
答案 0 :(得分:2)
不,不可能这样做。 APK中包含的资产不会扩展到设备文件系统。它们可以通过AssetManager
API就地访问。
在用户不知道或绕过框架提供的软件包安装路径的情况下,允许应用程序自行替换将是一个巨大的安全漏洞。如果您只需要下载资产类型更新(图形,级别,声音等),请考虑使用OBB或其他可下载资产来扩展应用程序。