Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CoreI/Status.go中的getDataDir()函数可能需要修改 #26

Open
adf2007 opened this issue May 25, 2018 · 1 comment
Open

CoreI/Status.go中的getDataDir()函数可能需要修改 #26

adf2007 opened this issue May 25, 2018 · 1 comment

Comments

@adf2007
Copy link

adf2007 commented May 25, 2018

Android 6.0以后系统支持多用户,分别为"主要用户"、"次要用户"、“访客”。以前的手机用户内置存储区在/data/data/packagename/中。但是现在的用户内置存储区在/data/user/userId/packagename/目录。比如,“主要用户”的userid为0,则它的私人内部存储区在/data/user/0/com.v2ray.ang/目录,而第一个“次要用户”的userid为10,它的私人内部存储区在/data/user/10/com.v2ray.ang/目录,以此类推。手机/data/data/packagename/目录仍然存在,应该是为了兼容性考虑,但是这个目录只有“主要用户”可以访问。所以导致了“次要用户”安装这个应用的时候,无法成功启动vpn服务。通过logcat可以看到,提示“fork exec /data/data/tun2sock : permission denied”。
希望作者能修改这个问题,让多用户的手机也可以安装使用。

获取用户内部存储目录有相关函数,但方便起见我做了如下修改,并测试,已经测试通过。“主要用户”、“次要用户”都可以成功运行。用户的userid可以通过uid/100000得到。CoreI/Status.go中的getDataDir()函数修改如下:

func (v *Status) getDataDir() string {
var datadir = "/data/data/org.kkdev.v2raygo/"
if v.PackageName != "" {
datadir = "/data/user/" + strconv.Itoa(os.Getuid()/100000) + "/" + v.PackageName + "/"
}
return datadir
}

@mclovin-2k
Copy link

我也遇到这个问题了
现在只能用BifrostV……

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants