从有根的Android应用程序中运行二进制
我想在/dev/local上运行一个名为本机的二进制文件(我通过root许可将其推开). 为了实现这一目标,我编写了以下代码: try { root=Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(root.getOutputStream()); DataInputStream osRes = new DataInputStream(root.getInputStream()); os.writeBytes("/data/local/native\n"); os.flush(); TextView output=(TextView)findViewById(R.id.textview); output.append(osRes.readLine());
0 2024-02-17
编程技术问答社区
Android NDK是否支持大多数UNIX系统调用?
我正在尝试修复,然后移植一个旧项目,用C在Android上运行.该项目使用系统调用,例如stat(文件,inode)和系统(命令). 这些功能是否在Android NDK中得到了完全支持?还是我会更好地重写Java的整个项目? 解决方案 是的,您可以使用Android NDK使用系统调用和LIBC功能. system() - blob/master/libc/docs/overview.txt >
0 2024-02-17
编程技术问答社区
升级到Lollipop后,32位设备上的Android NDK mmap调用出现故障
我试图抓住784 MIB的内存.是的,我知道这对于32位手机来说很多,但是以下电话在Android 5.0之前可以使用: mmap(0, 0x31000000, PROT_NONE, MAP_ANON | MAP_SHARED, -1, 0); 但是,在不同制造商的三个不同设备上,升级到Android 5.0都打破了这一点.我认为这是5.0中内存分配功能的一些变化;也许需要传递不同的标志? 这是logcat中返回的错误消息: E/libc﹕ mmap fail (pid 9994, tid 10125, size 822083584, flags 0x21, errno 12(Out of memory)) 解决方案 在mmap()失败的点,打开/proc/self/maps并将内容复制到临时文件,然后在编辑器中检查文件.您应该看到一堆类似的条目: 12e01000-42c00000 ---p 00201000 00:04 11639 /dev
0 2024-02-17
编程技术问答社区
在Android 4.2.2上安装libhoudini(ARM仿真)。仿真器
大约3天尝试并尝试放弃. 我已经尝试安装libhoudini( http:///android-x86.sceners .org/en/?p = 536 )在Android 4.2.2模拟器上.我需要一个项目. 我知道Genymotion和Androvm的存在,但我不需要虚拟框图像,我需要在Intel X86上运行带有手臂的模拟器. 我还试图从运行的基因抗病分散分散的YAFFS2图像中迁移到Android-SDK \ System-Imimages \ Android-17 \ x86.不幸的是,这行不通. 所以我希望有人可以帮助我和/或将我指向正确的方向.因此,我需要的是:安装了扎根设备和Libhoudini的系统图像\ Android-17文件夹内容. 我不知道是否是这个问题的地方,但我愿意为我付钱给我创建这个问题,因为这对商业项目非常重要. 更新14-10:仍然不再进一步.有什么想法吗? 解决方案 好吧,我不知道为什么您有一些反对基因抗病
0 2024-02-14
编程技术问答社区
安卓的JSON时间从Unix转换
我早些时候问了这个问题,并得到了一些很好的反馈,但是我仍然无法正确运行我的程序.基础知识:它是一个调度应用程序.我正在尝试将JSON提要中的一个字段转换为可读的时间/日期,并在我的ListView适配器中显示.在下面的代码中,我将拉动一个称为" showdate"的字符串,其中包含UNIX时间戳.现在(在添加SimpleDateFormat之前)字符串显示UNIX代码.当我添加SimpleDateFormat时,我的活动会在负载上崩溃.我认为我只是标记错误或位置错误.任何帮助都将受到赞赏.我包括了我的活动的代码和收到的logcat错误. public class Schedule extends ListActivity { protected EditText searchText; protected SQLiteDatabase db; protected Cursor cursor; protected TextView textView; protected Image
0 2024-02-11
编程技术问答社区
如何在一行中输入adb shell命令?
我想在一行中键入多个adb shell命令,例如,我想一起键入adb shell和su和cd sys.我试图将它们与&&和& bzw. adb shell && su && cd sys, 连接起来,但似乎不适用于ADB命令,而是与Windows命令一起使用. 有人知道有什么问题吗? 解决方案 我自己soved adb shell "su -c 'cd sys'"
0 2024-02-07
编程技术问答社区
基于ASHMEM的SHM替换
我正在从 *nix到Android的库端口上工作,并且该库使用共享内存或shm. Android没有系统V shm.相反,它使用ashmem. 有人知道要映射shm调用ashmem的垫片库吗? Google并不是很有帮助. 解决方案 这是在处理类似的移植问题时对我有效的方式: 而不是使用shmfd = open(shm_path,o_rdwr)来创建和获取文件描述符,我用 替换了它 int fd = ashmem_create_region("SharedRegionName", size); 并使用文件描述符获取基础地址: int base_address = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); 您可以使用返回描述符的本机函数将base_address从本机代码传递到Java代码. Android拥有一个名为MemoryFile的Ashmem的包装类.您也
0 2024-02-05
编程技术问答社区
如何从终端打开一个URL
我正在编写一个脚本以在Android的终端上运行,我需要它打开浏览器和URL. 我设法打开了浏览器,但没有找到将U​​RL放在上面的方法. am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity; 感谢任何帮助:) 解决方案 只需使用Intent.ACTION_VIEW(即android.intent.action.VIEW),例如: am start -a android.intent.action.VIEW -d http://www.xing.de 以这种方式启动了Xing网站.如果安装了多个浏览器,则当然可以添加要启动的浏览器的组件名称,例如: am start -a android.intent.action.VIEW -n com.android.browser/.BrowserActivity -d http://www
2 2024-02-04
编程技术问答社区
在Android中处理unix信号
我正在编写一个使用命名管与C ++应用程序对话的Java应用程序.当C ++应用去世时,Java会获得Sigpipe,Java应用程序死亡. 在C/C ++上,我知道如何捕获该信号并忽略它.是否可以在Android/Java上做类似的事情? 解决方案 看来这是不可能的.最佳解决方案是添加关闭的钩子并"优雅地"重新启动应用程序,如下所述: 编辑: 我需要这个,因为(当时)我有JNI代码在上面打开了FD和R/W.将FD打开到指定的插座(UNIX管道),当管道的远端(在我的情况下为守护程序或Android C/Service)关闭连接(或死亡)时,您的侧面将获得信号.这并不总是很好.恕我直言,最好处理此操作,应该使用良好的旧纯c代码中的信号处理程序,然后吞下它(否则 - 您应该通知应用程序的Java侧). http://stackoverflow.com/questions/2541597/how-to-to-to-to-gracefully handle-the-
2 2024-02-04
编程技术问答社区
安卓本地服务器插座
在Android中,有两个类LocalserVersocket和Localsocket.我认为它们像Unix插座中的Af_local(我不确定是否正确). 我的问题是: 是否可以在Java中创建LocalServerSocket,并使用普通的Unix插座客户端在本机或其他过程中连接到它? 如果可能的话,我应该在本机中设置什么" sockaddr_un.sun_path"? 我编写了一个示例项目来测试它,然后我尝试设置.sun_path与LocalServerSocket中使用的字符串名称相同,但是失败了,本机无法连接到Java LocalserServerSocket. . 我的Java代码: package test.socket; import java.io.IOException; import java.io.InputStream; import android.app.Activity; import android.bluetooth.
2 2024-02-03
编程技术问答社区
如何处理安卓手机中的串口?
实际上我对串行端口不了解.但是我看到了向其发送的示例: echo -e "AT" > /dev/smd0 什么是/dev/smd0,以及为什么他们有时用/dev/ttys0替换它. 解决方案 /dev/smd0和/dev/ttyS0是设备文件.这样的文件是虚拟文件提供一个文件I/O操作接口,用于与某些类似的类似的操作接口例如,硬件资源(例如串行端口,硬盘和内存),或使用非硬件资源(如过程信息,随机数输入,终端屏幕输出等)等非硬件资源 设备文件有两种口味,字符和块.串行端口是字符设备,您可以用c验证ls -l输出中的第一个字符: $ ls -l /dev/ttyS0 crw-rw----. 1 root dialout 4, 64 Apr 7 00:25 /dev/ttyS0 $ /dev/ttyS0是Linux台式计算机上的串行端口的设备名称,对应于DOS/Windows中的COM1(在使用Linux /dev/cua的非常早期,您可能会偶尔会遇到参考文献
6 2024-01-30
编程技术问答社区
Java简单的时间戳到日期的转换
今天我一直在尝试找到答案,并且有很多矛盾的信息.. 我想做的是在Android中获取当前的Unix Timestamp,然后将其转换为一种格式,使我可以gethours()和getMinutes(). 我目前正在这样做: int time = (int) (System.currentTimeMillis()); Timestamp ts = new Timestamp(time); mHour = ts.getHours(); mMinute = ts.getMinutes(); ,但这并没有给我一个小时或分钟的正确价值(当前的东海岸时间为13:33的时间为03:38). 解决方案 这有效: final Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(System.currentTimeMillis()); Date date = cal.getTime(); mHour = da
0 2024-01-29
编程技术问答社区
如何在Conda环境下从MATLAB中运行Python脚本?
我正在编写一个包裹来给别人的软件包,因此我正在尝试进行安装,依赖关系和尽可能简单.该软件包的顶级呼叫在MATLAB中,但在某一时刻,我想从MATLAB函数中运行Python脚本.我不知道用户是在UNIX还是Windows上.到目前为止,我已经为我的Python脚本使用了Conda环境,因为它使用了特定版本的Scipy和TensorFlow. 是否有一种独立于平台的方法来激活Conda环境并调用Matlab的Python脚本?甚至更好,在MATLAB脚本的子目录中拥有Python(及其依赖项)的副本,例如,我可以在USB棒上提供整个软件包,而不必担心不同的Python安装? 感谢您的任何见解. 解决方案 没有一种独立于平台的方法来使MATLAB使用conda环境.但是,正如我在您不需要需要在使用MATLAB之前激活conda环境,以便您的问题的一部分是模拟的. MATLAB只是使用解释器,因此,只要所有必要的库都安装在conda环境中,您的Python代码就会从Matl
10 2024-01-26
编程技术问答社区
从zmq.error.ZMQError中恢复。地址已在使用中
我在运行PAIR模式(非阻止客户端服务器)与ZMQ连接时达到了Ctrl-C.稍后,当我尝试运行REQ-REP(阻止客户端单服务器连接)模式时,我会不断获得Address already in use错误.我尝试使用netstat -ltnp | grep :运行Netstat,但这并未列出任何过程. 那么谁到底在使用此地址? 另外,一个人如何优雅地关闭插座连接? 解决方案 问题1: 如果您在Linux类型操作系统上进行sudo netstat -ltnp,您很可能会看到拥有该端口的过程.用kill -9 . 杀死它 问题2: 退出程序时,关闭插座,然后致电zmq_ctx_destroy().这破坏了上下文.请参阅 . 其他解决方案 此刻: reboot 下一步: 开始使用try:/except:/finally:封装构造函数,这将帮助您授予所有ZMQ分配的优美出口,包括.所有套接字 -s'.close
0 2024-01-26
编程技术问答社区
使用AWS CLI命令添加SQS Redrive策略
我正在尝试使用下面的AWS CLI命令为SQS设置Redrive策略,但是看到与Redrive JSON相关的错误.你能让我知道如何解决这个问题? redrive_policy="{\"RedrivePolicy\":{\"deadLetterTargetArn\":\"$dlq_arn\",\"maxReceiveCount\":\"15\"}}" aws cli命令 aws sqs set-queue-attributes --queue-url https://queue.amazonaws.com/12345678/test-queue --attributes $redrive_policy --region=us-east-1 错误消息 参数验证失败:参数的无效类型 属性.RedrivePolicy,value:orderddict([[((u'deadlettertargetarn',, u'arn:aws:sqs:us-east-1:123456
2 2024-01-26
编程技术问答社区
如何获得两个S3桶之间的文件差异?
所以我有一个S3桶的视频(几百个),我使用ElasticTransCoder将所有内容都编码为第二个,优化的桶. 但是,当我检查第二个存储桶时,对象少了40-50个,但是我无法弄清楚它们是什么(目录结构深嵌套等). 如何使用aws s3api list-objects? 获得两个桶的文件差异 也许在存储桶中有没有视频的文件,我以某种方式不知道. 解决方案 您可以将sync命令与--dryrun选项一起进行比较而不是同步. aws s3 sync s3://bucket s3://bucket2 --dryrun 当然,您也可以使用它将本地目录与水桶进行比较. aws s3 sync . s3://bucket2 --dryrun 其他解决方案 使用仅显示filenames : aws s3 ls s3://bucket-1 --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[
0 2024-01-25
编程技术问答社区
aws s3的 "head "命令,用于查看文件内容
在Linux上,我们通常使用头部/尾部命令预览文件的内容.它有助于查看文件的一部分(例如,检查格式),而不是打开整个文件. 对于Amazon S3,似乎只有LS,CP,MV等=" noreferrer">命令我想知道是否可以使用cp/get在我本地计算机上下载整个文件的一部分. 解决方案 从S3检索数据时,您可以指定一个字节范围,以获取第一个n字节,最后的n个字节或之间的任何内容. (这也很有帮助,因为它允许您并行下载文件 - 只需启动多个线程或进程,每个线程或进程都会检索总计的一部分.) 我不知道哪种CLI工具直接支持这一点,但是范围检索可以完成您想要的. AWS CLI工具(准确地说是" AWS S3 CP")不允许您进行范围检索,而是S3Curl( http://aws.amazon.com/code/128 )应该做到这一点.自己.) 其他解决方案 您可以做的一件事是CP对象进行粗壮,然后将其置于头: aws s3 cp s3://path
2 2024-01-25
编程技术问答社区
如何参数化AWS存储桶名和文件夹名称
EXPORT AWS_profile=albt_alb_dev; aws s3 rm s3://albt-alb-prd-us-east-1-raw/albdev/Test/Folder1/ --recursive --exclude "" --profile $AWS_profile; 我给出了存储牌名称和文件夹名称的硬编码值.我需要参数化上面脚本中使用的存储键名和文件夹名称. 如果存储牌名称和文件夹名称有所不同,我需要相应地对脚本进行更改. 任何人都可以指导如何实现这一目标吗? 谢谢! 解决方案 您可以简单地使用这样的参数: EXPORT AWS_profile=albt_alb_dev; bucketName="albt-alb-prd-us-east-1-raw" folderName="Folder1" aws s3 rm s3://$bucketName/albdev/Test/$folderName/ --recursive --excl
0 2024-01-25
编程技术问答社区
在谷歌云计算实例虚拟机上使用后缀的亚马逊SES
任何人都可以帮助我配置Postfix以与Amazon SES一起使用. 我可以使用sendgrid成功地在此处遵循说明 https://developers.google.com/compute/compute/docs/docs/docs/sending-mail 并且使用sendgrid效果很好. ,但我想调整设置以使用亚马逊SES而不是SendGrid,我什至不确定是否可以使用Google阻止了所有SMTP端口. 任何帮助都非常感谢... 我尝试了这些. http://docs.aws.aws.aws.aws.amazon.com/ses/ses/ses/ses/ses/latest/develovelgevelvepent/developergeguide/postfix.html 但不起作用 运行Debian 7 Google VM实例 解决方案 已经解决了它.如果它帮助其他人Google实例VM可以使用端口2587.我从控制台上毫无疑问,然后使用流行
2 2024-01-24
编程技术问答社区
亚马逊EC2的替代工具?
亚马逊与EC2互动的官方工具有点笨拙,而且很痛苦.我必须设置一堆环境变量,仅存储EC2的单独私钥,在我的路径中添加额外的项目,依此类推.他们所有输出选项卡的划界线路都有数百个字符长,没有标题,因此解释它们有点痛苦.他们设置SSH Keypair的说明为您提供了一个不受密码保护的保护,而不是让您使用现有的按键.这些程序都有点笨拙,不是很好的Unix程序. 那么,是否更容易使用命令行工具来访问EC2?我知道有ElasticFox,并且有基于Web的控制台,这确实使过程更容易,但是我想知道其他人是否编写了更好的命令行工具来与EC2进行交互. 解决方案 我有点晚了,但是我有解决方案! 我发现了Amazon AMI工具的同样问题.它们是一个不错的参考实现,但很难使用,尤其是当您有多个实例以上.我写了一个替换命令行工具作为另一个项目的一部分,称为鲁迪,它回答了您的大多数问题 这些命令比亚马逊的AMI工具更直观: rudy-ec2 instances -C rudy-
2 2024-01-24
编程技术问答社区