主题 : fedora 9 中可以编译 android的jni模块吗?? 复制链接 | 浏览器收藏 | 打印
技术在于时时刻刻的钻研!
级别: 新手上路
UID: 53931
精华: 0
发帖: 29
金钱: 150 两
威望: 30 点
综合积分: 58 分
注册时间: 2011-08-19
最后登录: 2011-12-23
楼主  发表于: 2011-11-23 11:15

 fedora 9 中可以编译 android的jni模块吗??

请问高手们能够在fedora9 中编译android的jni的.so文件吗???如果可以的话,怎么在fedora 9中配置相关设置啊!
技术是生活的动力!
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
1楼  发表于: 2011-11-23 15:15
搞android最好用 fedora14以上的系统
技术在于时时刻刻的钻研!
级别: 新手上路
UID: 53931
精华: 0
发帖: 29
金钱: 150 两
威望: 30 点
综合积分: 58 分
注册时间: 2011-08-19
最后登录: 2011-12-23
2楼  发表于: 2011-11-25 12:00
请问你怎么写jni模块吗?这是自己写的led.c文件
#include <jni.h>
#include <android/log.h>

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define DEVICE_NAME "/dev/leds"

#define  LOG_TAG    "vib-jni"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)


jstring Java_com_auly_control_vibClalss_stringFromJNI( JNIEnv* env,jobject thiz);
jint Java_com_auly_control_vibClalss_Init( JNIEnv*  env );
jint Java_com_auly_control_vibClalss_IOCTLVIB( JNIEnv*  env, jobject  thiz, jint ledx, jint controlcode );


int fd;
jstring Java_com_auly_control_vibClalss_stringFromJNI( JNIEnv* env,jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI--Peter for vib!");//打印字符串
}

jint Java_com_auly_control_vibClalss_Init( JNIEnv*  env )
{
   LOGE("vibClass_Init() /n");
   fd = open(DEVICE_NAME,0);//打开设备
   LOGE("vibClass_Init()-> fd = %d  /n",fd);
   if(fd == -1)
       {
           LOGE("open device %s error /n ",DEVICE_NAME);//打印调试信息
           return 0;
   }
   else
       {
          return 1;
       }
}

jint Java_com_auly_control_vibClalss_IOCTLVIB( JNIEnv*  env, jobject  thiz, jint ledx, jint controlcode )
{
    int on_off = controlcode;
    int on=ledx;
    LOGE("IOCTLVIB() = %x --vibClass_IOCTLVIB /n",on_off);
       switch(on_off)
           {
        case 0:
                {
                    ioctl(fd,on,0);//调用驱动程序中的ioctrl接口,把命令VIB_ON传下去,实现硬件操作
                break;
                }
        case 1:
                {
                    ioctl(fd,on,1);//调用驱动程序中的ioctrl接口,把命令VIB_OFF传下去,实现硬件操作
                break;
                }        
        default:break;
       }
       return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Android.mk
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := vib-jni
LOCAL_CFLAGS    := -Werror
LOCAL_SRC_FILES := vib-jni.c
LOCAL_LDLIBS    := -llog

include $(BUILD_SHARED_LIBRARY)

用cygwin编译生成了.SO文件
但是在运行apk的时候 应用程序老是出错!请求告诉解答!
[ 此帖被xuezi0414在2011-11-25 16:52重新编辑 ]
技术是生活的动力!