使用Android Studio自帶的NDK編譯JNI


/**********************************************************************************
 *                      使用Android Studio自帶的NDK編譯JNI
 * 說明:
 *     省得自己另外去下載NDK,編譯JNI,麻煩。
 *              
 *                                          2017-4-30 深圳 龍華民治樟坑村 曾劍鋒
 *********************************************************************************/

一、參考文檔:
    1. NDK環境搭建-windows篇
        http://www.jianshu.com/p/708e6bf68ae9
    2. Mistake in documentation/error message?
        https://github.com/android-ndk/ndk/issues/264
    3. 編譯一個模塊時出現undefined reference to `__android_log_print' 
        http://bbs.csdn.net/topics/360020076
4. Android Studio 之 JNI 開發詳解
http://www.jianshu.com/p/bc2b46381d88
5. 向您的項目添加 C 和 C++ 代碼
https://developer.android.com/studio/projects/add-native-code.html?hl=zh-cn
二、error: 1. 錯誤1: 1. 錯誤現象: D:\zengjf\SourceCode\Android\android_app\Test>ndk-build C:/Users/zengjf/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:687: Android NDK: Module zengjf depends on undefined modules: android_runtime nativehelper cutils utils log C:/Users/zengjf/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:701: *** Android NDK: Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies) . Stop. D:\zengjf\SourceCode\Android\android_app\Test> 2. 解決方法 1. C:\Users\zengjf\AppData\Local\Android\Sdk\ndk-bundle\build\core\build-binary.mk 2. 修改內容: ... ifdef undefined_libs $(call __ndk_warning,Module $(LOCAL_MODULE) depends on undefined modules: $(undefined_libs)) # https://github.com/android-ndk/ndk/issues/208 # ndk-build didn't used to fail the build for a missing dependency. This # seems to have always been the behavior, so there's a good chance that # there are builds out there that depend on this behavior (as of right now, # anything using libc++ on ARM has this problem because of libunwind). # # By default we will abort in this situation because this is so completely # broken. A user may define APP_ALLOW_MISSING_DEPS to "true" in their # Application.mk or on the command line to revert to the old, broken # behavior. APP_ALLOW_MISSING_DEPS=true // add this line ifneq ($(APP_ALLOW_MISSING_DEPS),true) $(call __ndk_error,Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies)) endif endif ... 2. 錯誤2: 1. 錯誤現象: undefined references to `__android_log_print' follow 2. 解決方法: Android.mk文件中加入LOCAL_LDLIBS += -llog即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM