NDK开发注意事项

1、安装intelhaxm前,需要重启电脑进BIOS开启虚拟化选项。


2、批处理:javah用于自动生成JNI的C代码头文件,会将native为前缀的java方法生成相应的方法声明,参数栏目如:

-classpath src -d jni com.sword.wifiipfromjni.MainActivity


3、批处理:使用javap生成java方法签名,参数栏目如:

-classpath bin\classes -s com.sword.wifiipfromjni.MainActivity


4、如果在AndroidManifest.xml设置了

<uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="19" />

那么需要在jni的Application.mk文件中设置:

APP_PLATFORM := android-15


5、真实手机设备调试,请将jni的Application.mk文件设置:

APP_ABI := armeabi-v7a,否则设置为x86。


6、开启debug调试模式:Application.mk设置:APP_OPTION := debug,且AndroidManifest.xml中设置Application的debuggable为True。


7、Android.mk增加系统库的支持:LOCAL_LDLIBS := -landroid -llog


8、调试NDK层代码单步调试,右键项目Debug As->Android Native Application。


9、MK文件输出信息:$(warning $(XXX)) 或者$(error $(XXX))


10、编译第三方SO文件,Jni文件夹的MK文件设置:


LOCAL_PATH := $(call my-dir)/
JNI_PATH := $(LOCAL_PATH)
#other so

include $(CLEAR_VARS)  

LOCAL_MODULE    := NETEC
LOCAL_SRC_FILES := ../jni/libNETEC.so
include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)   
LOCAL_MODULE    := videoSender
LOCAL_SRC_FILES := ../jni/libvideoSender.so
include $(PREBUILT_SHARED_LIBRARY)


# Build pj for android
include $(JNI_PATH)/pjsip/android_toolchain/Android.mk


11、使用adb 输出日志:通常在SDK文件夹下的platform-tools文件夹中可找到adb.exe,

然后配置路径到系统环境变量PATH中,命令:

adb logcat -d -f /sdcard/swordlog.txt


12、关于CPU的类型,血泪屎,编译的so文件在应用运行时,某些功能导致程序直接崩溃,那么你需要看一下jni目标cpu类型与实际是否相符:armeabi、armeabi-v7a 表示cpu的类型,前一种是针对普通的或旧的arm cpu,后一种是针对有浮点运算或高级扩展功能的arm cpu。(加一句,看CPU类型可以用其他软件,请自行搜索)

在jni的Application配置以下宏:

APP_ABI := armeabi

APP_ABI := armeabi-v7a


13、编译so文件,提示异常:ld.exe: cannot find -lgnustl_static,又一个血泪屎,搞了一天,明知道很大可能是路径配置的问题,就是找不出来,死命搞jni文件夹下的Android.mk文件,后来一次偶然的新老版本文件对比中发现一处:LOCAL_LDLIBS := -llog -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi,顿时吓尿了,尼玛我没这路径啊,改为:

LOCAL_LDLIBS := -llog -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a

腰不酸了,腿不疼了,连so都分分钟生成了,我去。。。(各位童鞋请按照自己的路径及CPU类型对比设置)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值