Android NDK编译

 

Android NDK编译学习

1、Hello_Jni学习

    在android-ndk-r8\samples的目录下有大量的NDK的测试用例,只需要在Eclipse中导入,即可以使用。不过想要在Eclipse中编译JNI,当然得配置一些东西。

    首先,JDK的安装是少不了的,安装好JDK后,配置好JDK的环境变量:

  • 在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写“C:\Program Files\Java\jdk1.6.0_26”了。
  • 在系统变量里点击新建变量名填写CLASSPATH,变量值填写“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。注意不要忘记前面的点和中间的分号。
  • 在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。注意前面的分号。

    再次,下载SDK,配置好环境变量:

  • ANDROID_SDK_HOME,变量值是android-SDK-windows的路径。
  • Path变量,变量值方框里输入.;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools; 
  • 最后在cmd中运行adb命令。

    最后,下载NDK。

    

    安装Eclipse,导入android-ndk-r8\samples\hello-jni的例子:

 

          

    在HelloJni的工程目录下,会看到一个JNI的目录,该目录就是放C代码和Android.mk的地方,也是NDK编译的主目录。该例子主要是Java调用一个JNI方法,获取一个字符串,并显示在TextView上。下面就需要配置Builder了。

  • 在工程-->右键-->Properties-->Builders,New一个Builder出来

            

 

  •  点击Browse File System选择ndk目录下的ndk-build.cmd;然后点击BrowseWorkspace选择工程。

          

 

  • 选择Refesh,选择如下:

        

 

  • 选择Build Options,勾选如下

        

 

 

  • 选择Specify Resources,然后勾选需要编译的工程中的JNI目录。

        

  

  • 然后保存,Eclipse就会自动去编译C代码了。最后会在libs-->armeabi目录下生成一个对应的.so库。

    

    为了验证编译的.so是否可用,只需要在手机上run一把,如果首次链接手机,没有驱动,那么安装一个“豌豆荚”就可以了,当想要run的时候,一定要把豌豆荚给关了,在任务管理器中把豌豆荚的进程给干掉,因为它会占用adb,导致Eclipse链接不成功。

    adb相关命令:adb kill-server   adb start-server

 

2、NativeActivity测试用例

    该例子是一个纯C代码的例子,调用egl相关api,改变屏幕的颜色。

    android.mk配置:

          LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := native-activity

LOCAL_SRC_FILES := main.c

LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM

LOCAL_STATIC_LIBRARIES := android_native_app_glue

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)

      

    android.xml配置:

  修改AndroidMainfest.xml文件的内容为一下内容。唯一需要注意的就是<meta-data android:name="android.app.lib_name" android:value="droidblaster"/>标签中,value的值要和Android.mk 中的LOCAL_MODULE名称一致。

         AndroidMainfest.xml的内容如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

                            package="com.packtpub.droidblaster"

                            android:versionCode="1"

                            android:versionName="1.0">

<uses-sdk android:minSdkVersion="10"/>

         <application android:icon="@drawable/icon"

                                      android:label="@string/app_name">

                   <activity android:name="android.app.NativeActivity"

                                       android:label="@string/app_name">

                   <meta-data android:name="android.app.lib_name"

                                        android:value="droidblaster"/>

                            <intent-filter>

                                     <action android:name="android.intent.action.MAIN"/>

                                     <category android:name="android.intent.category.LAUNCHER"/>

                            </intent-filter>

                   </activity>

         </application>

</manifest>

 

          

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值