返回> 网站首页
Android Java NDK开发
yoours2014-06-14 17:06:39
简介一边听听音乐,一边写写文章。
一、开发环境
略
二、使用STL
创建Application.mk文件,写入:
APP_STL := stlport_static // 静态链接stl库
三、NDK编译文件 + STL
Android.mk文件
APP_PLATFORM := android-8 // 最小版本
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog \
${ANDROID_NDK_ROOT}/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a //STL链接库
LOCAL_C_INCLUDES := ${ANDROID_NDK_ROOT}/sources/cxx-stl/stlport/stlport/ // STL头文件路径
LOCAL_MODULE := FReader
LOCAL_SRC_FILES := Function/ReadWriteLock.cpp Function/PortBase.cpp Function/TcpClient.cpp Function/EndPort.cpp FReader.cpp
include $(BUILD_SHARED_LIBRARY)
四、NDK网络socket
bool CTcpClient::Open(char *serv_ip, const int serv_port)
{
LOGE("CTcpClient::Open:%s - %d\r\n", serv_ip, serv_port);
struct sockaddr_in their_addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0))== -1)//建立socket
{
LOGE("sockfd = socket Error:%d\r\n", errno);
return false;
}
// 以下略
}
socket创建失败,返回码13,没有权限。
修改AndroidManifest.xml文件,增加socket权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
五、NDK调试信息输出
#include<android/log.h>
#define LOG_TAG "JNILOG" // 这个是自定义的LOG的标识
#undef LOG // 取消默认的LOG
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定义LOG类型
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定义LOG类型
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定义LOG类型
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定义LOG类型
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定义LOG类型
使用:
char * tmp="hello world!";
LOGE("Android Jni Log test !==%s==\n",tmp);
六、安卓模拟器
每次调试会重新打开新的模拟器,速度慢,浪费时间。
解决方法:
关闭模拟器,任务管理器中结束掉adb.exe程序。
在adb目录下,执行 adb.exe start-server 即可
七、eclipse窗口
打开工程窗口、LogCat窗口
Window->ShowView->Other...
输入logcat,打开LogCat窗口
输入projects,打开工程窗口
八、Java与JNI传入对象
嵌套类(嵌套对象),都是一样的思路
1. 首先查找对象类名
2. 根据查找到的对象,获取各个字段(成员)
3. 使用传进来的obj和获取的各个字段来进行取值和赋值操作
文章评论
1675人参与,0条评论