zoukankan      html  css  js  c++  java
  • 【android开发记录片】2.基于Eclipse的JNI开发环境的搭建(cygwin+NDK)

    (很久没有更新android方面的文章,其实最大的原因是没有油水可以更新了=.=)


    好,步入正题。

    今天在新电脑上搭建android开发环境。

    因为已经有了SDK,我将SDK解压到相关目录,这里是:D:\software\java\android\android-sdk-windows

    D:\software\java\android 目录结构如下:

    看名称就很明显了哈。

    sdk-windows 是sdk目录

    AVD 是手机模拟器的目录


    然后配置环境变量,方便eclipse找到模拟器的配置:


    打开eclipse,如果还没有 ADT ,就先安装一个,提供一个在线安装ADT的好例子:ADT在线安装


    在线更新到的 ADT 是最新的,这里有可能需要更新一下SDK,就我的情况而言,因为我的SDK只有到 2.3 ,所以安装好ADT后花了20分钟更新了 Android 4.1(API 16),网速是 300KB/s 。

    然后就可以运行一个AVD测试。详细可以看我的上一篇Android开发记录:http://blog.csdn.net/ssrc0604hx/article/details/7272402


    这里讲一下怎么安装 JNI 的开发环境。

    这里需要用到 cygwin ,NDK。

    具体的可以看这个(神帖!):基于 Android NDK 的学习之旅-----环境搭建


    我主要是讲一下:


    1.工程  BUILDER 这里,按照上面的文章说的设置builder,每次代码保存、工程文件变动就会自动编译成so文件,这其实是不需要的。一般我们就要他在测试运行时编译就好了。

    那修改这里:


    这样,就不会频繁地编译了。


    2。从c/c++ 中返回中文时候

    总结下,2种方法比较好用,直接在c或c++转编码比较麻烦,一直没有找到解决方案:
    1.把jni里用到的.c文件或者.cpp文件要改成utf-8的文件类型,可以用记事本打开,另存为的时候就知道编码了。
    2.把文字转换成 jbyteArray形式返回到java层,再用

    String result = new String(byte[],"Utf-8");

    来转换。C++类似下面的代码:

    char * location = "你好";
       jbyte *by = (jbyte*)location;
       jbyteArray jarray = env->NewByteArray(strlen(location));
       env->SetByteArrayRegion(jarray,0,strlen(location),by);
       return jarray;

    3. 生成的 so 文件是在 工程的: libs 目录下。

    eclipse 打包成  apk 时,会将 libs 目录也打包进 APK中,就样就可以在应用中调用我们的 本地库了。



    最后,就可以开始你自己的android jni 应用 了。



  • 相关阅读:
    锦oa基础配置
    存储localStorage
    刷新token
    input框输入数量自动计算价格
    创建项目,登录校验
    config
    xiaota-main
    数据库的多表查询
    pygame应用---射击外星人游戏
    pygame以及matplotlib的安装
  • 原文地址:https://www.cnblogs.com/nerve/p/3185442.html
Copyright © 2011-2022 走看看