Unity3d调用android里的.so
来源:互联网 发布:淘宝的发货人能不能改 编辑:程序博客网 时间:2024/06/05 23:03
首先明白.so分为两种,一种是linux下的.so,一种是NDK下的.so;本文主要讲解加载后一种.so
先来了解如何生成.so;
1、建立jni文件夹,创建android.mk和main.cpp文件
.mk内容如下:
LOCAL_PATH := $(call my-dir)
# compile VitClient.so
include $(CLEAR_VARS)
LOCAL_MODULE := libgame //.so名称
LOCAL_SRC_FILES := main.cpp //需要直接的.cpp/.c文件
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include
include $(BUILD_SHARED_LIBRARY)
#include $(BUILD_STATIC_LIBRARY)
.cpp 文件内容:
extern "C"
{
int AddNum(int a,int b)
{
return a+b;
}
}
2、在jni同级目录创建build_native.sh脚本
内容如下:
# set params
NDK_ROOT_LOCAL=/Users/wuwuyuan/Desktop/android-sdk-macosx/android-ndk-r7b //ndk 路径 设置成自己的
# build
# NDK 编译参数
# V=1 显示编译详细信息
# -B 强制重新编译
$NDK_ROOT_LOCAL/ndk-build
3、mac下命令行 执行 sh build_native.sh 结果如图:
4、在unity中穿件android工程,新建Plugins/Android 将libgame.so 放在之下
5、编辑C# 脚本:
using System.Runtime.InteropServices;
public class PluginImport : MonoBehaviour {
[DllImport ("game")] //省略掉lib前缀和.so 后缀
private static extern int AddNum(int a,int b);
void Start () {
Debug.Log("wwwwwww:"+AddNum(1,1));
}
}
6、在android设备上可以看到打印出 wwwwwww:2
备注:必须在android真机或模拟器上能看到效果,在pc或mac上会报异常
工程下载地址
补充:如何在mac下用NDK编.so
cd 到当前eclipse工程根目录,在根目录执行../android-ndk-r7b/ndk-build
编译过程:Compile++ arm : shadowmapping <= BaseGLSLProgram.cpp
Compile++ arm : shadowmapping <= bitmap.cpp
Compile++ arm : shadowmapping <= button.cpp
Compile++ arm : shadowmapping <= main.cpp
Compile thumb : android_native_app_glue <= android_native_app_glue.c
StaticLibrary : libandroid_native_app_glue.a
Prebuilt : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi/
- Unity3d调用android里的.so
- unity3D 调用android .so
- Unity3d调用Android版so库
- 在android里调用第三方动态链接库.so
- 22 Qt for android里调用so动态库
- android:认识*.so里的JNI_OnLoad()函数
- android JNI的.so库调用
- android调用SO
- android 调用 so库
- android 调用so
- android调用so库
- Unity3D 调用Android的提供的接口
- 关于加载android里 .so文件的问题
- Unity3D 调用Android与IOS的剪贴板
- Unity3D 调用Android与IOS的剪贴板
- Unity3d 与 Android之间的互相调用
- Unity3d和Android的互相调用(一)
- Unity3d和Android的互相调用(二)
- WinPcap笔记(4):打开适配器并捕获数据包
- 杭电1038 Biker's Trip Odometer
- java.lang.RuntimeException: java.lang.NoSuchMethodException: tfidf$Reduce.<init>()
- JS使用JSON格式数据详解
- java实现邮箱验证码
- Unity3d调用android里的.so
- android数据库的简单Demo(原生版+Google版)
- c里面关于变参数函数的理解
- 如何调整ubuntu默认启动引导操作系统
- 实现中等通讯录(OC)
- XIB创建的cell中的已经适配过的控件如何动态改变高度?
- grep命令详解
- JS自定义data-*属性
- Qt中的Q_OBJECT