Android中的符号链接创建在应用程序的资产目录中
我似乎无法找到这个具体问题的可靠答案。
我正在尝试以编程方式在同一应用程序的资产目录中的另一个位置的资产文件夹中创建一个目录的符号链接。 从本质上讲,我希望做与Java.nio.Files的createSymbolicLink方法相同的事情。
有没有可用的方法来使用Android SDK? 如果没有,NDK有可能吗?
对于Android API 21及更高版本,只需使用:
Os.symlink(originalFilePath,symLinkFilePath);
没有公共API可以做到这一点。 但是,您可以使用一些脏reflection来创建符号链接。 我刚刚测试了以下代码,它对我有用:
// static factory method to transfer a file from assets to package files directory AssetUtils.transferAsset(this, "test.png"); // The file that was transferred File file = new File(getFilesDir(), "test.png"); // The file that I want as my symlink File symlink = new File(getFilesDir(), "symlink.png"); // do some dirty reflection to create the symbolic link try { final Class> libcore = Class.forName("libcore.io.Libcore"); final Field fOs = libcore.getDeclaredField("os"); fOs.setAccessible(true); final Object os = fOs.get(null); final Method method = os.getClass().getMethod("symlink", String.class, String.class); method.invoke(os, file.getAbsolutePath(), symlink.getAbsolutePath()); } catch (Exception e) { // TODO handle the exception }
如果您不想使用reflection,Google快速搜索会显示此答案: http : //androidwarzone.blogspot.com/2012/03/creating-symbolic-links-on-android-from.html
- UnsatisfiedLinkError:无法从加载程序加载X.
- java.lang.UnsatisfiedLinkError:无法加载eposprint:findLibrary返回null
- 使用Android NDK构建Soundtouch
- 如何在Android NDK上使用JNI在C和Java之间传递复杂结构
- 来自PayPal的交易详情使用Android中的Pay-key
- 更改包名称android清单会导致问题JNI
- 如何使用NDK将Lame 3.99.5添加到Android Studio?
- 使用API21进行编译时出现UnsatisfiedLinkError
- Android如何通过JNi示例使用libjpeg-turbo库