您的位置:首页 > 运维架构 > Linux

使用NDK为Android写linux bin执行程式二三事

2013-11-21 16:10 381 查看
写JNI + Java程式的时候, 有个函数总感觉不对, 想写个测试程式测试下这个函数. 以前是直接在Jeallybean下面编译的, 为现有的板子为jeallybean整非ARM的编译环境也太那个了点, 心想就直接用NDK呗. 然后, 麻烦来了!

1. 如通常一样,写hello.cpp测试代码

2. ndk-build, 出现NDK_PROJECT_PATH错误:

Android NDK: Could not find application project directory !

Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.

3. Google+度娘, 好像没有人说过怎么处理呢

4. 记得做opencv的时候解决过这个问题, 想想...

5. 想起来了,

mkdir jni

mv *.mk ./jni

mv *.c ./jni

mv *.h ./jni

mv *.cpp ./jni

ndk-build

## 编译通过, enjoy it.

adb push ../libs/x86/hello /data/

adb shell /data/hello

## 测试结果显示该函数工作正确, 继续想想 ...

---------------------------------------------------------

附录一: Application.mk

---------------------------------------------------------

APP_STL := stlport_static

# APP_STL := gnustl_static

APP_CPPFLAGS := -frtti -fexceptions

APP_ABI := x86

---------------------------------------------------------

附录二: Android.mk

---------------------------------------------------------

# Copyright (C) 2009 The Android Open Source Project

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

# http://www.apache.org/licenses/LICENSE-2.0
#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES += \

libstdc++ \

sources/cxx-stl/stlport

LOCAL_SHARED_LIBRARIES := \

libcutils \

libutils \

libstlport

LOCAL_MODULE := hello

LOCAL_SRC_FILES := hello.cpp

LOCAL_LDLIBS := -lm -llog

include $(BUILD_EXECUTABLE)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: