android ndk zip 怎么使用
1.NDK是一系列工具的集合 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
这些工具对开发者的帮助是巨大的。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
2.NDK提供了一份稳定、功能有限的API头文件声明 Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。
从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。
NDK开发环境的搭建1.下载安装Android NDK2.下载安装cygwin 由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用。
通过它,你就可以在不安装linux的情况下使用NDK来编译C、C++代码了。
这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包 然后开始选择安装这些包吧,点skip,把它变成数字版本格式,要确保Bin项变成叉号,而Src项是源码,这个就没必要选了。
11)下面测试一下cygwin是不是已经安装好了。
运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状 态,如果status是ok的话,则cygwin运行正常。
然后依次输入gcc –version,g++ --version,make –version,gdb –version进行测试,如果都打印出版本信息和一些描述信息,则cygwin安装成功!3.配置 NDK 环境变量 a.首先找到 cygwin 的安装目录,找到一个 home\\.bash_profile 文件,我的是:E:\cygwin\home\Administrator\.bash_profile , ( 注意:我安装的时候我的 home 文件夹下面什么都没有,解决 的办法:首先打开环境变量,把里面的用户变量中的 HOME 变量删掉,在 E:\cygwin\home 文件夹下建立名为Administrator 的文件夹(是用户名),然后把 E:\cygwin\etc\skel\.bash_profile 拷贝到该文件夹下 ) 。
b.打开 bash_profile 文件,添加 NDK=/cygdrive// 例如:NDK=/cygdrive/e/android-ndk-r5 export NDK NDK 这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存 c.打开 cygwin ,输入 cd $NDK ,如果输出上面配置的 /cygdrive/e/android-ndk-r5 信息,则表明环境变量设置成功4.用 NDK 来编译程序 a.现在我们用安装好的 NDK 来编译一个简单的程序吧,我们选择 ndk 自带的例子 hello-jni ,我的位于E:\android-ndk-r5\samples\hello-jni( 根据你具体的安装位置而定 ) ,b.运行 cygwin ,输入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,进入到 E:\android-ndk-r5\samples\hello-jni 目录。
c.输入 $NDK/ndk-build ,执行成功后,它会自动生成一个 libs 目录,把编译生成的 .so 文件放在里面。
($NDK是调用我们之前配置好的环境变量, ndk-build 是调用 ndk 的编译程序 ) d.此时去 hello-jni 的 libs 目录下看有没有生成的 .so 文件,如果有,你的 ndk 就运行正常啦!5.在 eclipse 中集成 c/c++ 开发环境 a.装 Eclipse 的 C/C++ 环境插件: CDT ,这里选择在线安装。
找到对应你 Eclipse 版本的 CDT 插件 的在线安装地址。
b.然后点 Help 菜单,找到 Install New Software 菜单 c.点击 Add 按钮,把取的地址填进去,出来插件列表后,选 Select All ,然后选择下一步即可完成安装。
d.安装完成后,在 eclispe 中右击新建一个项目,如果出现了 c/c++ 项目,则表明你的 CDT 插件安装成功啦!6.配置 C/C++ 的编译器 a.打开 eclipse ,导入ndk 自带的hello-jni 例子,右键单击项目名称,点击 Properties ,弹出配置界面,之后再点击 Builders ,弹出项目的编译工具列表,之后点击 New,新添加一个编译器,点击后出现添加界面,选择 Program ,点击 OK。
b.出现了添加界面,首先给编译配置起个名字,如: C_Builder,设置 Location 为 \bin\bash.exe 程序,例:E:\cygwin\bin\bash.exe ,设置Working Directory为\bin 目录,例如: E:\cygwin\bin,设置 Arguments 为 --login -c "cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK /ndk-build" 上面的配置中 /cygdrive/e/android-ndk-r5/samples/hello-jni 是你当前要编译的程序的目录, $NDK 是之前配置 的 ndk 的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变, Arguments 这串参数实际是 给 bash.exe 命令行程序传参数,进入要编译的程序目录,然后运行 ndk-build 编译程序 c.接着切换到 Refresh 选项卡,给 Refresh resources upon completion 打上钩 d.然后切换到 Build Options 选项卡,勾选上最后三项 e.之后点击 Specify Resources 按钮,选择资源目录,勾选你的项目目录即可 f.最后点击 Finish,点击 OK 一路把刚才的...
android ndk路径能使用盘符吗
一.学习本篇教程需要具备的条件:1. 了解Java中JNI的概念、好处以及使用方法,网上很多介绍,这里就不重复了。
2. 你的电脑配置好了Android应用开发环境,即:JAVA、Eclipse、ADT和Android SDK。
二.准备需要Android NDK和windows下c、c++代码的编译器cygwinandroid-ndk-r6-windows.zip cygwin 三.配置1. 解压缩NDK和cygwin,并配置cygwin的环境变量。
例如:我解压缩到D盘根目录,那么在环境变量的path中添加:”D:\cytwin\bin;”,如下图所示。
2. 在命令行中进入cygwin目录,并执行cygwin.bat,如果你不是用Administrator账号登录的系统,那么会在cygwin\home\文件夹中生成一个以你的登录名命名的新的文件夹。
3. 修改新生成文件夹中的“.bash_profile ”文件,用UE或editplus等文本编辑器打开,在最后增加:NDK=/cygdrive/d/android-ndk-r6export NDK然后保存关闭。
d/android-ndk-r6表示ndk在d盘,如果你的ndk放到了其他盘符或路径,例如放到e:\sdk目录中,那么就改为e/sdk/android-ndk-r6。
(如果是Administrator账号登录,直接修改Administrator文件夹中的文件。
)四.开始使用1.在命令行窗口中进入cygwin目录,执行cygwin.bat2.进入android-ndk中的samples文件夹里的某个项目文件夹,这里以hello-jni为例进入文件夹的方式与MS-DOS类似,用cd + 空格 + 盘符+ 路径即可,例子见下图3.执行$NDK/ndk-build编译4.例子编译成功后导入Eclipse中,编译并部署测试如图:五.如何在自己的工程中使用NDKAndroid-ndk中的例子大家会编译了,那么在自己现有的工程想要调用本地方法应该怎么做呢?1.在JAVA代码中声明native方法,2.生成头文件然后需要生成C或C++的源码,供JAVA调用。
可以按照JNI的命名规则,也可以使用JDK的javah命令来生成,这里推荐使用javah,避免手动编写出现错误不好排查。
javah命令的使用方法见javah命令的帮助这里以我的测试工程为例,编写好native方法后,编译工程,eclipse会在bin目录生成.class文件,在命令行中进入bin目录,执行javah + 包名 + 类名,会在bin目录下生成一个头文件。
这个文件就是JAVA与本地代码交互的接口了,做C或C++的开发人员针对这个头文件开发。
Linux下NDK编译出的SO库能在WIndows下的android工程直接使用么
可以使用的。
解析:首先Android就是Linux内核。
android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。
安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库android的NDK开发需要在linux下进行: 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。
备注:NDK编译步骤:1.选择 ndk 自带的例子 hello-jni ,位于E:\android-ndk-r5\samples\hello-jni( 根据具体的安装位置而定 ) 。
2.运行 cygwin ,输入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,进入到 E:\android-ndk-r5\samples\hello-jni 目录。
3.输入 $NDK/ndk-build ,执行成功后,它会自动生成一个 libs 目录,把编译生成的 .so 文件放在里面。
($NDK是调用我们之前配置好的环境变量, ndk-build 是调用 ndk 的编译程序 )4.此时去 hello-jni 的 libs 目录下看有没有生成的 .so 文件,如果有,ndk 就运行正常了。
有用android NDK 成功编译 Redsocks2 的么
安卓应用中,也就是java层,不能也没必要使用汇编语言。
因为这个是jvm的,和底层无关要使用汇编,就是在C/C++层,直接asm就行。
和其它平台没什么区别。
而要java调用汇编的话,可以走jni ,用Jni调用C ++, C++里面嵌入汇编。
但实际上没什么必要,很少用java去一直调到汇编的情况。
如何编译并修改FBReader的package
1、首先下载FBReaderJ的源代码(github如何使用就不介绍了,不会的自行搜索),下载到zip格式的压缩包。
2、已经配置好的android开发环境,包括sdk和ndk,博主用的都是安卓开发官网上给的。
sdk:带有adt 的eclipse,至于如何安装就不详述了,自行谷歌百度。
3、解压下载到的源码包,并将其导入到eclipse中。
看到上边的红色叉叉,我们需要修复一下,首先是library右键单击library,倒数第二个属性接着是FBReaderJ,同样是右键,属性不出意外的话就能消除掉程序的错误。
4、接着需要进行ndk编译,虽然程序看上去没有错误,但是libs文件夹中缺少*.so文件打开cygwin,进入FBReaderJ文件夹中,运行命令 /cygdrive/d/android/android-ndk/ndk-build,就开始进行编译了。
如下图所示,等待程序执行完成(比较耗时)。
这个时候运行程序就可以正常使用啦5、修改package我们研究FBReader主要是希望改造它并为自己所用,所以修改package是很重要的。
5.1 修改AndroidManifest.xml文件将package="org.geometerplus.zlibrary.ui.android"修改为package="com.aaa.helloworld"并保存5.2 这时src文件夹中的一些类报错,打开这些保存的文件,将其中报错的import org.geometerplus.zlibrary.ui.android.R;修改为import com.aaa.helloworld .R;即可。
然后就达到我们的目的啦
NDK中的字符串该如何比较
Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。
第一步:转换工程。
点击“文件 -> 新建 -> 其他”(快捷键:Ctrl+N)。
选择“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。
进入“下一步”。
第二步:选中你刚才建的“HelloJni”工程,下面左边选“Makefile project”右边选“Cygwin GCC”。
确定后提示的“透视图”不清楚是什么,点击“是”即可。
第三步:在“HelloJni”工程上右键,选择“属性”。
配置“C/C++ Build”和“C/C++ General -> Paths and Symbols”。
...
如何用android studio写一个hello world
android studio运行HelloWorld详解:1、打开project视图:2、在app目录下,build.gradle文件如下 文件路径: project视图下,app/build.gradleapply plugin: 'com.android.application'android {// 编译器选择的版本compileSdkVersion 14buildToolsVersion "21.1.1"// 默认配置defaultConfig {// 应用程序包名applicationId "com.example.shiyanlou.myapplication"// 最小的版本,即手机需要13的sdk才能运行minSdkVersion 15// 目标sdktargetSdkVersion 21// app 版本号versionCode 1// app 版本名versionName "1.0"}// build 配置,暂不用管buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}// 外接的包需要在下面添加dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:21.0.3'}3、在src/main/java/com.example.shiyanlou.myaplication目录下,MainActivity.java package com.example.shiyanlou.myapplication;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;/*** 自定义Activity类,要求必须继承android.app.Activity;* 此处因为新建的时候选择了BlankActivity,默认继承ActionBarActivity* 由于Activity是android四大组件(Activity(活动),Service(服务),* BroadcastReceiver(广播接收者),Content Provider(内容提供者))之一, 因此必须在功能清单文件(AndroidManifest.xml)中进行注册,注册方式为:* */public class MainActivity extends ActionBarActivity {/*** onCreate在Activity被创建时被调用,而且只调用一次,主要用来完成初始化工作* 需要注意的是,此时的super.onCreate(savedInstanceState);不能省略,它用于保存恢复现场*/*@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/** 将Activity到用户界面设定为R.layout.activity_main,即* res/layout/activity_main.xml* 可在build/generated/source/r/debug/com../R.java下查看layout静态内部类中的activity_main的静态成员* 对应的是res/layout/activity_main.xml*/setContentView(R.layout.activity_main);}/*** 在用户单击手机上的菜单键时触发,用来弹出菜单*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {/** MenuInflater getMenuInflater():得到菜单填充气对象* MenuInflater.inflate();执行填充操作* R.menu.main:将菜单界面定位到res/menu/main.xml** R.menu.main:访问R.java中中的静态内部类menu中的静态成员main,* 对应的资源文件在res/menu/main.xml*/getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}4、HelloWorld 布局界面如图 文件路径: project视图下,app/src/main/res/layout/activity_main.xml5、在androidstudio中查看运行结果是通过Android下的Logcat查看的
【安卓开发】点击按钮,显示隐藏的文字“Hello”怎么写。
Activit:@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);final TextView text = (TextView) findViewById(R.id.textView1);final Button btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (text.getVisibility() == 0) {text.setVisibility(View.GONE);btn.setText(R.string.show);} else {text.setVisibility(View.VISIBLE);btn.setText(R.string.hide);}}});}main.xml:android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" >android:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello_world" />android:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hide" />string:Hello world!显示隐藏大概就是这样了!这样点击按钮就能隐藏文本了!
转载请注明出处51数据库 » cygwin android hello
低吊射滑友内含