Mac下的AndroidStudio的NDK配置及开发示例

来源:互联网 发布:js给div设置内容 编辑:程序博客网 时间:2024/05/21 12:16
Mac OS  10.11.5AndroidStudio 2.3.2NDK  10Mac下的AndroidStudio的NDK配置及开发示例-----------------------------------------------------------------------------------------------------------一、下载NDK(这个分版本,Windows、Linux、Mac三种版本)二、解压NDK(我的是Mac版本,下载完成之后为android-ndk-r10e-darwin-x86_64.bin)    Mac解压步骤:    ①打开终端,进入android-ndk-r10e-darwin-x86_64.bin所在的文件夹,输入命令:        DavidtekiMacBook-Air:~ du$ cd /Users/du/Downloads    ②更改android-ndk-r10e-darwin-x86_64.bin文件的读写权限,输入命令:        DavidtekiMacBook-Air:Downloads du$ chmod a+x android-ndk-r10e-darwin-x86_64.bin    ③执行android-ndk-r10e-darwin-x86_64.bin文件,输入命令:        DavidtekiMacBook-Air:Downloads du$ ./android-ndk-r10e-darwin-x86_64.bin    ④在对应的文件夹下应该会出现解压好的文件夹android-ndk-r10e三、打开系统的终端,检测:    ①输入javah,检查输出有没有javah的用法    ②输入命令: ndk-build,检查有没有此命令,如果显示bash: ndk-build: command not found,说明你的NDK系统路径没有配置        NDK的PATH配置步骤:        ①输入命令            DavidtekiMacBook-Air:~ du$ pico .bash_profile        ②继续输入            export PATH=${PATH}:/Users/du/android-ndk-r10e            A_NDK_ROOT=/Users/du/android-ndk-r10e            export A_NDK_ROOT        注意:上面的第一行和第二行的NDK的路径换成你自己的        ③control+X 键,终端会提示你是否需要保存, 再输入  Y,最后 回车        ④至此,NDK的路径配置完毕,关闭终端并重启,再重新输入命令: ndk-build,看是否有反应-----------------------------------------------至此NDK配置完毕了哦----------------------------------------------------------------------------------------------接下来搞项目-----------------------------------------------一、新建一个工程,配置NDK的路径    打开Project Structure,可以看到Android SDK Location和Android NDK Location,        在Android NDK Location下选择你的NDK的根路径    我的是   /Users/du/android-ndk-r10e二、新建一个包含native方法的类,如DogNdk.java,并添加native方法    public static native String getString();三、打开工程底部的Terminal,    ①进入/Users/du/AndroidProjectForSVN/NDKTestNew/app/src/main/java文件夹,输入命令:        DavidtekiMacBook-Air:NDKTestNew du$ cd /app/src/main/java    ②输入命令:        DavidtekiMacBook-Air:java du$ javah -jni com.katherine.du.ndktestnew.DogNdk    ③打开项目结构,发现在java文件夹下生成了一个头文件: com_katherine_du_ndktestnew_DogNdk.h四、找到项目结构中的/app/src/main文件夹    ①在文件夹下建立jni文件夹(可以右键New--Folder--JNI Folder)    ②将第三步中生成的头文件拷贝到jni文件夹下,拷贝完成后之前的头文件可以删除掉    ③在jni文件夹下,新建一个C/C++源文件,如com_katherine_du_ndktestnew_DogNdk.cpp    注意:这里的源文件没有要求必须和头文件的名称相同,但最好一致    ④在C++源文件中实现上面的 getString() 方法:        #include "com_katherine_du_ndktestnew_DogNdk.h"        JNIEXPORT jstring JNICALL Java_com_katherine_du_ndktestnew_DogNdk_getString (JNIEnv *env, jclass jls)          {            return (*env).NewStringUTF("Look! These is a dog! It looks very cute!");          }    注意:方法名字可以直接从com_katherine_du_ndktestnew_DogNdk.h中拷贝哦~~~    ⑤在jni文件夹下,新建Android.mk文件,文件内容:        LOCAL_PATH :=$(call my-dir)        include $(CLEAR_VARS)        LOCAL_MODULE :=dog        LOCAL_SRC_FILES=com_katherine_du_ndktestnew_DogNdk.cpp        include $(BUILD_SHARED_LIBRARY)    注意:LOCAL_MODULE :=dog, dog为你要的库的名字,随意起名字吧         LOCAL_SRC_FILES=com_katherine_du_ndktestnew_DogNdk.cpp, com_katherine_du_ndktestnew_DogNdk.cpp就是你要编译的源文件    ⑥在jni文件夹下,新建Application.mk文件,文件内容:        APP_MODULES := dog        APP_ABI := all    注意:APP_MODULES :=dog, dog为你上面的库的名字,保持一致哦五、在app/build.gradle中  defaultConfig下添加            ndk {                moduleName "dog"            }            sourceSets.main {                jni.srcDirs = []                jniLibs.srcDir "src/main/libs"            }    注意:moduleName "dog", dog为你上面的库的名字,保持一致哦六、在根目录下的gradle.properities文件末尾添加一行代码        android.useDeprecatedNdk=true七、检查项目根目录下的local.properties文件中的SDK和NDK的路径对不对八、点击Build--Make Project九、打开项目底部的Terminal    ①进入main文件夹(我目前在java文件夹下,我需要返回上一级就是main文件夹),输入命令        DavidtekiMacBook-Air:java du$ cd ..    ②输入命令        DavidtekiMacBook-Air:main du$ ndk-build    ③顺利的话,在main文件夹下会生成一个libs文件夹,打开以后会看见7种生成的libdog.so--------------------------------------------------至此.so生成完毕了哦---------------------------------------------------------------------------------------接下来在项目中使用这个.so库--------------------------------------一、在DogNdk.java中添加代码    ①添加加载库文件的代码:    static { System.loadLibrary("dog");}    即DogNdk.java:        public class DogNdk {            static {                System.loadLibrary("dog");            }            public static native String getString();        }    ②在MainActivity中使用这个方法        ((TextView) findViewById(R.id.tv_desc)).setText(DogNdk.getString());    ③运行项目        是不是发现打印出一句话啊哈哈~~~~~好了这就结束啦~~~-------------------------------------------------------题外话-----------------------------------------------    如果你已经拥有了.h文件、.cpp(.c)文件、Android.mk文件、Application.mk文件,你只想打出一个.so库    步骤:    ①将这些文件全部拷贝至jni文件夹下    ②确保Android.mk文件中的LOCAL_MODULE :=dog、         Application.mk文件中的APP_MODULES := dog、         app/build.gradle中的moduleName "dog"      的库名字保持一致    ③Terminal中进入main文件夹下,执行ndk-build命令即可项目链接:http://download.csdn.net/detail/kikitious_du/9840866 NDK下载链接:https://pan.baidu.com/s/1skVdjXz参考链接:https://my.oschina.net/zhouzhenBlog/blog/648125        http://gushedaoren.blog.163.com/blog/static/1736634052013101575955388/        http://blog.csdn.net/zhoudailiang/article/details/50466185
0 0
原创粉丝点击