- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CC在JavaAndroid与ObjectiveC三大平台下实现混合编程
Android和iOS开发都支持C++开发,可以一套代码多平台使用。同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率。
一、为什么使用C/C++
便于移植,用C/C++写得库可以方便在其他的平台上再次使用。
代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大。
提高程序的执行效率,将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率。
访问现有开源库,需要访问底层的API或引用一些只有C/C++的库。
二、开发工具介绍
尽管Android Studio可以同时编写C++和Java代码,写完就可以编译运行,但是对联想和错误提示并不是非常友好,个人建议C++的整体代码使用Visual Studio或Xcode编译开发,联想功能非常友好,编译速度很快,调试也非常方便。
Visual Studio(PC)
Xcode(Mac)
Android Studio(多平台)
eclipse(多平台)
三、第一行代码
1. 如何在Objective-C项目中???用C++;
在Objective-C使用C/C++非常简单,仅仅需要把.m后缀的文件改成.mm即可使用C++,我们通常不会把.mm的文件写到整个项目都有,而是设计一个接口,用来做两个语言之间的桥梁,他们之间的交互仅仅在这个接口。
要点:String类型转换
// Objective-C(NSString) - C++(std::string)
NSString * ocString = @Hello World,OC;
std::string cppString = [ocString UTF8String];
std::coutcppStringstd::endl;
// C++(std::string) - Objective-C(NSString)
std::string cppString2 = Hello World,C++;
NSString *ocString2= [NSString stringWithCString:cppString2.c_str() encoding:[NSString defaultCStringEncoding]];
NSLog(@%@,ocString2);
记得要include相关的文件
#include stdio.h
#include iostream
2.在普通的JAVA项目中使用JNI编程
由于我是在MAC下办公,所以这里就介绍如何在MAC下进行JNI开发,在Windows平台下的Virtual Studio也很简单。
第一步:在Xcode下创建一个普通的C++项目
第二步:关联JavaVM的Framework
路径:
/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaNativeFoundation.framework/
第三步:创建头文件,用于和Java交互 cn_taoweiji_nativemodule_NativeDemo.h
#include JavaVM/jni.h
#ifndef _Included_cn_taoweiji_nativemodule_NativeDemo
#define _Included_cn_taoweiji_nativemodule_NativeDemo
#ifdef __cplusplus
extern C {
#endif
JNIEXPORT jint JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_add
(JNIEnv *, jclass, jint, jint);
JNIEXPORT void JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_say
(JNIEnv *, jclass, jstring);
JNIEXPORT jstring JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_getInfo
(JNIEnv *, jclass);
JNIEXPORT void JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_nativeToJava
(JNIEnv *, jclass, jobject);
#ifdef __cplusplus
}
#endif
#endif
第四步:创建实现 NativeDemo.cpp
#include cn_taoweiji
您可能关注的文档
最近下载
- 《公共行政学》期末复习题.doc VIP
- 公路工程竣交工验收培训课件.pptx VIP
- 小学生品德发展与道德教育 【第1章】 品德发展与道德教育概述 教学PPT课件.pptx VIP
- 吸湿器说明书(中英文)明远(46).doc VIP
- 学习解读《SLT 631水利水电工程单元工程施工质量验收标准 第 4 部分:堤防与河道整治工程》课件.pptx
- 以德育之笔——2025年秋季学期学校德育工作安排表 第二版.docx VIP
- 新概念2册1-36课测试卷.pdf VIP
- 企业会计准则讲解2010版.doc
- 入党志愿书(全电子版).pdf VIP
- 2025年秋季统编版七年级上册道德与法治全册教学课件.pptx
文档评论(0)