【问题标题】:Unable to test android application directly on android device instead of android simulator无法直接在 android 设备而不是 android 模拟器上测试 android 应用程序
【发布时间】:2012-03-05 06:02:15
【问题描述】:

嗨,我已经开发了小型 Android 应用程序。我想在 android 设备上运行它。我复制了 .apk 并在我的 android 设备上运行它工作正常。但是我不想每次更改时都复制 .apk 文件我的代码。我只想通过 Titanium Run --> Android Device 选项直接在我的移动设备上运行它。我已经为我的设备设置了供应商 ID。当我尝试在 android 设备上运行我的应用程序时,它给了我设备权限不足的错误。我在我的设备上保持 USB 调试启用。我也尝试解决 adb 问题。

cd android-sdk-linux-linux/tools 
./adb kill-server 
./adb start-server 
./adb devices

但它告诉我

List of devices attached 
????????????    no permissions

我签入了 DDMS,但它没有显示我的设备。它显示了我的模拟器,但没有显示设备。它显示一个名称为 ???????? 的设备图标和未知所以有什么办法可以解决这个问题。谢谢。

【问题讨论】:

  • 我知道这是一个愚蠢的解决方案,但请尝试重新启动您的手机。这发生在我身上很多次,但是当我重新启动手机并将手机连接到 eclipse 时,它​​会显示我的设备。
  • 感谢 Rashmi 的快速回复。我也尝试了该解决方案,但它对我不起作用,我使用的是 Titanium Studio 而不是 Eclipse。是否需要从根目录启动 Eclipse 或 Titanium Studio。我使用的是 Ubuntu 10.4,所以需要任何驱动器吗?
  • 在您的设备上转到设置 -> 应用程序 -> 开发 -> 检查是否允许从其他来源安装,并启用第二次检查应用程序调试
  • 谢谢你。在我的设备中没有检查从其他来源安装的选项;但我已经启用了应用程序调试选项并允许模拟位置。

标签: android deployment android-emulator titanium-mobile


【解决方案1】:

您无权访问您的设备。 尝试在/etc/udev/rules.d 中的某个文件(通常是 51-android.rules)中添加类似的内容:

SUBSYSTEM=="usb",SYSFS{idVendor}=="XXXX",MODE="0600",SYMLINK+="mydev-%n",OWNER="my-user-name"

my-user-nameXXXX 替换为您可以使用的设备的供应商ID

   $ lsusb

然后重启udev

   $ sudo service udev restart

最后,将vendor id添加到~/.android/adb_usb.ini

 # USB devices
 0xXXXX

【讨论】:

  • 嗨 dtmilano,谢谢您的回复。我尝试了您的解决方案,但它仍然对我不起作用。我用我的供应商 ID 修改了 51-android.rules 文件,并在 adb_usb.ini 文件中添加了供应商 ID。但它不起作用。
  • 尝试确定哪个部分不工作:查看是否检测到您的设备,是否创建了设备节点等
【解决方案2】:

编辑 - 新答案

我重新打开了这个问题,并且在 root 模式下启动 adb 有点可疑。所以,当我插入 Sony Z1 时,我运行

mdzeko@pc ~ $ lsusb 
...
Bus 001 Device 011: ID 0fce:519e Sony Ericsson Mobile Communications AB 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...

自动地,我看到了连接到 Sony Z1 的供应商 ID。它说0fce 是它的供应商ID。查看谷歌页面here我注意到索尼和索尼爱立信之间存在差异。

检查我的 udev 规则,结果发现里面我有索尼供应商 ID(054c)而不是索尼爱立信(0fce)。在 udev 中更改该代码使其工作。

mdzeko@pc ~ $ cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"

老答案

好的,经过几个小时的研究,我想出了一个解决方案。也许它也适用于你。

我在 Linux Mint 上使用 Sony Z1。尝试将其连接到 USB 时,它给了我同样的错误。这就是我所做的:

  1. 按照非常简单的教程here添加udev规则

  2. 运行adb kill-server

  3. 设备上的开发者选项中可能有一个选项为Revoke USB debugging authorization...。您可以使用该选项。如果没有这样的选项,没关系,跳到下一步。

  4. 运行sudo adb usbsudo adb start-server

  5. 如果没有保存使用该设备的权限,您将在设备上看到一个对话框,要求您授予权限。选择授予您权限的选项。

就是这样,您的设备应该可以工作了。如果仍然没有,请在下方评论,我会尝试了解原因。

附:我承认以 root 身份运行 adb 是不好的做法,但没有它我无法让它工作。通过切换到非root adb,我又遇到了同样的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多