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

linux下开发android_jni过程及错误经历

2016-03-23 15:03 369 查看
第一次用linux操作系统,虽说有ubunto,一样难以接受

搭了两三天的环境,试了一天的开发

说说经验

关于linux的一些命令

sudo 获取权限

vi打开一个文本

touch A.java在当前目录下创建一个名字叫做A的java文件

cd ..返回到上一级

cd返回到根目录

sudo vi /etc/profile查看环境变量(姑且这么叫。。。)

pwd输出当前目录的绝对路径

ls输出当前目录下所有的文件和文件夹

clear清空cmd界面

在文本中:

insert表示插入(可以理解成输入)

Replace表示替换

Esc退出编辑模式

在退出编辑模式的情况下shift+冒号,

wq保存并退出

q!强制退出

环境变量中:

#为注释,:冒号为各环境变量的分隔线(windows下为分号;)

关于环境搭建

关于jdk的搭建:

下载网站
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
选linux 对应系统版本的jdk

下载安装

然后配置环境变量

打开linux的cmd界面,回到主界面(我这里是desktop)

sudo vi /etc/profile

回车会让你输入密码,一般是123456,若自己改过就填改过的密码

然后会进入一个文本编辑的过程

把光标弄到文本最下面,然后按一下键盘的insert键

fi和export之间输入

export JAVA_HOME=/home/jdk1.8.0_65

export JER_HOME=$JAVA_HOME/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

在path后加上(这里和windows不同,环境变量之间用冒号分隔:)

$JAVA_HOME/bin:$JRE_HOME/bin

之后按Esc键退出编辑状态

按shift+冒号,输入wq回车,保存并退出

输入source /etc/profile使环境变量成功被使用

输入java自带的命令查看是否被编译成功

关于eclipse和adt:

好友发给我的东西,我存在网盘,直接下载即可
https://yunpan.cn/cuqkmNCVDX8JN 访问密码 4969

下载好解压,里面自带eclipse和sdk(adt插件已装好)

打开eclipse,指定sdk的路径即可使用

另外:如果想使用其他版本的sdk,可以直接在window上复制粘贴进相应的文件夹里即可,所需要的右三个,build-tools(工具),platforms(不知道事什么),system-images(此版本的模拟器)

下载并安装64位的ndk(但是网上基本没有64位的NDK,直接使用32位的可以代替)

和上面一样,存在了网盘,
https://yunpan.cn/cuqk8FEJ2pAbF 访问密码 b5d4

下载好之后解压到任意目录,然后打开cmd界面,

进入你存放ndk的父目录,输入pwd,输出绝对路径,复制

返回到最底层(我这里是desktop)

输入

sudo vi /etc/profile回车

会提示输入密码,和上面一样,输入密码后回车

进入编辑页面把光标弄到最下面,还是fi和export之间, 输入

export NDKROOT="",在括号之间粘贴ndk的绝对路径

ps:之前因为这个路径,我以为我装好了,结果浪费了几个小时,,,

然后在path中添加

$NDKROOT

注意:各环境变量之间的分隔符是冒号

然后按Esc退出编辑状态,按下shift+冒号,

输入wq回车,保存并退出

输入source /etc/profile使环境变量生效

之后为了确定是否成功装好了ndk

需要进入ndk目录,进到sample目录下,进入helloJni目录下,

输入

ndk-build

如果提示不是内部或外部命令,则没有安装成功,若提示xxxxx 最后是. Stop则安装成功

开始开发:

步骤:

1.创建一个安卓项目,写native方法

2.用javah编译出.h文件

3.写.c文件(目前不知道该怎么写,测试时是复制的sample下.c的返回一个字符串)

4.ndk-build

5.让它自己编译

6.运行

具体和注意事项

1。创建安卓项目,只声明一个native方法,但不进行调用

2.cmd进入项目的src目录下输入,

javah -classpath . com.xxx.xxx.className 会生成一个.h文件

剪切.h文件,回到项目根目录下,创建jni文件夹,将.h丢进去

3.写.C文件

回到eclipse,刷新项目,会在项目下出现jni文件夹和.h文件

在jni文件夹上点右键,new->file

名字为xxx.c

打开.h文件,复制方法到.c中,分号改为{},在第一个参数后边添加env,在第二个参数后边添加object,若是直接复制粘贴的C文件,请注意方法的参数是不是JNIENV 和Jobject,若不是,请改过来,不然会报错

找到NDK的根目录,在sample里面的项目中随便找个android.mk和Application.mk复制到jni目录下

打开Application.mk文件,确定内容为

APP_ABI := all

若不是,请修改

打开Android.mk

找到前面为蓝色的那几行

其中LOCAL_MODULE为即将生成.so文件的名字

另外一个LOCAL_SRC_FILES为加载的.c文件,其他的蓝色文字全部删掉(因为目前不知道用处。。。。)

4(手动编译)和5(自动编译)

ndk-build命令

打开cmd到项目根目录下

输入ndk-build(这个是手动进行编译)

5.让它自己进行编译

右键点击项目,点击properties,进入Builders,点击右边的new,选择Program

点ok,

在最上面随便输入一个名字(我这里是fuck)

在main选项卡中,

location是ndk目录下命令ndk-build的位置

working Directory是项目根目录的位置

设置完切换到Refresh选项卡中

勾选Refresh rexxxxxxxxx

勾选Recursively inxxxxxx

设置切换到Build Options

勾选Allocate Consolexxxxxxx

在Run the builder:下

勾选1235 并点击右边的Specify Resources

然后选择项目的jni文件夹

最后点ok

之后每一次保存(随着eclipse的编译)都会重新编译一次

如果没有错误,就可以直接运行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: