2017年6月版NDK开发入门

咳咳,虽然现在ADT有点土埋半截的意思,但是在某些特殊情况下还是要用到它,其中NDK的开发是避免不了的。

今日为了某些特殊的理由,本人要做NDK开发,AndroidStudio的NDK又有点不适用。在跌跌撞撞两天后终于搞清楚了现时在Eclipse下创建NDK项目的方法。


开发环境:

Windows10企业版

Eclipse NEON.3

NDK 15.0.4075724


首先,在系统环境变量中,将NDK的路径写入PATH中,并在Eclipse中设置NDK的路径,具体方法不累述了。

打开Eclipse,如Android: NDK编程入门笔记中所说的,创建一个Android项目,注意Android版本号请写NDK中存在的,如下图


不要选个android-25,那样编译不过的。


项目设置可做成这样



其中的java代码照抄即可。

然后将项目编译一下以生成.class文件。


在项目的src目录下,打开一个命令行窗口,输入:

javah -d ../jni  com.example.hellojni.HelloJni

其中-d ../jni是表示将生成的.h文件放入 {项目目录}/jni下,com.example.hellojni.HelloJni则为{BUNDLE}.{项目名}.{class文件名}




之后在{项目目录}/jni下添加C/C++源码文件。我看了一些以前的文章,说非要将.cpp改成.c(可能是作者的误解),应该不是安卓开发包的限制(否则Cocos2dx那些老版本是怎么实现的?)

hello-jni.cpp:

#include <string.h>
#include <jni.h>

extern "C" {
/* This is a trivial JNI example where we use a native method
 * to return a new VM String. See the corresponding Java source
 * file located at:
 *
 *   apps/samples/hello-jni/project/src/com/example/HelloJni/HelloJni.java
 */
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    return (env)->NewStringUTF("Hello from JNI !");
}

};

此处代码与上面所引用的有改动,请以我这个代码为准。


在{项目目录}/jni下添加Android,mk:

 # Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.cpp

include $(BUILD_SHARED_LIBRARY)


在{项目目录}下以命令窗口中执行ndk-build来编译C++代码:



最后在Eclipse中运行项目就可以了:



当然这样做的缺陷是每改动一次CPP都要在命令窗口中执行一次ndk-build,不知Cocos2dx2.x.x的添加编译参数的设置方法能不能解决这个问题



这个工程导入Android Studio后会出现

Your project contains C++ files but it is not using a supported native build system

错误,

添加

sourceSets {
main {
jni.srcDirs = []
}
}

即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值