❶ 「android NDK 」是什麼,在什麼情況下使用
1、NDK是一系列工具的集合。
2、NDK提供了一份穩定、功能有限的API頭文件聲明。
3、NDK的發布,使「java+C」的開發方式終於轉正,成為官方支持的開發方式。
4、NDK將使Android平台支持C開發的開端。
NDK使得在android中,java可以調用C函數庫。我們都知道,java是半解釋型語言,很容易被反匯編後拿到源代碼文件,在開發一些重要協議時,我們為了安全起見,使用C語言來編寫這些重要的部分,來增大系統的安全性。還有,在一些接近硬體環境下,相信大家都清楚行襲升C與java的優劣。順帶提一下:NDK並不能顯著提升應用效率。why?我們都覺得C語言比起java來說效率要高出很多,一方面,隨著jdk的不斷更新,java的效率也隨之提高;另一方面,即便使用C語言編碼提高了應用效率,但是在java與C相互調用時平白又增大了開銷。
❷ android 怎麼防止dex反編譯
防止Android apk被反編譯的方法:
1、判斷apk簽名是否與原版簽名是否一致。
2、代碼混淆,將混淆的級別設置高點,混淆出來以後代碼全部變亂。
3、使用NDK編程,將核心演算法用c/c++來編寫,打包成so庫供java層調用。
❸ Android開發的IDE、ADT、SDK、JDK、NDK等名詞解釋
這篇文章主要介紹了Android開發的IDE、ADT、SDK、JDK、NDK等名詞解釋,對這些概念搞不清楚是一件痛苦的事,本文就簡潔講解了這些名詞的含義,一起掃盲吧,需要的朋友可以參考下
1.
IDE:
Intelligent
Development
Environm的簡稱。即智能開發環境。是一種開發工具。常用的IDE有adt-bundles和Android
studio。兩個都需要配置jdk。
2.
ADT:
Android
Development
tools的簡稱。即Android開發工具。ADT為Eclipse的插件。在Eclipse和SDK之間起了一個橋梁的作用。
3.
SDK:
Soft
Development
Kit的簡稱。軟體開發工具包。在Android中,它為開發者提供了庫文件以及其它開發所用到的工具。
4.
JDK:
Java的開發工具包。包括了Java運行環境、Java工具和Java基礎類庫。
5.
NDK:
概念:
(1).NDK是一系列工具的集合。幫助開發者快速開發C/C++的動態庫。
並能自動將so和Java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
(2).NDK將是Android平台開發支持C開發的開端。
作用:
(1).代碼的保護。由於Java層代碼很容易被反編譯,而C/C++庫反編譯難度很大。
(2).可以方便的使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。
(3).提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。
(4).便於移植。用C/C++寫的庫可以方便的在其他的嵌入式平台上再次使用。
❹ Android NDK 用C語言好還是C++好
C++好,對於NDK來說,C++比C語言在與JAVA的回調機制上更加很好的配合,目前來說,大部分比較高級的程序都是利用C++來寫的,既能具備JAVA的方便又能具備C語言的執行效率高,用C++好一些
Android NDK 是在SDK前面又加上了「原生」二字,即Native Development Kit,因此又被Google稱為「NDK」。
眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。
NDK包括了:
從C / C++生成原生代碼庫所需要的工具和build files。
將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平台的一些列原生系統頭文件和庫
為何要用到NDK?
概括來說主要分為以下幾種情況:
1. 代碼的保護,由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2. 在NDK中調用第三方C/C++庫,因為大部分的開源庫都是用C/C++代碼編寫的。
3. 便於移植,用C/C++寫的庫可以方便在其他的嵌入式平台上再次使用。
❺ app可以被反編譯到什麼程度
android app 如果純java沒有混淆,可以反編譯出完整源代碼;
如果用了ndk,native這部分可以反編譯出偽代碼,分析出演算法是不成問題的。
防止Android apk被反編譯的方法:
判斷apk簽名是否與原版簽名是否一致
代碼混淆,將混淆的級別設置高點,混淆出來以後代碼全部變亂
使用NDK編程,將核心演算法用c/c++來編寫,打包成so庫供java層調用