/********************test.h
#ifndef   _TEST_H_
#define   _TEST_H_
#include <stdio.h>
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
extern int test_a();
#ifdef __cplusplus
}
#endif
#endif/*****************test.c#include "test.h"
int test_a()
{
   int a = 9;
   return a;
}以上用交叉编译器了一个libtest.so
交错编译器
arm-none-linux-gnueabi-gcc test.c -shared -o libtest.sojni目录下:
android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := native-plasma这是NDK自带例子
LOCAL_SRC_FILES := plasma.c   我在里面代码加了int aa = test_a();
LOCAL_LDLIBS    += -lm 
LOCAL_LDLIBS    +=-llog 
LOCAL_LDLIBS    +=-landroid 
LOCAL_LDLIBS    += $(LOCAL_PATH)/inllib/libtest.so  //这是加载libtest.so 的路径
LOCAL_STATIC_LIBRARIES := android_native_app_glueinclude $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)然后用NDK命令$NDK/ndk-build一个native-plasma.so  能编译成功
编译器编译项目 在android仿真器 运行该程序 出错 提示 sorry! The application native-plasma (process com.gcx.plasma) has stopped unexpectedly.please try again
我看到log.so opengles.so进入adb shell 在lib目录下能看到 是不是我的test.so 没在这里面所以运行不成功呢 
 这lib是只读的 加不了NDK是r5的 SDK也是最新 

解决方案 »

  1.   

    你把test.so和native-plasma.so放在一个目录下试试?
      

  2.   

    不行试过了
    在程序运行要加载 test.so 如果这库能放入system/lib里面 我想应该可以
    关键加入不进去 不能写入 设定权限也不行
      

  3.   

    问题 解决了 要用设定权限在sdk 目录找到adb 命令:$./adb remount /system/lib rw
    然后吧.so ./adb push /目录/libtest.so /system/lib
    可能会出现out of memory
    这是需要给模拟器分配空间  进入sdk tools目录有个 emulator 
    命令:./emulator -avd Android2.3.1 -partition-size 256 (Android2.3.1是模拟器名字版本号)
    可是这种方法只能测试 不能发布版本