android ndk 程序,android 所有使用NDK开发android应用程序

android 全部使用NDK开发android应用程序

android在ndk r5版本中,提供了使用NDK来编写android应用。也算是C,C++的福音,其实android源码中,很多设计本质上都是c和C++实现的,然后使用jni调用来使JAVA程序员能够参与开发。但是在开发复杂应用的过程中,暴露出了大量的问题,由于java语言的局限性,使得很多问题很难从根本上解决。比如java内存管理的自动化,使得项目中经常出现空指针问题,但因为java并不提供指针的直接支持,比如浏览大量图片时,产生的内存异常,这一切官方似乎也提供不了有效的解决办法。自从有了ndk,使得大家可以不再满足于知其然而不知其之所以然。

先设置环境变量,下面是ndk,adk的设置,如果你没有装jdk,也需要安装,并像这样配置好。路径配置如下。使用vim编辑~/.profile在其中加入以下内容。

#---- NDK ----

NDK_ROOT=~/NDK/android-ndk-r8d

PATH=$PATH:$NDK_ROOT

export NDK_ROOT#---- android-SDK ----

ANDROID_SDK_ROOT=~/SDK/adt-bundle-linux-x86_64/sdk

PATH=$PATH:$ANDROID_SDK_ROOT

export ANDROID_SDK_ROOT#---- adb ----

ADB_PATH=~/SDK/adt-bundle-linux-x86_64/sdk/platform-tools

PATH=$PATH:$ADB_PATH#---- tools/android ----

PATH=$PATH:~/SDK/adt-bundle-linux-x86_64/sdk/toolsexportPATH

借助anroid提供的丰富的命令行工具,在没用eclipse等开发工具的情况下,使用VIM和LINUX 的shell可以完成几乎所有的操作。

Android是一个强大的命令行工具。

1。查看帮助信息:

android-h

2。查看android的sdk

androidsdk

3。已经安装的android版本包

androidlist targets

4。查看模拟器

androidlist avd

5。运行模拟器Gingerbread

emulator@Gingerbread

6。创建android工程

android create project -n TestAndroidProj -t 'android-15' -p ./android_proj -k com.magcomm.test -a MainActivity

-n:项目名(TestAndroidProj);-t:androidSDK版本号(android-15);-p:Android项目的路径;-k:Java的包名;-a:初始的Activity。

运行上面的命令后,一个Android项目就创建完成了。名字为TestAndroidProj,api版本为15,路径为当前目录下android_proj,包名为com.magcomm.test,主activity为MainActivity

7。创建java工程

ProjectCreate./myproject -n java

8。创建模拟器

Androidcreate avd -n forwind.cn

9。

ProjectList

ProjectTreemyproject

10。编辑完成,进入jni编绎c,c++

编译so文件

ndk-build

ndk-build NDK_LOG=1

创建build文件

11。生成用于创建apk的build.xml文件

androidupdate project --target 3 -p . -s

12。生成apk,分别对应于release和debug版本

antdebug

antclean release

13。生成证书

keytool-genkey -v -keystore app_signing.keystore -alias release -keyalg RSA-keysize 2048 -validity 10000

JDK的keytool用于创建私钥。-keystore:输出私钥文件的名称;-alias:私钥别名,可存储多个键在密钥库用来后面使用;设置RSA加密算法,密钥长度2048位和10000天的有效期。确保生成的keystore文件非常安全,因为这谷歌市场对你的唯一标识。

14。签名证书

jarsigner-keystore app_signing.keystore -digestalg SHA1 -sigalg MD5withRSAbin/TestAndroidProj-release-unsigned.apk release

15去掉签名jarsigner -verify bin/TestAndroidProj-release-unsigned.apk

15发布,这个未用过,需要google支持,应该不能正常使用

zipalign-v 4 bin/TestAndroidProj-release-unsigned.apk bin/TestAndroidProj.apk

16。

antclean debug install

17.如果是使用eclipse创建的项目,只需要这三步,就可以编辑成apk应用了,而且其实最后一步,eclipse也会帮我们做

a。编译so文件

ndk-build

ndk-build NDK_LOG=1

b。创建build文件

androidupdate project --target 3 -p . -s

c。打包生成apk

antdebug

antrelease

d。漏了个步骤,在创建jni文件时,可以先在eclipse里引入相应的so库名和相应的导出函数,然后使用命令

javah -classpath bin -d jni com.example.hellojni.MainActivity 生成相应头文件

-classpath bin:表示类的路劲

-d jni: 表示生成的头文件存放的目录

com.example.hellojni.HelloJni 则是完整类名

这一步的成功要建立在已经在 bin/com/example/hellojni/  目录下生成了 HelloJni.class的基础之上,而且这个bin的路径在不同版本时好像略有差异,com.example.hellojni.HelloJni.MainActivity要换成自己的相应包名和引用jni的类名,然后可以完成这些生成包含这些函数的类名。

18。如果对这么多命令行不感冒,希望借助eclipse来完成的话,下面有网友提供的eclipse配置NDK的方法,不保证能运行,试试吧

一.新建一个Android工程,工程名为jnitest

二.右击jnitest工程-->new-->other;选择C/C++-->Convertto a C/C++ Project(Adds C/C++Nature)

三.右击jnitest工程-->properties;在左边找到C/C++Build,在右边的 BuilderSettings将

Buildcommand:添加ndk-build-j4

Builddirectore: ${workspace_loc:/jnitest}

四.打开C/C++Build找到Environment,在右边Add一变量

Variable:NDK

Value:/home//AndroidNDK

确保AndroidNDK下面有ndk-build,这个自己下载。

五然后打开左边的C/C++General-->Path and Symbols

进入右边的includes-->GNUC添加

${NDK}/platforms/android-9/arch-x86/usr/include

${NDK}/platforms/android-9/arch-arm/usr/include

GNUC++添加

${NDK}/sources/cxx-stl/stlport/stlport

${NDK}/platforms/android-9/arch-x86/usr/include

${NDK}/platforms/android-9/arch-arm/usr/include

六.建立jni文件夹,并编写.mk文件

19。提供一个全部使用C编写的activity:

1。首先是AndroidManifest.xml文件配置:

package="com.example.native_activity"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name"

android:configChanges="orientation|keyboardHidden">

android:value="native-activity"/>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值