如何为Android shell构建可执行文件
有时我需要在设备上运行命令或脚本,但是它们不可用或不存在. 我们可以在Android设备的shell中添加一些其他命令 除了那些已经可用的命令吗? 例如,在我的设备上添加screenrecord命令(我的设备的Android API低于19),这在其上不可用. 我知道如何使用adb shell 在设备上获取可用命令的列表 adb shell ls /system/bin ,但我想添加更多自定义命令和脚本,以做一些特殊的工作. 有什么方法可以做到吗?还是不可能? 解决方案 答案提供了一系列步骤,用于通过Eclipse(过时的)和Android Studio(到4.1+之前)为Android shell构建可执行文件.最后一个包括ndk-build和CMake. i.准备源代码 为例,请考虑mycommand.c: #include int main() { printf("My Command!\n"
0 2024-02-17
编程技术问答社区
FFmpeg: java.lang.UnsatisfiedLinkError while calling Runnable class
我需要获取图片文件和一个音频文件并创建视频. 我知道可以在 的帮助下做 Runtime.getRuntime().exec("ffmpeg -i image.jpeg -i audio.mp3 out.avi") 但仅适用于扎根的设备,因此我尝试从ffmpeg.c为main()创建JNI包装器,并从我的活动中调用它: http://demo860.blogspot.com/2010/2010/07/android-ffmfmpeg-ffmpeg-dynamic-module-module-module-module-jni.html 1.该代码在ffmpeg.c中: int m_argc = 0; char *m_pargv [30]; int dynamic_ffpmeg_main (int argc, char **argv); jint JNICALL Java_com_ccmedia_codec_ffmpeg_mod_1run ( JNIEnv *, jc
0 2024-02-11
编程技术问答社区
如何为二进制可执行文件创建一个APK文件?
我已经在C ++上编写了GUI应用程序,并为ARM处理器构建并进行了验证,该应用程序在Andronix模拟环境中在Android上运行.现在问题是:如何在没有任何模拟环境的情况下在本机上启用此应用程序?我想创建一个以通常方式安装它的APK文件.是否有任何工具,可以创建APK文件并将可执行文件打包到其中? 解决方案 您可以创建和Android NDK项目并使用C ++可执行文件创建APK. 官方帮助在这里 其他解决方案 但是,Android中的APK基本上是包含元数据的ZIP文件,而编译的代码为a dex文件.通常,您通常会使用一个平台,例如如果您真的想从头开始实现事物,则可能需要将应用程序编译到JAR文件中,然后使用 d2j .
0 2024-02-07
编程技术问答社区
在android终端模拟器中执行python脚本
我在Android设备中安装了Python 2.7,并尝试通过在终端模拟器中键入命令来执行Python脚本.问题是,尽管我使用完整的路径来python出现以下错误: link_image[1997]: failed to link ./python CANNOT LINK EXECUTABLE. 我尝试在./~bashrc中添加环境变量,但我没有做到.有什么想法吗? 解决方案 好的,它已解决.我遵循了这些步骤( http://code.google.com/p/python-for-android/wiki/runpythonfromshell ),但首先,我必须将文件natdalone_python.sh放入/data///data//data/,因为在sdcard中,我无权执行.最后使用" su",我把它作为root运行.
2 2024-02-04
编程技术问答社区
如何在Android中制作软件的可执行版本?
我几乎已经完成了我在Android的项目,现在我想制作应用程序的可执行版本. 我需要以.exe形式作为柔软的应用与模拟器上的exe形式一起演示,而不是通过eclipse的构建和调试过程. 解决方案 转到您的bin文件夹,寻找您的 [appname].apk 文件. Eclipse应该在建立您的项目时建立一个.然后,您可以将此APK移至设备并安装它! (使用诸如Astro之类的文件资源管理器并启用可以安装非市场应用程序).
0 2024-02-01
编程技术问答社区
导致 "从共享对象映射段失败:操作不允许 "的可能原因是什么,以及如何进行调试?
我有两个可执行文件,都在Android中运行.我已经将两个都放在同一目录中的设备上.我将所有共享库放在同一目录中,包括LD-Linux.so.3.我通过使用: 运行可执行文件 ld-linux.so.3 - library-path/path/to/libraries executable_name 在以任何用户身份运行时,两者都在较旧版本的Android上工作.两者都可以在最新版本的Android上使用,如果运行为root.当以任何用户而运行时,只有一个在最新版本的Android上工作.相反,它给出: 无法从共享对象映射段:executable_name操作不允许 如何找出与无法运行的可执行文件有什么不同? 我在网上阅读了很多,大多数遇到此错误的人: a)没有对其依赖或可执行的库之一执行权限. 或 b)试图从安装为noexec的目录中运行. 这两个似乎都不是这样.它可以找到所有库,我可以自己加载任何库,看看它取决于解决的其他内容.另外
28 2024-01-30
编程技术问答社区
在Android操作系统上运行一个Haskell程序
预言:这是/r/r/haskell ">/r/haskell 让我们从事实开始: Android是一个很棒的操作系统 Haskell是地球上最好的编程语言 因此,很明显,将它们结合起来会使Android开发变得更好.因此,从本质上讲,我想知道如何为Android OS编写Haskell程序.我的问题是: 如何获得Haskell程序在Android OS上执行/运行? 解决方案 最近引起我注意的一种语言是 eta . ETA的编译器是GHC 7.10的叉子,具有JVM后端.可以使用生成的JAR文件编写Android应用程序,甚至使用其外部功能接口来调用本机Android Java库. 布莱恩·麦肯纳(Brian McKenna)撰写了一篇博客文章,涉及如何配置Android Studio项目以使用ETA库 . 其他解决方案 首先要获得一个可以用Android NDK来定位C的Haskell编译器,该编译器与Android NDK有关,该
0 2024-01-30
编程技术问答社区
在安卓29上运行的可执行文件应放在什么路径?
我的Android应用程序包含一组可执行文件,这些可执行文件被提取到App Directory(/data/data/data/%package%/).如果针对Android 28(targetSdkVersion),则可以正常工作.自2020年11月2日以来,它不允许在Google Play和所有应用中必须目标29.因此,它停止使用许可异常. 现在应该将哪些可执行文件输入哪些目录? ps.一些类似的应用具有同样的问题. . 解决方案 . 针对API 29(Android 10/Q)或更高版本时,不再有可能执行存储在应用程序主目录(数据)中的文件的权限,这正是您所描述的(/data/data/data/%包装%/). 在提交中引入了此Android 10修改:随后Google正式确认: https://issuetracker.google.com/issues/128554619 各种项目正在讨论这一重大变化例如.一种推荐的,(希望)对未来的方式是提取程
0 2024-01-29
编程技术问答社区
是否有可能将一个可执行文件做成jar,使其可以从Java中运行?
简单地说,我需要能够将编译后的可执行文件粘贴在Java Jar文件中,然后能够从Java运行(可能是通过ProcessBuilder). 为什么是,我想在ImageMagick上使用Java包装器作为图像处理弹性映射的组成部分减少作业. EMR只期望将一个JAR文件取,所以我认为在旋转的数据节点上安装软件没有任何空间. 解决方案 可执行文件中的可执行文件是资源,您可以通过流访问它并将可执行文件扩展到临时目录,然后使用ProcessBuilder执行. File target = new File( System.getProperty( "java.io.tmpdir" ), ); InputStream is = getClass().getClassLoader().getResourceAsStream( ); OutputStream os = new FileOutPutStream( target )
6 2024-01-24
编程技术问答社区
-bash 没有这样的文件或目录,但它存在
我已经用ruby标志重新编译了command-t的vim,我编写了一个脚本,该脚本将在我介入的任何机器上自动执行此操作(并运行脚本),但是我的问题是我遇到的是,当我别名新汇编的vim时,bash向我抛出了没有这样的文件或目录.这是我所拥有的: 这很好: $ alias v="~/Code/vim" 但是,当我将同一条线放在.bashrc中时,我得到了: -bash: =~/Code/vim: No such file or directory 甚至更有趣,我将其放在.bashrc中: [ -e "~/Code/vim" ] && echo "found it!" 打印"找到它!" 我不确定这是否是一个权限问题,但无论如何我都会把它们放在这里: -rwxr-xr-x 1 buf staff 2374400 Sep 17 16:27 /Users/buf/Code/vim 我在做什么错?我正在运行Mac OS X 10.7 解
4 2024-01-23
编程技术问答社区
如何使用 ActionScript 从 Flash SWF 启动 EXE?
我希望我的Flash SWF从本机操作系统打开外部EXE,我尝试了: protected function LaunchExe():void { flash.system.fscommand("exec","Test.exe"); } 但是什么也没有发生.我在此命令上做错了什么,还是我需要完全不同的事情? 解决方案 它仅在投影仪文件(可执行闪存)中起作用,如果您像这样运行,则试图启动的应用程序应在 fscommand fscommand 的子目录中. 来自 EXEC命令仅在子目录FSCommand中运行.换句话说,如果您使用Exec命令调用应用程序,则该应用程序必须位于名为FSCommand的子目录中. Exec命令仅在闪存投影仪文件中工作.
4 2024-01-09
编程技术问答社区
如何知道你建立的iOS应用是否为64位。
我试图以64位构建iOS应用程序.我怎么知道天气是建立32位或64位的? Mach-O-View可以帮助您吗?如果是,在哪里寻找它? 还有任何命令行. ? 我对此进行了反复,但它并没有帮助我知道它是在64位建造的. https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html#//apple_ref/doc/uid/TP40013501-CH3 -sw1 解决方案 尝试以下方法: #ifdef __LP64__ // NSLog(@"64"); #else // NSLog(@"32"); #endif 它适用于OS X,但我没有为iOS进行测试(我没有iPhone5s :(). 编辑: 顺便说一句,它在iPh
0 2024-01-08
编程技术问答社区
确定一个可执行文件(或库)是32位还是64位(在Windows上)。
我试图找出来自python的32位或64位的给定可执行(或库)是否编译.我正在运行Vista 64位,并想确定目录中的某个应用程序是否用于32位或64位. 是否只使用标准Python库(当前使用2.5.4)来执行此操作? 解决方案 这是import win32file type=GetBinaryType("myfile.exe") if type==win32file.SCS_32BIT_BINARY: print "32 bit" # And so on 如果您想在没有pywin32的情况下执行此操作,则必须阅读 pe Header 你自己.这是import struct IMAGE_FILE_MACHINE_I386=332 IMAGE_FILE_MACHINE_IA64=512 IMAGE_FILE_MACHINE_AMD64=34404 f=open("c:\windows\explorer.exe", "rb") s=f.read(2) if s!="MZ
2 2024-01-08
编程技术问答社区
从DOS到Windows 10的组装
此代码将打印"你好,世界!"在DOS中作为A .COM可执行文件: org 100h mov dx,msg mov ah,9 int 21h mov ah,4Ch int 21h msg db 'Hello, world!',0Dh,0Ah,'$' 但是,它不会在Windows 10 64位上运行,并且我看到的x86和x64的Helloworld程序的所有琐碎示例涉及链接到某个库. 所以我的问题是这些后来的Windows是否仍然遵循ISR IO模型,或更简单地将此示例转换为"更高的位置"? 解决方案 您不仅在Windows 10中,而且在任何以受保护模式运行应用程序的Windows(Windows NT 3和较新)中做到这一点 - 该应用程序无法直接访问中断和HW.此外,可执行格式本身是OS依赖性的.尽管有一些向后的兼容性(例如Win10应该能够运行Win7应用程序),但它绝对不会追溯到DOS Days(根据定义,.com格式仅限于实际模式,而在Win NT 3中
2 2024-01-08
编程技术问答社区
我如何确定我正在安装的应用程序是32位还是64位?
我希望能够预测应用程序的默认安装位置.在64位计算机上,如果是32位应用程序,它将安装在"程序文件(x86)"中,如果它是64位应用程序,则将安装在"程序文件"中. 我的目标是在默认位置安装应用程序,并验证安装是否正常.但是为此,我需要知道将其安装在哪里.如果我知道该应用程序的构建是为了我的目的. 解决方案 如果您可以使用外部工具,则 distionency Walker ,sysinternals' sigcheck ,MSVC的Dumpbin或Corflags ...但是可能会让很多人感到惊讶的人是 7zip .它内部有一个小的file - 类似于l选项 的实用程序 C:\>7z l "C:\Program Files (x86)\Windows Photo Viewer\ImagingDevices.exe" | findstr CPU CPU = x86 C:\>7z l "C:\Program Files\Windows Photo Viewer\Imagi
0 2024-01-08
编程技术问答社区
如何将64位和32位的可执行文件绑定成一个?
好吧,我的想法是将64位和32位Windows oputables绑定到一个应用程序中的某种方法,因此,如果它不运行64位版本,则会尝试32位. > 我正在阅读有关PE的有关PE的信息,并了解了MS-DOS真实模式存根的一些信息,并说明了它如何调用应用程序(通常是错误消息).但是,每当我尝试研究MS-DOS真实模式存根时,似乎只会显示错误消息.所以我的想法是用我的32位应用程序覆盖存根. 我的自我幼稚,何时32位操作系统运行64位可执行文件,然后运行存根文件. 有什么方法可以使我的可执行文件32位/64位独立? 解决方案 您无法创建一个包含x86和x64代码的单个可执行文件.但是,您可以创建单独的32位和64位应用程序,将应用程序x64应用程序添加到x86应用程序资源中.在程序启动时,您可以检查您正在使用IsWow64Process运行x64环境 其他解决方案 有 fat binaries 在macos,linux和dos中 - 温登),但不是32和64位Win
0 2024-01-08
编程技术问答社区
执行格式错误 32位可执行的Windows Subsystem for Linux?
当我尝试执行使用gcc -m32 main.c -o main on Windows子系统的Linux 上的32位文件时,我会收到以下错误:bash: ./main: cannot execute binary file: Exec format error. 如果我对其进行编译没有 -m32它运行. 在WSL上运行32位可执行文件的任何解决方案? 解决方案 WSL(尚未提供)尚未提供32位ELF支持.由于Uservoice被提升,似乎没有任何进展 - 您很幸运. 参见 uservoice:请在内核中添加32位Elf支持和支持32位I386 Elf binaries . 如果可能的话,切换到真实 linux; - ) 由于最初发布了此支持,因此已在WSL2上获得了支持,该支持确实支持真实的Linux内核!这应该是首选的方式. 如链接其他解决方案 QEMU和BINFMT支持光线:) Issuecomment-374904520 阅读
0 2024-01-08
编程技术问答社区
获取汇编可执行目录
我有两个应用程序,例如App1和App2. 正常运行时,App1将显示其汇编可执行的位置. 但是,当我从App2调用App1时,它返回App2的启动位置. 那么,当我从app2调用app1时,如何获得app1的启动路径? 解决方案 您可以使用以下方式获取当前执行程序集的目录: string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 执行程序集和Location是该组件的完整路径或UNC路径. Path.GetDirectoryName()返回完整路径的目录. 请注意,组件的路径与启动路径不同.启动路径是您启动应用程序的工作目录.如果您的应用不更改它的工作目录,则所有由第一个应用程序启动的应用都将具有相同的启动路径.
0 2024-01-08
编程技术问答社区
在C#.NET 2中像explorer那样获取可执行文件的程序版本
如果我在可执行文件上右键单击Explorer,然后选择"属性".然后在"属性"对话框中选择"选项卡""版本".然后,我单击"产品".这是我需要用C#获得的价值. 我使用" fileversioninfo.productucterion"尝试了一下,但是如果我进入资源管理器" 1.85" FileversionInfo将返回我的怪异值,例如:1,00000,8,00.点变成逗号,最后数字被剥离.如果那很重要,我在Win 7 64位上使用Net 2. FileVersionInfo不会返回我的期望或Explorer的作用. 我还尝试了" fileversioninfo.fileversion",但它以某种方式返回与fileversioninfo.productuction的奇怪值相同.在Explorer View中,在原始FileProperties对话框窗口中,文件Version和Productersion之间存在明显的区别. .NET及其FileVersionInfo类不会以这种方式显示
2 2024-01-07
编程技术问答社区
如何判断一个win32应用程序是否使用了.NET运行时间?
我如何确定可执行文件是否是.NET应用程序? 我不必必须安装Visual Studio.但是,如果我有必要.首选命令行程序. 解决方案 PEVerify将做到这一点:) 其他解决方案 如果应用程序需要mscoree.dll运行,则可以执行一个.NET.您可以使用 distionency walker ,但总的来说跑步会. 如果您想知道运行过程是否是.NET流程,我只能推荐 Process Explorer .此工具将为您提供有关该过程的大量信息,包括一些.NET属性. 其他解决方案 或更简单:使用Process Explorer.免费下载在这里
4 2024-01-03
编程技术问答社区