java - 在 Android 应用的 Assets 文件夹中创建一个符号链接(symbolic link)到其存储

标签 java android unity3d apk symlink

我正在开发一个 android 应用程序,用户可以在其中玩多个 Unity 游戏。然而,事实证明,即使可能,使用 Unity 实现这个简单的方面也太复杂了。

在分析了 Unity on Android 的工作原理后,我了解到它使用了一堆库(称为 libmain.so、libunity.so 和 libmono.so),这三个库指的是存储在 apk 中的实际游戏的代码android 应用程序,特别是在“assets/bin/Data/”目录中。该目录被硬编码在库的代码中,并且库中的所有内容都在法律上被禁止更改。

所以,为了让用户可以玩多个游戏,我想我可以把用户当前想玩的游戏放在“assets/bin/Data”目录下,这样当Unity库要启动游戏时,他们会在“assets/bin/Data”中找到它并启动它。然后当用户想玩另一个游戏时,我只需将“assets/bin/Data”中旧游戏的文件替换为新游戏的文件,Unity库就可以玩另一个游戏,依此类推.

但是,这是行不通的,因为不允许 android 应用程序修改自己的 apk。

所以,为了解决这个问题,我想我可以把要玩的游戏文件放在应用程序的外部或内部存储中的某个地方,然后在“assets/bin/”中为这些文件添加一个符号链接(symbolic link)(快捷方式)数据”。

这样,当Unity的库想玩游戏时,他们会去“assets/bin/Data”目录,在那里他们会在应用程序的存储中找到实​​际游戏的快​​捷方式,因为我可以自由更改内容应用程序的存储空间,然后我将能够按需更换游戏。

我的问题是:是否可以创建从应用程序 Assets 到应用程序存储的符号链接(symbolic link)(快捷方式)?如果是,怎么做??

如果有什么不清楚的,请让我详细说明

谢谢

最佳答案

不,这是不可能的。 APK 中包含的 Assets 不会扩展到设备文件系统上。它们可以通过 AssetManager 就地访问。蜜蜂。

在用户不知道或绕过框架提供的包安装路径的情况下,允许应用程序自行替换将是一个巨大的安全漏洞。如果您需要做的只是下推 Assets 类型更新(图形、关卡、声音等),那么请考虑使用 OBB 或其他可下载 Assets 来扩展应用程序。

关于java - 在 Android 应用的 Assets 文件夹中创建一个符号链接(symbolic link)到其存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985955/

相关文章:

java - ganymed SSH2 java

java - ActionPerformed在Java中无法正常运行

java - 如何在不影响原始元素的情况下更改 It's duplicate 中的 ArrayList 元素?

android - 如何进行非常基本的 AWS Device Farm 应用程序端到端测试 : Just Run the App for Specified Time

ios - 减小Unity游戏iOS应用的大小

java - Java NIO套接字: the server doesn't receive the second message over the same socket

java - Akka Streams GraphStage

android - 在Android中流式传输音频时产生噪音

c# - 按住手机上的按钮

android - Unity proguard:任务 ':transformClassesAndResourcesWithProguardForRelease'的执行失败