Ubuntu开发环境搭建(5)【Android-JNI开发环境 (windows10+ubuntu16.04)】
来源:互联网 发布:2017淘宝流量突然下降 编辑:程序博客网 时间:2024/06/06 05:11
Android-JNI开发环境 (windows10+ubuntu16.04)
系统环境
* windows10(64位)
* Ubuntu16.04(32位)
* 相关安装包:jdk-8u131-linux-i586.tar.gz、android-sdk_r24.4.1-linux.tgz、android-ndk-r8b-Linux-x86.tar.bz2
* 安装包下载链接
1.安装JDK (Ubuntu)
- 下载jdk:jdk-8u131-linux-i586.tar.gz
- 解压:sudo tar -zxvf jdk-8u101-linux-x64.tar.gz
- 移动到指定文件夹:sudo mv /jdkjdk1.8.0_101 /usr/java
- 设置环境变量,vim ~/.bashrc,在最后添加:
JAVA_HOME=/usr/java/jdk1.8.0_131JRE_HOME=$JAVA_HOME/jreJAVA_BIN=$JAVA_HOME/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binexport JAVA_HOME JRE_HOME PATH CLASSPATH
- 使得环境变量生效:source ~/.bashrc
- 验证:java -version,打印java信息,如果没有反应,尝试关闭当前终端,或者重启
2.安装NDK (Ubuntu)
- 下载nkd:android-ndk-r8b-Linux-x86.tar.bz2
- 解压:tar -jxvf android-ndk-r8b-Linux-x86.tar.bz2
- 移动到指定文件夹:sudo mv android-ndk-r8b /usr/local/ndk
- 设置环境变量,vim ~/.bashrc,在最后添加:
NDK_HOME=/usr/local/ndk/android-ndk-r8bexport NDK_HOMEexport PATH=$PATH:$NDK_HOME
- 使得环境变量生效:source ~/.bashrc
- 验证:ndk-build,打印ndk信息,如果没有反应,尝试关闭当前终端,或者重启
3.安装sdk (ubuntu) 【注:Ubuntu中仅仅安装SDK】
- 下载:android-sdk_r24.4.1-linux.tgz
- 解压:tar -zxvf android-sdk_r24.4.1-linux.tgz
- 移动到指定文件夹:sudo mv android-sdk-linux /opt
- 设置环境变量,vim ~/.bashrc,在最后添加:
ANDROID_HOME=/opt/android-sdk-linuxexport PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform:$ANDROID_HOME/platform_tools
- 使得环境变量生效:source ~/.bashrc
- 验证:android,弹出Android SDK Manager的对话框,如果不行,尝试重启
- 选择下载相关文件
Android SDK Tools 24.4.1Android SDK Platform-tools 25.0.6Android SDK Build-tools 24.0.3Android6.0文件夹中:SDK Platform 23、Google APIs、Sources for Android SDk//注:这里主要下载Android6.0的文件,电脑容量大网速快的话可以都下载。Image文件主要用于模拟器,相对较大,如果不用模拟器的话不用下载,
4.安装adb (Ubuntu)
- sudo apt install android-tools-adb
- 需要用到的命令:
adb devices // 查看电脑连接的安卓设备,插上设备后,执行这个命令,能够list相关设备adb root // 获取root权限adb shell // 进入安卓设备的shell环境,进去后可输入linux支持的命令adb remount // 将设备设为可读可写adb push ~\drivers\hello.ko data/fpga // 需要拷贝到能够读写的文件夹
- 打开手机的开发者选项,勾选USB调试,插上电脑,电脑能够自动识别设备
- 输入命令:adb devices,如下图所示:
5.搭建Android应用程序开发环境 (Windows) - 基于Eclipse
- 安装JDK,配置环境变量,个人安装的是JDK1.7
- 下载并安装Eclipse
- 安装ADT,网上教程很多,不再赘述,需要用到翻墙软件(推荐蓝灯)
- 打开Eclipse中的Android SDK Manager,安装如图所示选中的文件:
- 打开Eclipse中的Android Virtual Device Manager,创建一个新的模拟器,参数设置如图所示:
- 单击start即可运行模拟器,运行很慢,所以建议用自己的手机或者平板进行调试
- 运用手机进行安卓调试:参考网上教程,不在赘述。
6.JNI的实现
6.1 新建Android Application Project
- project的相关信息:
Project:JNITestPackage: com.cong.jniActivity:JNITest
- 编辑res/values/strings.xml文件如下:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">JNITest</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="hello">HelloWorld, JNITestActivity</string> <string name="btn_show">Show</string> </resources>
- 编辑res/layout/main.xml文件如下,添加了一个EditText控件和一个Button控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> <EditText android:id="@+id/ed_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginLeft="5dp" android:layout_marginRight="5dp"/> <Button android:id="@+id/btn_show" android:layout_width="109dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/btn_show"/> </LinearLayout>
- 编辑JNITest.java文件:
package com.cong.jni;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class JNITest extends Activity { // 表示系统第一次加载类的时候,先执行这段代码,这里表示加载动态链接库JNITest.so static{ System.loadLibrary("JNITest"); } private native String GetReply(); // native表示这个方法由本地代码定义,需要通过jni接口调用本地c/c++代码。 private EditText edtName; private Button btnShow; String reply; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_jnitest); reply= GetReply(); edtName= (EditText)this.findViewById(R.id.ed_name); btnShow= (Button)this.findViewById(R.id.btn_show); btnShow.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub edtName.setText(reply); //这段代码表示点击按钮后,把native方法的返回的字符串显示到EditText控件。 } }); }}
- 编译工程,生成.class文件,如果这个时候将程序放到手机上调试会出现闪退的现象,查看输出的错误日志,这是正常的。
6.2用javah工具生成符合JNI规范的C语言头文件
- 将生成的project拷贝到Ubuntu中
- 进入工程目录:cd ~/workspace/android_workspace/JNITest
- 新建jni文件夹:mkdir jni
- 执行命令:
javah -jni -classpath /opt/android-sdk-linux/platforms/android-23/android.jar:bin/classes/ -d jni/ com.cong.jni.JNITest// android.jar的路径:/opt/android-sdk-linux/platforms/android-23/android.jar// class的路径:bin/classes/// 生成头文件的目标路径:jni/
- 在jni/目录中将会有com_cong_jni_JNITest.h文件
6.3编写C/C++代码
- 代码放在与生成的头文件同一目录jin/下
- 文件com_cong_jni_JNITest.c如下:
#include<jni.h> #include<string.h> #include"com_cong_jni_JNITest.h" JNIEXPORT jstring JNICALL Java_com_cong_jni_JNITest_GetReply (JNIEnv *env, jobject obj){ return(*env)->NewStringUTF(env,(char*)"Hello,JNITest"); }
6.4编写Android.mk文件
- 代码放在与生成的头文件com_cong_jni_JNITest.h同一目录jin/下
- 文件Android.mk如下:
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := libJNITestLOCAL_SRC_FILES:= com_cong_jni_JNITest.cinclude $(BUILD_SHARED_LIBRARY)#pay attention to no space after per row
- LOCAL_MODULE表示编译的动态库名、LOCAL_SRC_FILES 表示源代码文件
- 此时jni/文件夹中的文件:
6.5用ndk工具编译并生成.so文件
- 进入工程目录:cd ~/workspace/android_workspace/JNITest
- 执行命令:ndk-build,如图所示:
- 然后libs/armeabi目录下生成了libJNITest.so文件:
阅读全文
0 0
- Ubuntu开发环境搭建(5)【Android-JNI开发环境 (windows10+ubuntu16.04)】
- Windows10下搭建Android开发环境
- Android驱动程序开发-JNI开发环境搭建+示例程序 (windows10 64位)
- Android JNI开发环境搭建
- Android Jni开发环境搭建
- JNI开发环境搭建
- JNI开发环境搭建
- JNI开发环境搭建
- JNI开发环境搭建
- JNI开发环境搭建
- Ubuntu16.04 Android开发环境搭建JDK SDK NDK
- Ubuntu16.04 Android开发环境搭建JDK SDK NDK
- Ubuntu搭建Android开发环境
- ubuntu android开发环境搭建
- ubuntu搭建android 开发环境
- android ubuntu 开发环境搭建
- ubuntu android开发环境搭建
- Ubuntu搭建Android开发环境
- Linux: Problems with Fedora 25 and the Wayland window manager
- Android 应用安装过程分析
- Java基础——HashMap源码分析及面试题解答
- width:100%与width:auto的区别
- Kotlin-内联函数
- Ubuntu开发环境搭建(5)【Android-JNI开发环境 (windows10+ubuntu16.04)】
- [杂言] 坑集合(Finished!)
- 刷清橙OJ--A1028.选择计算
- 非常详细的rsyslogd & logrotate配置文件解析
- APP开发实战173-ActionBar资源文件的生成工具
- android -简单注册登录页面应用
- 排序--选择排序
- 提高篇项目1-将数组n前面的数输出
- Visual Studio中在源文件与头文件之间切换的快捷键