【移动应用开发技术】用djinni自动生成JNI相关文件_第1页
【移动应用开发技术】用djinni自动生成JNI相关文件_第2页
【移动应用开发技术】用djinni自动生成JNI相关文件_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】用djinni自动生成JNI相关文件

一、djinni是什么djinni是个工具,用来生成JNI相关接口。现在很多人都是只懂java,或者只懂C++,很少有人两头都精通;即使两头都精通,自己写JNI接口也很复杂。这时候djinni就能很好的解决这些问题,我们只要按要求配置JNI接口的对象,就能生成两边的接口。除了java与C++,还能生成ObjC与C++等接口。二、环境java1.8.0_101djinniGitHub地址msys2下载地址因为djinni中的一些命令是linux中的命令方式,所以要下载个msys2,在msys2中运行下载好后打开msys2,cd到djinni根目录下,输入以下命令来拉取库(整个过程时间很长)src/run--help三、编写djinni配置文件配置文件中可以配置如下的接口,在C++中具体实现,然后被java或ObjC或其他语言调用#ThisinterfacewillbeimplementedinC++andcanbecalledfromanylanguage.

my_cpp_interface=interface+c{

method_returning_nothing(value:i32);

method_returning_some_type(key:string):another_record;

staticget_version():i32;

#Interfacescanalsohaveconstants

constversion:i32=1;

}如果是C++调用其他语言的接口(+j指java,+o指ObjC),作如下定义#ThisinterfacewillbeimplementedinJavaandObjCandcanbecalledfromC++.

my_client_interface=interface+j+o{

log_string(str:string):bool;

}也可以定义其中需要一些实体类my_enum=enum{

option1;

option2;

option3;

}

my_flags=flags{

flag1;

flag2;

flag3;

no_flags=none;

all_flags=all;

}

my_record=record{

id:i32;

info:string;

store:set<string>;

hash:map<string,i32>;

values:list<another_record>;

#Commentscanalsobeputhere

#Constantscanbeincluded

conststring_const:string="Constantscanbeputhere";

constmin_value:another_record={

key1=0,

key2=""

};

}

another_record=record{

key1:i32;

key2:string;

}deriving(eq,ord)配置好以后调用命令生成src/run\

--java-outJAVA_OUTPUT_FOLDER\

--java-packagecom.example.jnigenpackage\

--java-cpp-exceptionDbxException\#ChoosebetweenacustomizedC++exceptioninJavaandjava.lang.RuntimeException(thedefault).

--ident-java-fieldmFooBar\#Optional,thisaddsan"m"infrontofJavafieldnames

\

--cpp-outCPP_OUTPUT_FOLDER\

\

--jni-outJNI_OUTPUT_FOLDER\

--ident-jni-classNativeFooBar\#Thisaddsa"Native"prefixtoJNIclass

--ident-jni-fileNativeFooBar\#ThisaddsaprefixtotheJNIfilenamesotherwisethecppandjnifilenamesarethesame.

\

--objc-outOBJC_OUTPUT_FOLDER\

--objc-type-prefixDB\#ApplesuggestsObjective-Cclasseshaveaprefixforeachdefinedtype.

\

--objcpp-outOBJC_OUTPUT_FOLDER\

\

--idlMY_PROJECT.djinni其中有几个重要的路径:JAVA_OUTPUT_FOLDERjava文件生成路径CP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论