作为包运行';a、 b.c';未知-Galaxy S4 Jellybean或Android 4.3
对于运行Jellybean 4.2.2的Galaxy S4,我无法以运行身份(或ndk gdb)运行作为包运行';a、 b.c';未知-Galaxy S4 Jellybean或Android 4.3,android,android-ndk,gdb,android-4.3-jelly-bean,ndk-gdb,Android,Android Ndk,Gdb,Android 4.3 Jelly Bean,Ndk Gdb,对于运行Jellybean 4.2.2的Galaxy S4,我无法以运行身份(或ndk gdb)运行 ~ $ adb shell shell@android:/ $ run-as a.b.c ls run-as: Package 'a.b.c' is unknown 对于ICS之前的设备,这个问题有多种答案,但这些答案似乎已经在ICS中得到了解决 更新-2013年8月:在最初使用Jellybean 4.2.2出现在Galaxy S4上之后,运行方式问题现在似乎出现在所有4.3设备上。看这个
~ $ adb shell
shell@android:/ $ run-as a.b.c ls
run-as: Package 'a.b.c' is unknown
对于ICS之前的设备,这个问题有多种答案,但这些答案似乎已经在ICS中得到了解决
更新-2013年8月:在最初使用Jellybean 4.2.2出现在Galaxy S4上之后,运行方式问题现在似乎出现在所有4.3设备上。看这个
请参阅公认的Android问题
更新-2013年11月:谷歌发布了与安卓4.4一样运行的修复程序。通过将此添加到活动中获得成功:
private void startGdbServer() {
try {
new ProcessBuilder()
.command(getFilesDir().getParent() + "/lib/gdbserver", "tcp:5039", "--attach" ,"" + android.os.Process.myPid())
.redirectErrorStream(true)
.start();
} catch (IOException e) {
Log.e(TAG, "IOException failed to start gdbserver");
}
}
然后,我将startGdbServer包装在一个Android服务中,并更新ndk gdb脚本以启动服务器,而不是runas命令
以下是添加的清单:
<service android:enabled="true" android:name="com.apportable.activity.GdbServerService"
android:label="@string/app_name" android:icon="@drawable/icon">
<intent-filter >
<action android:name="apportable.FoundationTests.GdbServerService" />
</intent-filter>
</service>
有一件事最终解决了Nexus7的问题,那就是安装不同的ADB驱动程序。我还重新刷新了设备(尽管我不确定这是否真的是修复它的原因)。正如另一个答案(我的答案)中提到的那样,需要根目录,而事实上,它对我的情况也没有帮助。最新版本的Nexus 7存在一个已知问题。只需降级到4.2(或者在没有小更新的情况下获得4.3),您就可以了。这里有一个关于它的讨论:
就我而言,这是核心应用程序的问题:
shell@android:/ $ run-as com.android.phone transfer_bugreport ls
run-as: Package 'com.android.phone' is unknown
在
标签coreApp=“true”
中有inAndroidManifest.xml
的包被排除在/data/system/packages.list
之外,因此对于来说确实是未知的,只是为了完整性起见,
。。。设备上是否安装了该软件包?是。我可以在启动应用程序时使用adb shell am start-n a.b.c/{activity}线索,但不清楚如何更改非根设备的ndk gdb。让应用程序从ssh服务器上分叉,作为其用户id运行,可能会为您提供一定程度的灵活性,以便在以后独立于应用程序状态启动gdbserver。谢谢Chris。最后,我将startGdbServer包装到一个Android服务中,并更新ndk gdb脚本来启动服务器,而不是runas命令。到目前为止,这似乎使有缺陷的三星设备与其他设备一样可调试。当你说“将此添加到活动中”时,你的意思是将此添加到应用程序中的现有活动中?或者您创建了一个新的应用程序只是为了启动GDB服务器?你能澄清一下你是如何在Android服务中包装它的,以及你对ndk-gdb
脚本做了哪些更改吗?等等,我在ndk-gdb.py中没有看到这样的行。这就是我们应该修改的文件,对吗?还是我遗漏了什么?在当前的SDK版本(1.1.03)中,代码序列从.apportable/SDK/site_scons/android/SDK.py的第770行开始
shell@android:/ $ run-as com.android.phone transfer_bugreport ls
run-as: Package 'com.android.phone' is unknown