android NDK 生成so 文件流程-ecplice
1:生成jni目录
首先说一句网上,大部分博客这么写的:打开控制台,进入项目目录,运行
javah -classpath bin/classes -d jni com.example.hellojni.MainAcitivity
我只想问一句,这些代码您亲自运行成功了吗?您这么写出来责任心何在?
这么写你会遇到这个错误。
实际上可以这么写:
1: javah -classpath src -d jni com.itg.jni.ImageBlur
或写入android.jar的路径直接执行
2:javah -classpath C:\project\Android\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-22\android.jar;bin/classes -d jni com.itg.jni.ImageBlur
然后你会在项目中得到jni文件夹及.h的文件
然后编写C文件。
3:右键jni文件 添加Android.mk文件
写入配置
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JNI_ImageBlur
LOCAL_SRC_FILES := com_itg_jni_ImageBlur.cpp
LOCAL_LDLIBS := -ljnigraphics -llog
include $(BUILD_SHARED_LIBRARY)
LOCAL_LDLIBS := -ljnigraphics -llog 这一句如果没用到BitMap不要添加。
我的需求是,操作图片 如果没有这句汇报
在编译jni的cpp文件时出现:
jni/NDKtest.cpp:21: error: undefined reference to 'AndroidBitmap_getInfo'
jni/NDKtest.cpp:22: error: undefined reference to '__android_log_print'
jni/NDKtest.cpp:26: error: undefined reference to '__android_log_print'
jni/NDKtest.cpp:29: error: undefined reference to 'AndroidBitmap_lockPixels'
jni/NDKtest.cpp:30: error: undefined reference to '__android_log_print'
jni/NDKtest.cpp:39: error: undefined reference to 'AndroidBitmap_unlockPixels'
collect2.exe: error: ld returned 1 exit status
make.exe: *** [obj/local/armeabi/libNDKtest.so] Error 1
2 下载NDK(Native Development Kit)
2:选中要生成so 文件的项目选择Property-->Builders-->New
设置Location,添加 ndk-build.cmd
设置working Directory 选择项目中jni目录
设置build Options
勾选如图所示
设置Specify Resources,直接选择jni文件夹即可。完毕,保存,ecplice会自动在armeabi文件夹下生成so文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?