【Android開發】NDK開發(1)-Hello World!

上半年,公司的一個項目,本身我是不喜歡Android開發的,但是學習到的東西總需要整理一下。


從iOS轉到Android,真心有些不習慣。就IDE來說,eclipse比Xcode差的不是一點半點。Android模擬器竟然還要開機!我勒個去。。

今天寫個最簡單的Android NDK的小栗子。
首先,什么是Android NDK? NDK 全稱是:Native Development Kit,其他的,移步百度百科:android ndk_百度百科
1、新建一個Android Application Project,Fuck。
2、新建類 Fuck,聲明本地靜態方法:numFromFuck()。代碼如下:
 1 package com.example.fuck;
 2 public class Fuck {
 3 
 4     public native static int numFromFuck();
 5 
 6     static{
 7 
 8         System.loadLibrary("fuck");    //fuck代表動態鏈接庫libfuck.so文件
 9 
10     }
11 
12 }

3、給程序添加一個按鈕button,在點擊button時,通過調用類Fuck中本地方法更改textView的text,代碼如下

?

 1 button.setOnClickListener(new OnClickListener(){
 2     @Override
 3 
 4     public void onClick(View arg0) {
 5 
 6         // TODO Auto-generated method stub
 7 
 8         textView.setText(Fuck.numFromFuck() + "");
 9     }
10 });

?

?

?

4build該工程,生成 Fuck.class 類文件(在bin目錄下),這一步比較重要。

5、在終端cd到工程目錄下,新建個文件夾:【mkdir jni】(終端輸入命令都在中括號中,下同),然后輸入命令:【javah -classpath bin/classes -d jni com.example.fuck.Fuck】 ,
然后會在jni文件夾下發現一個文件:com_example_fuck_Fuck.h,其中代碼如下:
 1 /* DO NOT EDIT THIS FILE - it is machine generated */
 2 #include <jni.h>
 3 
 4 /* Header for class com_example_fuck_Fuck */
 5 
 6 #ifndef _Included_com_example_fuck_Fuck
 7 
 8 #define _Included_com_example_fuck_Fuck
 9 
10 #ifdef __cplusplus
11 
12 extern "C" {
13 
14 #endif
15 
16 /*
17 
18  * Class:     com_example_fuck_Fuck
19 
20  * Method:    numFromFuck
21 
22  * Signature: ()I
23 
24  */
25 
26 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck
27 
28   (JNIEnv *, jobject);
29 
30 #ifdef __cplusplus
31 
32 }
33 
34 #endif
35 
36 #endif

?

6、在 jni 目錄中新建Fuck.c,實現5中生成的.h文件中的方法:
1 #include "com_example_fuck_Fuck.h"
2 JNIEXPORT jint JNICALL Java_com_example_fuck_Fuck_numFromFuck (JNIEnv *env, jobject obj)
3 
4 {
5 
6     return 42;
7 
8 }
如果你直接從.h文件拷過來的代碼,一定要記得更改參數。

?

7、在 jni 文件目錄中新建文件 Android.mk 文件:

1 LOCAL_PATH := $(call my-dir)
2 include $(CLEAR_VARS)
3 
4 LOCAL_MODULE    := fuck
5 
6 LOCAL_SRC_FILES := Fuck.c
7 
8 include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE:=fuck 表示要生成的so文件名為:libfuck.so,這就是在步驟2中需加載的動態鏈接庫。

8、回到終端,cd 到工程目錄,輸入命令:【ndk-build】,沒錯的話會在工程目錄 libs/armeabi 中生成文件:libfuck.so。
最后運行程序:
點擊按鈕button,textView的內容就會變成“42”。
over~
2014-03-08?
                                                           

轉載于:https://www.cnblogs.com/youthpasses/p/3844967.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448011.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每天30分鐘:成功有效的學習方法

《每天堅持30分鐘》&#xff0c;是一本講述學習方法、提高學習效率的暢銷書&#xff0c;作者&#xff1a;古市幸雄&#xff0c;日本銷量50萬余冊&#xff0c;專為沒有學習習慣的人而寫。 《每天堅持30分鐘》摘錄 第一章 只有學習才能成功 1、有“學習意識”時&#xff0c;學習欲…

修改 input 框里的字體、顏色

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 /* WebKit browsers */ input::-webkit-input-placeholder {color: #C0C0C0;font-size: 14px; } /* Mozilla Firefox 4 to 18 */ input…

Easyjs 細說Javascript里的 閉包(Closure)

要成為高級 JavaScript 程序員&#xff0c;就必須理解閉包。閉包有時你非用她不可&#xff0c; 所有理解閉包還是必要的。筆者通過例子來說一下“閉包” 1.定義一個函數的代理&#xff1a; functiondelegate (fn, scope, args, append) { returnfunction/*匿名函數1*/(…

學習方法書籍 很好推薦

學習方法書籍&#xff1a;一《超級學習法》&#xff1a; 這是一種優秀的學習法。美國紐約華爾街10號的“超級記憶法有限公司”和保加利亞的羅扎諾夫學院都在推廣這一種學習方法。日本長野吉田高中應用該方法使學生平均成績提高20分&#xff0c;日本東海大學的關英男教授用這種方…

js 取兩位小數

var totalPrice (product.unitPrice * product.nums).toFixed(2);轉載于:https://www.cnblogs.com/yqlwl66/p/4155606.html

jQuery 實現表格與 ckeckbox 的全選、單選功能

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 功能點 1. 用戶點擊頭的checkbox時&#xff0c;所有表格數據行的checkbox全選或反選。 當數據行某一行沒有選中時&#xff0c;頭check…

jquery checkbox 選中、改變狀態、change 和 click 事件

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 jquery判斷checked的三種方法: ??????? .attr(checked); //看版本1.6返回:”checked”或”undefined” ;1.5-返回:true或false …

中醫教你5個補腎護發食療方

一個人的頭發有10萬到15萬根&#xff0c;每根頭發都有個毛囊&#xff0c;從毛囊里又生成毛球&#xff0c;長出頭發。頭發從長出到脫落&#xff0c;要經過3個周期&#xff0c;即成長期(約2&#xff5e;7年)、退縮期(約1個月)和休止期(約4個月)。 頭發的生長速度和密度隨年齡而變…

VUE:checkbox 單選框(單選、多選)、一選全選 / 全選一選、表格單選列實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 效果&#xff1a;如紅框中部分。 一選全選&#xff1a;表頭上的單選框選中則下面每行都選中。 全選一選&#xff1a;表中數據每行都…

我愛學習第一天(委托)

---恢復內容開始--- 1.delegate 一般用法 delegate void WriteValue(string vale);//申明一個委托,參數是string類型,無返回值static void Main(string[] args){WriteValue write new WriteValue(WriteLine);//實例化委托write("喝水");//調用Console.ReadKey();}pu…

怎樣洗頭使頭發變黑變多

洗頭法 頭發變黑變粗--用淘米水洗頭。每天煮飯時會產生淘米水&#xff0c;請將淘米水留下&#xff0c;裝在一個容器內放上二天&#xff0c;讓它自然發酵。然后用來洗頭&#xff0c;三天洗一次&#xff0c;不出三個月&#xff0c;你的頭發就會變粗、變黑。 發酵后的淘米水會有一…

VUE:父子組件間傳參、子組件傳值給父組件、父組件傳值給子組件

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Vue是一個輕量級的漸進式框架&#xff0c;對于它的一些特性和優點在此就不做贅述&#xff0c;本篇文章主要來探討一下Vue子父組件通信的…

c1科目三考試技巧

起步平穩。轉向燈不要錯了。靠邊要和路邊平行。離邊近量保持&#xff1a;30CM距離。車子在運行中。換檔盡量保持利落。若道路比較復雜。看好路牌路標&#xff0c;不要違規。一般很容易過的。你不要緊張。晚上夜考燈光把好。一切很順利的。祝你好運。 方法/步驟 緊記著“一燈二…

Astyle 一鍵格式化項目代碼

代碼格式化差異問題&#xff1a; 一個團隊有多個開發&#xff0c;因開發習慣不同&#xff0c;開發時少添加了空格、換行等。 格式化代碼時&#xff0c;一般會將整個文檔格式化&#xff0c;代碼提交時會發現未知的修改項。 Astyle格式化工具 官網下載地址&#xff1a;Artistic S…

淺談 JavaScript、ECMAScript (ES5、ES6)是什么、相互關系

一、ECMAScript 和 JavaScript 的關系 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ES6 ECMAScript6 從百度百科的資料上來看&#xff1a; ECMAScript是一種由Ecma國際通過ECMA-…

(2) MongoDB基本概念及與關系型數據庫的對照

MongoDB不是關系型數據庫&#xff0c;因此也就沒有了表&#xff0c;行等概念&#xff0c;但是有一些類似的概念&#xff0c;主要有 數據庫&#xff08;Database&#xff09;&#xff0c;集合&#xff08;Collection&#xff09;&#xff0c;文檔&#xff08;Document&#xff0…

什么是 ES6 ?

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ECMAScript 6&#xff08;以下簡稱ES6&#xff09;是JavaScript語言的下一代標準&#xff0c;已經在2015年6月正式發布了。Mozilla公司將…

史上最全換檔講解手動檔汽車的換擋技巧

轉個東東給大家看看&#xff0c;關于換檔的。在網上已有很多討論&#xff0c;涉及到的方面也林林總總。歸納一下的話&#xff0c;我覺得不外乎可以分為兩 大類&#xff0c;一是換擋時機&#xff0c;即何時加檔何時減檔&#xff1b;二是換擋本身的操作&#xff0c;包括換擋時油門…

CorelDRAW X7 X8 2017 2018是什么關系?

從CorelDRAW 2017版本開始我們叫習慣了的X幾系列的CorelDRAW毅然決然的就換了稱呼&#xff0c;所以有時候很多朋友對于軟件版本&#xff0c;經常會傻傻分不清&#xff0c;還有人認為X8版本比2017版本高&#xff0c;究竟為什么會這么認為呢&#xff1f; “幫我轉個X8吧”。 “我…

阮一峰 《ECMAScript 6 入門》:let 和 const 命令

以下內容全文出自 阮一峰的書&#xff1a; 《ECMAScript 6 入門》 電子版地址&#xff1a;ES 6標準入門&#xff08;第3版&#xff09; let 命令 基本用法 ES6 新增了let命令&#xff0c;用來聲明變量。它的用法類似于var&#xff0c;但是所聲明的變量&#xff0c;只在let命令…