小编Rog*_*nns的帖子

不止一个BroadcastReceiver用于相同的Intent,具有相互矛盾的文档和实践

Google Analytics for Android文档中,它有一条说明:

注意:每个应用程序只能指定一个BroadcastReceiver类.如果您需要合并来自不同SDK的两个或更多BroadcastReceiver,您将需要创建自己的BroadcastReceiver类,该类将接收所有广播并为每种类型的广播调用适当的BroadcastReceivers.

虽然有些令人困惑,但在该陈述中似乎没有单一的事实要素.特别是你可以在一个应用程序中有多个接收器,它们工作得很好.其他地方已将此解释为意味着您不能为特定的Intent操作提供多个接收器.然而,在我的测试中,包括Tablet/3.2设备以及G1/1.6设备,我确实看到com.android.vending.INSTALL_REFERRER的所有广播接收器确实被调用.

我已经实现了一个接收器,它将根据某个配置调用其他接收器并使用PackageManager更新它,并从清单中获取条目,但这一切看起来完全没必要.

那么真相是什么?分析文档是完整的内容还是注释背后有一些真相?

android broadcastreceiver

28
推荐指数
2
解决办法
3万
查看次数

让python -m模块用于在C中实现的模块

我有一个用于Python的纯C模块,我希望能够使用该python -m modulename方法调用它.这适用于使用Python实现的模块,一个明显的解决方法是为此目的添加额外的文件.但是,我真的想保留一个单独的分布式二进制文件,而不是仅为此解决方法添加第二个文件.

我不在乎解决方案有多hacky.

如果您尝试使用带有-m的C模块,则会收到错误消息No code object available for <modulename>.

python

10
推荐指数
1
解决办法
1722
查看次数

使用dev_appserver.py获取覆盖范围将排除我的项目文件

我在64位Ubuntu 13.04上使用Coverage 3.6,Appengine 1.8.0,Python 2.7.4 运行以下代码:

coverage run dev_appserver.py project
Run Code Online (Sandbox Code Playgroud)

当我查看覆盖结果时,我可以看到项目中的文件之外的所有文件的详细信息.如果我添加,它们会显示为零行执行--source=project.尝试--timid没有任何区别.我可以看到其他人做同样的事情 - 例子1 2 - 暗示这曾经用过.

我通过发送SIGINT终止coverage/dev_appserver,并等待它退出.我怀疑是chicanery dev_appserver复制生产环境(例如限制模块,禁用二进制模块,chrooting)正在打破覆盖范围.

google-app-engine coverage.py

7
推荐指数
0
解决办法
397
查看次数

Cython 日志记录文件名和模块

如果您从包含funcName 和 module 的cythonized代码调用日志记录模块,那么您会得到这些属性的错误值。相反,您从第一个更高级别的调用者那里获取值,而不是来自 cython,这是极具误导性的。原因是 cython 不生成调用帧,因此它们对logging.findCaller方法不可见。

有没有办法让日志记录与 cython 一起工作?

我不想更改每个调用日志记录的位置。如果有其他查找信息的方法,我很乐意对logging.findCaller进行monkeypatch。

logging cython

6
推荐指数
1
解决办法
1909
查看次数

如何使用Mercurial钩子的相对路径名

我有一个脚本位于我的工作副本的顶层,并希望将其用作Mercurial钩子.如果我使用钩子的绝对路径名,那么一切都很好,但我想要一个相对路径名,这样整个东西可以轻松移动,用于其他工作副本,其他开发人员可以按原样复制hgrc.

/space/project/.hg/hgrc包含

[hooks]
update = genid
Run Code Online (Sandbox Code Playgroud)

genid脚本位于/ space/project/genid

如果我在/ space/project中但是如果我的当前目录是/ space/project/src/tools,那么钩子被调用就好了,那么'hg update'会因为无法找到钩子而给出错误.

mercurial hook

5
推荐指数
1
解决办法
892
查看次数

从Mac命令行访问iOS应用程序目录(沙箱)

我需要使用Mac或Linux上的命令行(non-gui)访问安装在iOS设备上的应用程序的沙箱目录.这有助于开发和测试自动化.将json文件放入沙箱可以让我设置额外的调试消息和更小的刷新间隔等参数.

像iFunBox这样的工具可以很好地工作,但只是图形化,需要多次点击才能完成.发给开发人员的电子邮件没有得到答复.它也不支持AppleScript.我确实找到了另一个提供Fuse模块的应用程序,但是如果应用程序被卸载然后重新安装(以便重置为第一次用户体验),它就变成了错误.我向开发人员报告了这些问题,但没有解决问题.

我需要做的事情是:

  • 测试是否安装了具有特定软件包ID的应用程序
  • 创建Library/Caches/MYLIBNAME目录(如果它不存在)
  • 将一个~100字节的json文件从Mac复制到该目录
  • 获取该文件的副本
  • 只能在Linux上运行的解决方案也是可以接受的
  • 设备没有越狱,我宁愿不要求这样做

在某些情况下,我没有应用程序的源代码,因为它是使用我的库的第三方,因此编译应用程序的不同版本是不切实际的.

由于lxt,许多评论中的答案如下.总结是:

  • 与libimobiledevice相关的各种库和程序可以解决这些问题
    • 使用修补的 iFuse安装应用程序沙箱
    • 使用idevicesyslog查看控制台日志
    • 使用ideviceinstaller安装/卸载应用程序
  • 与libimobiledevice相关的各种库和程序即使不是不可能在Linux或Mac上编译也是非常困难的,并且没有统一分发源或二进制文件
    • 对于Ubuntu,请尝试libimobiledevice(可能有3个后缀),ideviceinstaller和libimobiledevice-utils包
    • 对于Mac,搜索libimobiledevice-macosx可能会让你获得一些方法

ios

5
推荐指数
1
解决办法
6620
查看次数

ffmpeg 脉冲音频输出选项(设备)

我需要使用ffmpeg 的一些记录的pulseaudio选项,例如设备。文档中的示例有效,但仅设置流名称:

ffmpeg -i INPUT -f pulse "stream name"
Run Code Online (Sandbox Code Playgroud)

我有一个名为“播放设备”的接收器,我想使用它。根据文档和谷歌搜索,我尝试了各种选项来指定设备。他们都给出错误(或不起作用):

ffmpeg -i INPUT -f pulse -device playback-device
# At least one output file must be specified

ffmpeg -i INPUT -f pulse -device=playback-device
# Unrecognized option 'device=playback-device'.  Error splitting the argument list: Option not found

ffmpeg -i INPUT -f pulse device=playback-device
# Plays to default device not the specified one

ffmpeg -i INPUT -device playback-device -f pulse
# At least one output file must be specified
Run Code Online (Sandbox Code Playgroud)

该设备在那里:

$ pactl list …
Run Code Online (Sandbox Code Playgroud)

ffmpeg pulseaudio

4
推荐指数
1
解决办法
9440
查看次数

长期存在的CTCallCenter实例不显示任何调用,也从不调用事件处理程序

CTCallCenter在启动后创建了一个实例(alloc/init).永远不会调用事件处理程序(既不是NSLog也不是breakpoint火).如果我稍后询问它当前的调用它返回nil.如果我同时打电话[[[CTCallCenter alloc] init] currentCalls],那么它确实会回电话.

作为示例,当一个调用处于活动状态时(我将应用程序带回到前台并且计时器稍后被触发)这里是一个NSLog显示长期存在的CTCallCenter实例,它返回currentCalls的内容以及新的瞬态实例返回的内容:

CTCallCenter(0x1e5639c0): {
    server_connection: 0x1e5640e0   currentCalls: {(
)}  callEventHandler: 0xa0c90
}

(null) 

{(
    CTCall (0x1e5a0fb0) {
    callState: [CTCallStateIncoming]
    Call ID: [1EB2A082-4A12-48C2-A76C-2244F8F402EE]
}

)}
Run Code Online (Sandbox Code Playgroud)

很明显,有一个处理程序注册,并且长期存在的实例认为没有调用.我很高兴总是使用瞬态实例来获取调用列表,但我真的需要触发事件处理程序.

xcode objective-c ios

2
推荐指数
1
解决办法
1021
查看次数