本文所要介绍的是在Deepin系统中使用Genymotion让安卓模拟器拥有root权限,分两个步骤:一是安装genymotion并创建一个自定义镜像,二是在Android Studio中安装Genymotion插件。
背景 在实际Android开发过程中,某些待调试的应用可能需要root权限,但是AVD Manager默认创建的AVD是不带root权限的,这时候应该怎样才能才能root我们的AVD呢? 这里我们采取一个非正面的方式,使用第三方安卓模拟器(genymotion,自带root权限)创建一个虚拟设备,然后在Android Studio中安装这个模拟器的插件,最后调试的时候AVD就能自动识别这个虚拟设备并调用它。 由于是在Deepin Linux系统下进行的,所以大家在按照下面的步骤操作时要学会变通。
步骤一、安装genymotion并创建一个自定义镜像 1.打开深度商店下载genymotion模拟器,其它Linux发行版请自行安装:
2.安装完毕后,打开Genymotion创建虚拟安卓设备:
3.点击运行启动虚拟安卓设备,如图:
注意:这一步结束后这个窗口要一直挂在后台,别把它关闭了,否则后面AVD Manager会识别不出来这个设备。
步骤二、在Android Studio中安装Genymotion插件 1.打开Android Studio->顶部菜单栏->File->Settings->Plugins->Browse repositories->在搜索框搜索**genymotion**->安装genymotion,以下为动画演示:
2.这时候你会发现其实你已经成功了,点击run app(就是那个绿色的播放键)按钮,启动调试,这时候你会在设备列表中发现你刚刚创建的Genymotion虚拟设备,大功告成:
附:让你的Android应用申请root权限 在实际的Android开发中,我们开发的应用可能会需要申请root权限,但应该怎么样写这段代码呢? 这里提供一个申请root权限的类,方便大家使用。 步骤一、在Android Studio中新建一个SystemManager.java类 SystemManager.java的内容如下: package com.example.lolimay; import java.io.DataOutputStream; import android.app.Activity; import android.util.Log; public class SystemManager extends Activity { /** * 应用程序运行命令获取Root权限,设备必须已破解(获得ROOT权限) * @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot); * @return 应用程序是/否获取Root权限 */ public static boolean RootCommand(String command) { Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes(command + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (Exception e) { Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage()); return false; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } } Log.d("*** DEBUG ***", "Root SUC "); return true; } } 注意:第一行的包名要改成自己的(学会变通)。 步骤二、在MainActivity.java中添加两行代码,即为申请root权限: String apkRoot="chmod 777 "+getPackageCodePath(); SystemManager.RootCommand(apkRoot); 大功告成,然后打开root后的手机或者root后的模拟器试试,以上两个步骤处理完应该就能达到目的了。
相关主题 |