windows环境下生成 Android(安卓)可执行程序/算法库
windows环境下生成 Android 可执行程序/算法库
- 前言
- 一、MinGW和NDK工具安装和环境配置
- 二、生成Android可执行程序/库
-
- 1.Android.mk 和Application.mk脚本配置
- 2.ndk-build编库
- 三、调试ADB工具,在Android平台运行
-
- 1.ADB工具安装
- 2.windows连接Android平台,运行
- 四、原创不易,顺手点个赞吧~
前言
交叉编译的应用场景:
例如:neon优化硬仿一致性验证等。
一、MinGW和NDK工具安装和环境配置
在讲MinGW和NDK之前,我们先要了解一下如何在linux环境下编译Android平台可执行程序/算法库。
linux环境下编译Android平台可执行程序/算法库需要用到gcc工具和NDK工具。
其中,gcc已经集成在linux系统中,不需要额外在下载安装。
NDK (原生开发套件) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码。
下载地址:https://developer.android.google.cn/ndk/downloads/index.html?hl=zh-cn
最新版本android-ndk-r23b-linux.zip
OK,那在windows环境下,需要用到MinGW和NDK工具。
MinGW(Minimalist GNU for Windows)提供了一套简单的再windows环境下基于gcc的开发环境。是将GCC编译器和GNU Binutils移植到windows平台下的产物,包括一系列头文件、库和可执行文件。在windows平台模拟了linux平台gcc的开发环境。
下载地址:https://osdn.net/projects/mingw/
NDK工具实现的功能相同:使您能够在 Android 应用中使用 C 和 C++ 代码。
下载地址:https://developer.android.google.cn/ndk/downloads/index.html?hl=zh-cn
最新版本android-ndk-r23b-windows.zip
MinGW和NDK工具安装好之后,需要在系统环境变量 PATH 中添加:
C:\…\MinGW\bin
C:\…\ndk\android-ndk-r16b
二、生成Android可执行程序/库
生成Android可执行程序/库可以选择通过 ndk-build(Android.mk /Application.mk)的方式或者CMake(CMakeLists.txt)的方式。本文重点讲述一下ndk-build方式,CMake是Android Studio 编译原生库的默认构建工具,CMake官方文档。
1.Android.mk 和Application.mk脚本配置
在刚才安装的NDK目录 C:\…\ndk\android-ndk-r16b\ 下创建一个jni文件夹。并将C/C++代码复制到该路径下,并在该路径下创建Android.mk 和Application.mk文件。
这两个文件的编写规则下期再讲。先展示一个样例:
Android.mk:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)INCLUDE_PATH := $(LOCAL_PATH)/srcSRC_PATH := $(LOCAL_PATH)/srcLOCAL_MODULE_CLASS := STATIC_LIBRARIES # 将用于决定编译时的中间文件存放的位置LOCAL_MODULE := test # 编译生成的目标名LOCAL_MODULE_TAGS := optional # 该模块在所有版本下都编译ifeq ($(TARGET_ARCH), arm)LOCAL_ARM_MODE := thumbLOCAL_CFLAGS += -mthumbendififeq ($(TARGET_ARCH_ABI), $(filter arm64-v8a armeabi-v7a, $(TARGET_ARCH_ABI))) LOCAL_CFLAGS += -D__ARCH_ARM__endifLOCAL_C_INCLUDES := \$(INCLUDE_PATH)/A/ \ $(INCLUDE_PATH)/B/ \MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/main.c)MY_CPP_LIST += $(wildcard $(SRC_PATH)/A/*.c) #/**/MY_CPP_LIST += $(wildcard $(SRC_PATH)/A/*.cpp) #/**/MY_CPP_LIST += $(wildcard $(SRC_PATH)/B/*.c) #/**/MY_CPP_LIST += $(wildcard $(SRC_PATH)/B/*.cpp) #/**/LOCAL_SRC_FILES := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%) # 编译该模块需要的源文件ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)LOCAL_CFLAGS += -D__ARMV7__LOCAL_ARM_MODE := armelseLOCAL_ARM_MODE := armendifLOCAL_CFLAGS += -DHAVE_CONFIG_H -D__ARM_NEON -DNR_NEON # 宏定义 -DXXX LOCAL_CFLAGS += -mfloat-abi=softfp -mfpu=neon # 使能neon指令集 LOCAL_CFLAGS += -fPIE -fPIC # 兼容 5.0+LOCAL_LDFLAGS += -fPIE -pieLOCAL_CPPFLAGS := -std=c++11 # 支持 c++ 11标准 需要在Application.mk中加入:APP_STL := gnustl_static#LOCAL_CPPFLAGS += -std=c++1y # 支持 c++ 14标准include $(BUILD_EXECUTABLE) # 编译可执行文件#include $(BUILD_STATIC_LIBRARY) #表示编译成静态库#include $(BUILD_SHARED_LIBRARY) #表示编译成动态库。
Application.mk:
APP_ABI := armeabi-v7aAPP_PLATFORM := android-14APP_STL := gnustl_static
2.ndk-build编库
在刚才创建的jni路径下,打开cmd,执行 ndk-build命令。
一般情况下不会一次build成功的,耐心看error报的错误信息,可能是代码本身的问题或者是编译选项的配置问题。
编译成功后会有如下提示,库的位置和名称(Android.mk中自己配置的)
[armeabi-v7a] Install : test => libs/armeabi-v7a/test
提示:多次编译error之后,再次编译之前可能需要ndk-build clean.
三、调试ADB工具,在Android平台运行
1.ADB工具安装
ADB,Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。
下载地址:https://dl.google.com/android/repository/platform-tools_r31.0.3-windows.zip
环境变量PATH添加:
C:\…\platform-tools_r31.0.3-windows\platform-tools
然后输入adb version 查看版本 可以看出是否安装成功,如下就已经成功了。
C:\Users\Administrator>adb versionAndroid Debug Bridge version 1.0.41Version 31.0.3-7562133Installed as C:\platform-tools_r31.0.3-windows\platform-tools\adb.exe
2.windows连接Android平台,运行
最常用的Android平台设备是Android系统的手机。
打开手机“开发者模式”和“开发者选项”中的“USB调试”,此时,在cmd窗口输入adb devices可以查找到连接电脑的手机设备了。
在执行下面工作之前,需要获得手机root权限。保证$->#
① 将可执行程序/库 push到手机中
adb push <电脑上的文件路径> <设备里的路径>
②adb shell 进入手机
③cd 到可执行程序的路径下
④chmod 777 <可执行程序名称>
⑤./<可执行程序名称> 运行
四、原创不易,顺手点个赞吧~
更多相关文章
- 【Android】在开发项目的时候,利用AndroidStudio开发工具,突然一直
- 1、Android(安卓)Studio的安装及环境配置
- Android提示:使用或覆盖了已过时的 API
- 获取apk信息工具(android SDK的aapt工具)
- Android开发人员必备的10 个开发工具
- android中的sqlite数据库加密
- Android四款系统架构工具
- Android(安卓)4.1源码编译找不到资源文件解决办法
- 十大Android(安卓)IDE工具和应用