Hello World for Android NDK

本文介绍如何使用 Android NDK 将 C 代码编译成可在 Android 模拟器上运行的可执行文件。通过修改 hello-jni 示例项目,增加 main 函数并编译为可执行程序,最终在模拟器上成功运行并显示 HelloWorld。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在網路看到有人有NDK寫一個可執行的程式,感覺很有趣,馬上就來實驗看看

我們以NDK下面的hello-jni當範例
1.修改hello-jni.c
$(NDK)\apps\hello-jni\project\jni\hello-jni.c

將下面這段程式碼加在原程式碼的下面
[code]
#include "stdio.h"
int main()
{
printf("hello world!")
return 0;
}
[/code]
2.修改Android.mk
$(NDK)\apps\hello-jni\project\jni\Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c

#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE) //加入此行,指出此為一個可執行檔


//修改好後,馬上進行編譯
$ make APP=hello-jni
Android NDK: Building for application 'hello-jni'
Compile thumb : hello-jni <= apps/hello-jni/project/jni/hello-jni.c
apps/hello-jni/project/jni/hello-jni.c:37:2: warning: no newline at end of file
Executable : hello-jni
Install : hello-jni => apps/hello-jni/project/libs/armeabi


//編譯OK,看看我門生出啥東西來
Administrator@mychat-53bb70c5 /cygdrive/d/android-ndk-1.6_r1/apps/hello-jni/project/libs/armeabi
$ dir
hello-jni libhello-jni.so

//開啟模擬器
D:\android-sdk-windows\tools>android list avd
Available Android Virtual Devices:
Name: adv_Android1.6
Path: C:\Documents and Settings\Administrator\.android\avd\adv_Android1.6.avd
Target: Android 1.6 (API level 4)
Skin: HVGA
---------
Name: Android1.6
Path: C:\Documents and Settings\Administrator\.android\avd\Android1.6.avd
Target: Android 1.6 (API level 4)
Skin: HVGA
D:\android-sdk-windows\tools>emulator @adv_Android1.6

//使用adb Shell將我們生成的可執行檔丟到模擬器上
D:\android-ndk-1.6_r1\apps\hello-jni\project\libs\armeabi>adb push hello-jni /data/hello-jni
205 KB/s (0 bytes in 3284.000s)

//利用adb 的shell命令進入模擬器的Shell
D:\android-ndk-1.6_r1\apps\hello-jni\project\libs\armeabi>adb shell

# cd /data
cd /data
# ls -l
ls -l
-rw-rw-rw- root root 3284 2010-07-08 09:45 hello-jni
-rwxrwxrwx root root 3282 2010-07-08 09:13 HelloWorld
drwxrwx--x system system 2009-11-24 22:06 app
drwxrwx--t system misc 2010-06-25 06:34 misc
drwxrwx--x shell shell 2010-06-25 06:34 local
drwxrwx--x system system 2010-06-25 06:34 data
drwxrwx--x system system 2010-06-25 06:34 app-private

# chmod 777 hello-jni
chmod 777 hello-jni

# ./hello-jni
./hello-jni
Hello World!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值