我对Android aps中本机代码的生命周期有些困惑.我看到过引用,说本机代码是在Dalvik VM中执行的,但这是真的吗?我的印象是VM只运行Dalvik字节码.另一方面,本机代码使用JNI,它可以从VM内部的Java调用.最后,NativeActivity的使用有何不同?
我以为我对NDK的了解相当不错,直到我坐下来试图向自己解释.我甚至不确定我是否以明智的方式提出这个问题.
我正在使用CrawlSpider类来抓取网站,我想修改每个请求中发送的标头.具体来说,我想将referer添加到请求中.
根据这个问题,我查了一下
response.request.headers.get('Referer', None)
Run Code Online (Sandbox Code Playgroud)
在我的响应解析功能和Referer标头不存在.我认为这意味着请求中没有提交Referer(除非网站没有返回它,我不确定).
我无法弄清楚如何修改请求的标头.我的蜘蛛再次来自CrawlSpider.覆盖CrawlSpider _requests_to_follow或指定process_request规则的回调将不起作用,因为在这些时候引用不在范围内.
有谁知道如何动态修改请求标头?
我在Dell Latitude D820上的VirtualBox中设置了一个Android-x86映像(4.0-RC1-eeepc).这个特殊的ISO不适用于笔记本电脑,但是在所有可用的ISO中它都是最好的.
我已经解决了我遇到的一些麻烦(没有为我的设备提供ISO),但我无法使声音正常工作.Android-x86 VirtualBox教程和其他在线资源指示我使用SoundBlaster 16的ALSA驱动程序,但这没有用.
这个问题让我看看一些ALSA命令,看看我能找到什么,但我没有随处可见.
使用ALSA驱动程序和SoundBlaster控制器,我得到以下内容 alsa_ctl init
Unknown hardware: "Dummy" "Dummy Mixer"
Hardware is initialized using a guess method
Run Code Online (Sandbox Code Playgroud)
对我来说这看起来非常不对,所以切换到英特尔高清音频就像其他问题那样.
使用ALSA驱动程序和Intel HD Audio控制器,我得到以下信息 alsa_ctl init
Unknown hardware: "HDA-Intel" "SigmaTel ID 7680" ...
Hardware is initialized using a guess method
Run Code Online (Sandbox Code Playgroud)
虽然这看起来更有希望,但我仍然没有音频.
由于Android 基本上是Linux,我以为我能够翻译Linux解决方案.几个网页的内容与此类似,说要修改/etc/modprobe.d/alsa-base.conf和添加options snd-hda-intel model=CORRECT_MODEL,这似乎可以帮助很多Linux用户.但是,这似乎不适用于Android.至少不是我,因为我没有alsa-base.conf
我对音频和ALSA知之甚少.是否有任何跳出我上面的东西?即使是大方向的推动也会很棒.
我有一些问题:当我收到Unknown hardware: "Dummy"信息时它意味着什么?没有音频设备?
最后,我已经验证我的声音在虚拟盒子之外工作.我的第一个经历是,由于我的笔记本电脑可以运行带有声音的Linux,我应该可以在Android中包含Linux驱动程序.这有任何意义吗?不幸的是,我也不知道如何去做.
谢谢
我认为这个问题很简单(也许是愚蠢的)可以回答,但经过近两个小时的谷歌搜索,我已经被淘汰了.我很确定我的问题是因为我只是不明白语法在做什么.
我正在看IDA中的一些反汇编代码,我不知道以下是做什么的:
mov dl, byte_404580[eax]
Run Code Online (Sandbox Code Playgroud)
如果我跳到byte_404580我发现.data:00404580 byte_404580 db 69h告诉我价值是0x69.但我不知道如何使用它.
让我提供此代码出现的上下文:
mov eax, 0x73 ; Move hex 73 to EAX
and eax, 0x0F ; Keep lower half of EAX
mov dl, byte_404580[eax] ; MAGIC
Run Code Online (Sandbox Code Playgroud)
由于上面的假设EAX最初是0x73,我得到DL= 0x76.我试过改变值EAX找到一些模式,但我还没弄清楚发生了什么.
我正在编写一个Android应用程序,我需要从该帐户请求一个Auth令牌.获取帐户列表和令牌很容易,我到目前为止工作.
问题是Jelly Bean打开一个弹出窗口,要求用户许可.现在我的问题:
有没有办法找出弹出窗口是否会在请求authtoken 之前出现,即等到它不再需要(例如,如果用户安装了相关的应用程序但从未使用过,或者authtoken是否已过期?)然后请求它?
我知道大多数Android用户都非常缺乏经验,并且可能会因为一些权限请求而感到害怕,我想避免在触发此用户弹出窗口时请求authtoken.
java android access-token android-authenticator android-4.2-jelly-bean
这不是"我该如何使用这些?" 以及"我何时/为何使用这些?" 类型问题.
编辑:这个问题几乎与这个问题重复,建议使用下载中间件来过滤此类请求.更新了我的问题以反映这一点.
在Scrapy CrawlSpider文档中,规则接受两个callables process_links和process_request(下面引用的文档以便于参考).
默认情况下,Scrapy会过滤重复的URL,但我希望对请求进行额外的过滤,因为我会获得具有链接到它们的多个不同 URL 的页面副本.像,
URL1 = "http://example.com/somePage.php?id=XYZ&otherParam=fluffyKittens"
URL2 = "http://example.com/somePage.php?id=XYZ&otherParam=scruffyPuppies"
Run Code Online (Sandbox Code Playgroud)
但是,这些URL在查询字符串中将具有类似的元素 - 上面显示的是id.
我认为使用process_links我的蜘蛛的可调用来过滤掉重复的请求是有意义的.
问题:
process_request可以更好地适应这项任务吗?process_request更适用的例子?process_links还是process_request?如果是这样,您能提供何时process_links或process_request将会是更好的解决方案的示例?文件报价:
process_links是一个可调用的或一个字符串(在这种情况下,将使用来自具有该名称的spider对象的方法),将使用指定的link_extractor为每个响应中提取的每个链接列表调用该方法.这主要用于过滤目的.
process_request是一个可调用的,或一个字符串(在这种情况下,将使用来自具有该名称的spider对象的方法),该方法将被此规则提取的每个请求调用,并且必须返回请求或None(以过滤掉请求) ).
我先做了一些搜索,但仍然有一个问题。
远远地,我找到的最好的答案就在这个SO 答案中。总结:
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE);
我想知道的是下面的方法是否也同样有效(因为我懒得改变它,而且我碰巧喜欢它)。
SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1
根据我们拥有的SQLite 自动增量文档,
如果插入时未指定 ROWID,或者指定的 ROWID 值为 NULL,则会自动创建适当的 ROWID。通常的算法是为新创建的行指定一个比插入之前表中最大 ROWID 大 1 的 ROWID。如果表最初为空,则使用 ROWID 1。[强调]
并进一步,
只要您从不使用最大 ROWID 值并且从不删除表中具有最大 ROWID 的条目,上述普通 ROWID 选择算法就会生成单调递增的唯一 ROWID。如果您删除了行或者创建了具有最大可能 ROWID 的行,则在创建新行时可能会重用以前删除的行中的 ROWID,并且新创建的 ROWID 可能不会严格按升序排列。 [强调]
我对我提出的 SQL 语句的疑问来自最后一句话。这似乎表明,如果删除任何行,则可以重用之前删除的 ROWID,无论是否已使用最大 ROWID。如果我们假设最大 ROWID 从未被使用过(手动或仅被那么多记录使用),那么我们只需要担心删除记录。在这种情况下,第一个 SQLite 文档摘录听起来好像您不会在我的查询中遇到任何问题。
有人有确切消息么?
我喜欢我的查询,因为它只涉及一个选择(尽管以订单为代价)。我想,我可能过于关注微小的优化,不是吗?
编辑:实际上,重新查看上面引用的 SQLite 页面,我认为使用 AUTOINCRMENT 关键字可以保证单调递增的 ROWID。最后一节详细讨论了这一点。
如果列的类型为 …
android ×4
assembly ×2
python ×2
scrapy ×2
x86 ×2
access-token ×1
alsa ×1
android-ndk ×1
android-x86 ×1
debugging ×1
ida ×1
java ×1
mov ×1
sql ×1
sqlite ×1
web-crawler ×1