无法直接在Android设备而不是Android模拟器上测试Android应用程序

时间:2012-03-05 06:02:16

标签: android deployment android-emulator titanium-mobile

嗨我开发了小型Android应用程序。我想在Android设备上运行它。我复制.apk并在我的Android设备上运行它工作正常。但我不想每次都复制更改我的代码时的.apk文件。我只想通过Titanium Run直接在我的移动设备上运行它 - > Android设备选项。我已经为我的设备设置了供应商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,但它没有显示我的设备。它显示我的模拟器但不显示设备。它显示一个设备图标,名称为????????还有未知的,有什么方法可以解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:0)

您没有权限访问您的设备。 尝试在/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

最后,将供应商ID添加到~/.android/adb_usb.ini

 # USB devices
 0xXXXX

答案 1 :(得分:0)

编辑 - 新答案

我重新打开了这个问题,并且在以root模式启动adb方面很可疑。所以,当我插入索尼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
...

Automaticaly,我看到供应商ID连接到Sony Z1。它说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"

OLD ANSWER

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

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

  1. 通过以下非常简单的教程here

  2. 添加udev规则
  3. 运行adb kill-server

  4. 设备上的开发者选项中可能有一个选项Revoke USB debugging authorization...。您可以使用该选项。如果没有这样的选项,请不要介意,跳到下一步。

  5. 运行sudo adb usbsudo adb start-server

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

  7. 就是这样,你的设备应该可以工作。如果它仍然没有,请在下面提交,我将尝试查明原因。

    P.S。我承认以root身份运行adb是不好的做法,但如果没有它,我无法让它工作。通过切换到非root adb,我再次遇到了同样的错误。