2015-10-05 30 views
1

根據我對Android的理解,似乎Java代碼首先被轉換成.class文件,然後轉換成專有的Dalvik字節代碼格式。這可以反向設計回Java源代碼。編譯Android應用程序時,本機代碼(JNI)會發生什麼?

我的問題是,在JNI中使用的本機代碼(用C++編寫)會發生什麼?有人能夠獲得C++源代碼嗎?或者他們會得到C++的字節碼?

編輯:我不知道本機代碼發生了什麼,當一個應用程序編譯爲Android。有人可以解釋當你使用JNI時會發生什麼嗎?

+0

都不。他們會得到本機機器碼。 –

+0

所以java中的C++代碼比純Java應用程序更難以反彙編? –

+0

Dalvik離開C++代碼,爲什麼生成字節碼? –

回答

0

JNI調用在運行時綁定。這些庫按原樣存儲。 Android是基於Linux內核所以沒有問題運行庫編譯爲相應的架構

+0

因此爲JNI編寫的C++成爲本地代碼? –

+1

@John是的,它是本地代碼(這就是爲什麼它被稱爲JNI) – teivaz

相關問題