java - 创建从 Android 应用程序的 Assets 文件夹内部到其存储的符号链接(symbolic link)

标签 java android unity-game-engine apk symlink

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

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

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

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

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

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

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

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

谢谢

最佳答案

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

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

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

相关文章:

Java 搜索两个数组

java - 为非并发程序编写并发 JUnit

java - 如何从一个字符串复制到Java中的另一个字符串?

android - 在 Android 中存储 key

c# - 在 C# 脚本中使用 Translate.translate 2d sprite 速度太快(unity)

unity-game-engine - 在 Unity 中获取英特尔实感深度流

java - 这是跳过 java 序列化的 apt java 关键字

android - MediaPlayer 认为 aac* 音频文件是视频文件?

android - 如何制作一个带倒圆角的矩形?

ios - Xcode 8.0 架构 arm64 的 undefined symbol