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

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


先设置环境变量,下面是ndkadk的设置,如果你没有装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/tools
exportPATH

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

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


1。查看帮助信息:

android-h

2。查看androidsdk

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编绎cc++

编译so文件

ndk-build

ndk-build NDK_LOG=1

创建build文件



11。生成用于创建apkbuild.xml文件

androidupdate project --target 3 -p . -s

12。生成apk,分别对应于releasedebug版本

antdebug

antclean release

13。生成证书

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

JDKkeytool用于创建私钥。
-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"/>

你可能感兴趣的:(MTK专栏,一些工具使用,android应用开发)