Android本机应用程序命令行参数
Android native application command line arguments
我有:
void android_main(struct android_app* state)
是否可以从android_app
结构获取用于启动应用程序的命令行参数?如果没有,有没有其他方法可以让它们使用C++调用(我不会使用Java代码)?
Android应用程序进程没有应用程序唯一的命令行参数,因为没有执行()调用来启动它们。
通常,当shell启动一个程序时,它会分叉自己创建一个新进程,然后在该进程中立即调用exec(),用正在执行的程序映像替换shell程序映像。argc&argv变量是从传递给exec()的参数派生而来的。
但在安卓系统上,由于各种原因,包括在系统范围内共享代码页,所有正常的应用程序进程都是一个名为"合子"的进程的专门子进程。不进行exec()调用,而是在fork之后,将实现应用程序的代码简单地加载到进程中,并将其userid降级为应用程序的userid。因为没有exec()调用来建立新的命令行参数,所以进程唯一可用的参数是那些在Android运行时启动期间用于启动原始合子进程的参数。这些可能包括vm运行模式选项,但没有关于特定应用程序的任何选项。
应用程序进程以及其中的活动或服务对象是响应Intents而启动的。正如评论中所指出的,Intent对象有许多对接收器可见的参数,其中一些参数的作用与更传统的系统中的命令行参数非常相似。从功能上讲,Intent对象的那些字段是有用的。
正如Nobu Games在评论中指出的那样,"Native Activity"在功能上并没有什么不同——它仍然是一个常规的基于虚拟机的应用程序,有很多关键的Java代码,只是第三方开发人员只编写jni库,必要的Java代码已经与系统打包。
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 是否可以在命令行中将输入参数传递给可执行文件
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 从命令行获取参数时出现问题
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 使用参数 + stdout + stderr 从命令行调用 MFC 应用程序
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数