這個示例在主界面底部新增了一個 JNI Crash 按鈕。點擊后 Kotlin 調(diào)用NativeCrash.crashFromJni(),JNI 進入 native-cras...
這個示例在主界面底部新增了一個 JNI Crash 按鈕。點擊后 Kotlin 調(diào)用NativeCrash.crashFromJni(),JNI 進入 native-cras...
學(xué)者信得良知過,不為氣所亂! 先生曰:“用功到精處,愈著不得言語,說理愈難。若著意在精微上,全體功夫反蔽泥了?!?大意如下: 先生說:“功夫越到了精妙的地方,越不能用語言表達...
新建一個空的Android工程,只有一個MainActivity: 使用ASM框架,插入兩行日志代碼,分別在onCreate方法的第一行和最后一行,目標(biāo)代碼: 最終效果 實現(xiàn)...
對字節(jié)碼文件有了一定認識之后,來看下字節(jié)碼下函數(shù)的執(zhí)行過程本文分析基于如下示例代碼: 執(zhí)行 主版本號:61 - 44 = 17,可以得出編譯當(dāng)前文件的是jkd17 LineN...
字節(jié)碼其實是一個二進制流文件,按照JVM規(guī)范排列的0101數(shù)字,我們也可以使用010 Editor編輯器打開查看: 這里使用十六進制表示,那么這又是什么意思呢?根據(jù)Oracl...
rxJava就是觀察者模式的變形增強,具體怎么變形增強網(wǎng)上的文章有各種講解,各種比喻,最普遍的是上下游的說法,上游的水通過水管流到下游,源碼里確實有upStream,down...
使用dex2jar,jd-gui 步驟:1.將要反編譯的apk文件,修改后綴名,改為.zip,解壓apk,目錄如下: 2.將classes.dex復(fù)制到dex2jar解壓的目...
新建一個ndk項目,將下載的fmod庫添加到相應(yīng)目錄: 1.在app模塊的build.gradle,配置implementation fileTree(dir: 'libs'...
在make.sh中給cmake命令添加編譯參數(shù): 編譯參數(shù)的解釋參考文章https://blog.csdn.net/qq_38410730/article/details/1...
安裝cmake 這里使用AndroidStudio,SDKTools里面的cmake 安裝完成后可以在sdk目錄查看是否安裝完成: 執(zhí)行cmake --version查看安裝...
先對AbstractProcessor有個認識,每一個處理器都是繼承于AbstractProcessor,如下所示: ? init(ProcessingEnvironmen...
接下來實操寫一遍,這里只使用BindView一個注解,來學(xué)習(xí)其實現(xiàn)過程。 第一步 新建一個Java庫,取名butterknife_annotations目錄結(jié)構(gòu)如下,這里只有...
butterKnife的集成: 在module的build.gradle文件dependencies 中添加以下兩個依賴庫: 如果使用的是kotlin, 使用kapt代替an...
在project的build.gradle文件buildscript中的dependencies下添加:classpath 'com.hujiang.aspectjx:gra...
Android中使用socket其實是java的API,先看下java的寫法: 服務(wù)端ServerSocketService 客戶端SocketClient 運行之前要注意,...
每次使用gcc命令手動編譯生成可執(zhí)行文件麻煩并且容易出錯,makefile文件類似一個命令集合的腳本文件,按照一定規(guī)則,將命令提前組織好,最終實現(xiàn)一鍵編譯使用如下代碼測試:t...
先看下編譯過程:1.預(yù)處理:文件引入,宏替換2.編譯:將預(yù)處理后的文件編譯成匯編代碼。3.匯編:把編譯階段產(chǎn)生".s"文件轉(zhuǎn)化成二機制目標(biāo)代碼,也就是機器代碼。4.鏈接:將多...
Flutter中的Stack相當(dāng)于android中的FrameLayout,默認情況下非定位的child元素會被放置到stack的左上角,當(dāng)然可以通過設(shè)置alignment改...