最简单 NDK 样例
以下在 Ubuntu下 编译一个 c 语言 hello world 并在 android 手机或模拟器上执行
进入程序位置
cd ~/pnp5/jni
有三个文件 main.c Android.mk, Application.mk, 内容:
$ cat main.c #include <stdio.h> int main (void)
{ printf("hello world");
return 0;
} ~/pnp5/jni$ cat Android.mk LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_SRC_FILES:= \
main.c LOCAL_MODULE:= pnp5
LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) ~/pnp5/jni$ cat Application.mk
APP_ABI := all
注:Application.mk 能够没有(怎样你仅仅须要arm程序)
在当前文件夹执行 ndk-build
( 假设没有ndk,去下载一个)
~/pnp5/jni$ ~/android-ndk-r10d/ndk-build
[arm64-v8a] Compile : pnp5 <= main.c
[arm64-v8a] Executable : pnp5
[arm64-v8a] Install : pnp5 => libs/arm64-v8a/pnp5
[x86_64] Compile : pnp5 <= main.c
[x86_64] Executable : pnp5
[x86_64] Install : pnp5 => libs/x86_64/pnp5
[mips64] Compile : pnp5 <= main.c
[mips64] Executable : pnp5
[mips64] Install : pnp5 => libs/mips64/pnp5
[armeabi-v7a] Compile thumb : pnp5 <= main.c
[armeabi-v7a] Executable : pnp5
[armeabi-v7a] Install : pnp5 => libs/armeabi-v7a/pnp5
[armeabi] Compile thumb : pnp5 <= main.c
[armeabi] Executable : pnp5
[armeabi] Install : pnp5 => libs/armeabi/pnp5
[x86] Compile : pnp5 <= main.c
[x86] Executable : pnp5
[x86] Install : pnp5 => libs/x86/pnp5
[mips] Compile : pnp5 <= main.c
[mips] Executable : pnp5
[mips] Install : pnp5 => libs/mips/pnp5
发如今 与jni 同一级别的 libs 文件夹生成各种 target 的 程序。
在模拟器(真机)上执行
用 adb devices, 检查android是否启动
用 adb push pnp5 data/
用 adb shell 进入设备,而后执行 cd data; chmod 777 pnp5; ./pnp5
hello world 就打印出来了
最简单 NDK 样例的更多相关文章
- Android中关于JNI 的学习(零)简单的样例,简单地入门
Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...
- Introspector(内省)简单演示样例 与 简单应用
简单演示样例: package com.asdfLeftHand.test; import java.beans.BeanDescriptor; import java.beans.BeanInfo; ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- Thrift的安装和简单演示样例
本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述 ...
- [hadoop系列]Pig的安装和简单演示样例
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...
- 一则简单演示样例看Oracle的“无私”健壮性
Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- Android通过startService播放背景音乐简单演示样例
关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...
- 使用CEF(二)— 基于VS2019编写一个简单CEF样例
使用CEF(二)- 基于VS2019编写一个简单CEF样例 在这一节中,本人将会在Windows下使用VS2019创建一个空白的C++Windows Desktop Application项目,逐步进 ...
随机推荐
- xamarin 学习笔记02- IOS Simulator for windows 安装
微软发布了在window下的ios模拟器 下载 ios模拟器 并安装在windows系统上. Xamarin for Visual Studio 和 网络上的 Mac 中的 Xamarin.iOS 开 ...
- C#筆記--DataGridView使用
1.databingcomplete 当数据源的内容更改时,或者当 DataSource.DataMember 或 BindingContext 属性的值更改时,会引发此事件. 例如,如果要基于内容更 ...
- webgl推荐书籍
网址:https://www.douban.com/doulist/45940373/ webgl 来自: Pasu2017-04-17创建 2017-07-25更新 推荐 关注 2 人关注 ...
- js 或jquery定义方法时,参数不固定是怎么实现的
//①不定义接受参数的方式来接受参数(arguments) function getparams(){ //利用arguments来接受参数,arguments表示参数集合, //里面存放的调用这个方 ...
- php生成订单号-当天从1开始自增
/** * 生成订单号 * -当天从1开始自增 * -订单号模样:20190604000001 * @param Client $redis * @param $key * @param $back: ...
- 2019浙师大校赛(浙大命题)(upc复现赛)总结
2019浙师大校赛(浙大命题)(upc复现赛)总结 早上九点开始.起得迟了,吃了早饭慌慌张张跑过去,刚到比赛就开始了. 开始分别从前往后和从后往前看题,一开始A题,第一发WA,第二次读题发现漏看了还有 ...
- 启发式合并CodeForces - 1009F
E - Dominant Indices CodeForces - 1009F You are given a rooted undirected tree consisting of nn vert ...
- 使用sphinx
SQL 结构化查询语言(是一种标准,所有的关系型数据库Mysql,sqlserver,oracle) sphinx的使用两种方式: 第一种: 使用sphinx的API来操作sphinx (常 ...
- 开发基本的php框架
github路径:https://github.com/zhengchuzhou/easyPhpFramework 一.目录结构及用途 二.相关代码: 1.入口文件(index.php): <? ...
- c++基础_字母图形
#include <iostream> #include <algorithm> using namespace std; int main(){ ,m=,c; cin> ...