android - 在计算机实验室环境中安装 Android Studio,学生在 OSX 上登录

标签 android macos android-studio configuration multiple-users

我在主管理员帐户上安装了 Android Studio,包括使用 sdk 管理器下载所有合适的 sdk、工具等,并进一步安装 genymotion。一切就绪后,该计算机被镜像并部署到实验室的 36 台计算机。以主管理员身份登录时一切正常,但显然 Android Studio 喜欢将内容保存在用户的个人库中,因此没有其他用户的环境设置正确。

我尝试将 Android 文件夹从/Users/main/Library 复制到/Users/main/Shared 文件夹,但我似乎无法避免必须通过设置向导并下载最新的 API(我不想参加类(class))。

实验室的工作方式是我们为每个学生提供网络帐户。任何学生都可以转到任何计算机并以标准用户身份登录,但对某些系统首选项的访问权限有限。如果学生要更换计算机(我确实希望他们这样做,因为他们全年都应该与不同的合作伙伴一起工作),我不希望他们必须重新下载我们将要使用的两个 API 的所有 sdk 工具使用(19 和 21)。

让每个人都以主管理员身份登录并不是理想的解决方案,原因是学生将无法访问包含个人文件存储的网络驱动器。

有没有办法为多个用户帐户设置 Android Studio,其中一些具有管理员权限,其他具有标准用户权限?该实验室包含 36 台运行 Yosemite 的 2013 iMac。

最佳答案

您能找到解决方案吗?

我正在处理相同的情况,但是我没有重新构建我的实验室,只是在现有的 10.9 实验室上安装软件 + Yosemite 更新。

我发现有效的方法是将 sdk 文件夹放入用户模板 (/System/User Templates/English.proj/Library/Android)。不过,这会导致每个帐户大约有 2.5GB,所以如果您像我一样有 160Gb 的磁盘,那么这不是一个非常实用的解决方案。

我最后做的是在用户模板中创建智能链接。通过将 sdk 存储在磁盘上一次(例如/Android/sdk),并链接到每个用户的配置文件,Android Studio 可以按预期启动和工作,并且不会占用每个用户宝贵的磁盘空间。

这是我在 Apple Remote Desktop 中使用的脚本,其中包括从网络共享中获取 android studio 应用程序和 sdk。

mkdir /Volumes/fs2/
echo "Mounting share"

mount_smbfs //user:pass@fs2/installs/ /Volumes/fs2/

echo "Copying Android studio Application"
cp -r /Volumes/fs2/software/MacOS/Android/Android\ Studio.app /Applications/
chmod -R 655 /Applications/Android\ Studio.app
chown -R root:wheel /Applications/Android\ Studio.app

mkdir /Android

echo "Copying Android sdk folders"
cp -r /Volumes/fs2/software/MacOS/Android/sdk /Android/

chmod -R 655 /Android/
chown -R root:wheel /Android/

umount /Volumes/fs2

echo "Linking sdk to user accounts"
for USER_TEMPLATE in "/System/Library/User Template"/*
do
    ln -s /Android $USER_TEMPLATE/Library/Android
done

for USER_HOME in /Users/*
do
  USER_UID=`basename "${USER_HOME}"`
  if [ ! "${USER_UID}" = "Shared" ]
  then
    ln -s /Android $USER_HOME/Library/Android
  fi
done

关于android - 在计算机实验室环境中安装 Android Studio,学生在 OSX 上登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020175/

相关文章:

java - 使用 adjustResize 防止键盘在启动时自动弹出

android - 如何防止影响其父 Activity 的 fragment 的触摸

Android 仅将 View 旋转 90 度

macos - Mac OSx 和 VS 代码 : getting `LSGetApplicationForInfo() failed with error` when starting from terminal

objective-c - 在 Cocoa 模拟浏览器中发出 HTTP 请求

Android Gradle 插件 4.2.0 R8 ArrayIndexOutOfBoundsException

android - 有没有办法录制声音(用SoundPool播放)?

javascript - 从android中的另一个类调用MainActivity方法

macos - 源 Bash 脚本中的 $0 不返回脚本名称

java - sudo ln -sfn 有什么作用?