我有安装Android Gingerbread 2.3.4的设备在这里我想在Android设备上运行C可执行文件
我能够在Device上运行android NDK应用程序,并且它运行完美但是我想hello.c在Device上只运行一个可执行文件.
/* #includes #defines ... */
int main(){
// Do something when this is executed
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用Android NDK工具链编译这个文件,我们可以运行这个文件的可执行文件
我在这里发现了一件事,但这对我来说不起作用我使用Android NDK, Revision 7blinux没有像这样的目录结构
这里我Android.mk在jni/文件夹中使用了这个文件.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Here we give our module name and source file(s)
LOCAL_MODULE := offlineDownload
LOCAL_SRC_FILES := offline_download.c
LOCAL_SHARED_LIBRARIES :=../lib/libpackext.so.1.0
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
并lib在项目目录中创建一个文件夹并放入我的预构建.so库并生成一个Android.mk包含以下内容的文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := packext
LOCAL_SRC_FILES := libpackext.so.1.0
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
当我使用ndk-build -B命令时,我得到了对packageExtraction的未定义引用.在这里,我使用我的预建库函数意味着我无法将我的预建共享库链接到我的offlinedownload库.
所以任何人都请帮我解决这个问题.
我是Eclipse和ADT的新手,但是已经在两台不同的机器上设置了我的环境,两者都显示了相同的怪异(两者都是Windows 7 64位).
在图形布局和main.xml视图之间更改选项卡时,main.xml视图中的代码行将开始消失或移动.没有视频或动画gif很难显示,但我会尝试使用这些截图:
请注意,我所做的只是突出显示一个文本块,突然间所有这些文件都被忽略了.它使开发有点不愉快.
有什么想法吗?请帮我解决这个问题.
图片 :

我想用SharedPreferencesclass 保存很多字符串.这些字符串很长.我真的想知道可以在android中的共享首选项中保存的字符串的最大长度.还有我可以在此类中存储多少大小的数据SharedPrefernces.
在这里,我想了解bluez(蓝牙堆栈协议)的架构.
我理解模块中的蓝牙启用方式.通过该蓝牙芯片中的BT_EN引脚启用它.在使用此设备与HCI UARTBluez进行通信后.
我想知道bluez架构及其工作原理.
这里我放了一个bluez概述图的图像.请解释我Bluez Core这个图中的内容.

请解释一下这个图表的流程,bluez如何在蓝牙设备中工作.
在这里,我写了一个hi.sh使用systemcall 执行文件的C程序.
在这里我使用了. ./hi.sh所以我想在同一个shell中执行这个脚本,然后尝试使用getenv函数获取环境变量,但是在这里我得到了我预期的不同输出.
该hi.sh文件包含
export TEST=10
return
Run Code Online (Sandbox Code Playgroud)
表示当我hi.sh使用系统调用运行此文件时,它export TEST在同一个shell中将值设置为10.在此之后,我试图得到这个变量值但它的给定NULL值.
如果我从控制台手动运行这个脚本,. ./hi.sh那么它工作正常,我得到10个TEST使用getenv("TEST")函数的值.
码:
#include <stdio.h>
int main()
{
system(". ./hi.sh");
char *errcode;
char *env = "TEST";
int errCode;
errcode = getenv(env);
printf("Value is = %s\n",errcode);
if (errcode != NULL) {
errCode =atoi(errcode);
printf("Value is = %d\n",errCode);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Value is = (null)
Run Code Online (Sandbox Code Playgroud)
如何在程序shell中导出TEST变量?如果system()在不同的shell中执行命令,那么如何使用C程序代码来获取由通过调用调用的shell导出的环境变量system()?
这里我有一个功能,它是监听模式.这个函数列出了我从某些设备获得的东西.
这时当我的函数处于侦听模式时,我想创建超时.如果我不会从特定设备得到任何响应,我想要退出此功能并且必须通知.
如果在此超时期间,如果我将从设备获得响应,那么我必须继续工作并停止此超时,并且在任何持续时间内完成此工作没有限制.
那么我该如何为一个函数实现这个东西呢.
请问我可以帮助我实现具有超时功能的这个东西.
在这里我想执行一个命令,我必须在执行第一个命令后输入这个命令。
我想obex_test为蓝牙模式执行命令,而不是在我必须为启动服务器提供像“s”这样的输入之后,我该如何提供这个东西。这是我的代码,我写了这个东西并得到了输出。执行obex_test命令后我收到输入数据错误。
代码:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
void main() {
char *input = "obex_test -b";
FILE *fp = NULL;
char path[512];
fp = popen(input, "w");
if (fp == NULL)
{
printf("\nFailed command\n");
return;
}
else
{
printf("\nSuccesss command\n");
}
printf("starting while : %d", fp);
while (fgets(path, sizeof(path) - 1, fp) != NULL) {
printf("\nOutput ::: %s \n", path);
}
printf("\nEnd\n");
/* close */
pclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
输出 :
Successs command
starting while : …Run Code Online (Sandbox Code Playgroud) 在这里,我想创建动态内存.在这里我不知道输出大小,我想在while循环后打印最后的最终输出.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char *sdpCommand = "sdptool browse 04:18:0F:B1:48:B5";
FILE *fp;
fp = popen(sdpCommand, "r");
char *results = 0;
if (fp == NULL) {
printf("Failed to run command\n");
return;
}
char* buffer = malloc(514);
while (fgets(buffer, strlen(buffer) - 1, fp) != NULL) {
realloc(results, strlen(results) + strlen(buffer));
memcpy(results + strlen(results), buffer, strlen(buffer));
}
printf("Output ::: %s", results);
/* close */
pclose(fp);
sleep(1);
}
Run Code Online (Sandbox Code Playgroud) 在这里,我想使用系统IPC方法
<sys/msg.h> /* SysV message queues */
<sys/ipc.h> /* General IPC definitions */
Run Code Online (Sandbox Code Playgroud)
这里我的android NDK代码是C语言,我使用消息队列IPC机制进行其他C应用程序的通信.
那么请让我知道有没有办法实现这个IPC目标?如何在android NDK代码中实现这个IPC机制?