原创 【Android】【系統組件】調用任意操作系統界面組件

需求 有時我們需要調用系統設置界面來設置WIFI,設置功能權限,設置後臺運行等功能 但並不是每個機型,每個設置界面的類名我們都知道,這時我們就需要想辦法獲取這些界面的類名 原理 通過ADB指令,可以獲取手機當前運行界面的包名和類名

原创 【項目管理工具】解決SVN丟失so文件的問題

引發迷之BUG的原因 由於在Linux系統,文件夾時常有一些隱藏的系統文件是以so作爲後綴名的,這些文件並不屬於項目文件 同理,在Windows中顯示隱藏文件之後,我們也能看到一些名爲 .DS_Store Thumbs.db的系統

原创 【Android】【IDE】AndroidStudio使用本地Gradle最佳方案

Gradle相關配置 一個Android項目中,以AndroidStudio3.6爲例,和Gradle相關的配置大概有以下地方 各個選項和文件的作用 現在介紹下圖中選項和文件夾的作用,瞭解原理,大家才知道怎麼做,爲什麼這麼做

原创 【Java】【Json】Gson序列化時忽略特定字段

在字段前加transient關鍵字,gson就會在序列化時忽略這個字段 transient關鍵字本是配合Java自帶的Serilizable序列化接口使用的,gson直接借用了這個特性 public class TreeNod

原创 【Java】【Gradle】Gradle構建SpringBoot項目,Gradle模塊化管理

爲什麼我要使用Gradle 我是個Android開發者,對Gradle接觸較多,較爲熟悉,使用Gradle對我問題不大 Gradle比Maven更加簡潔靈活,代碼看起來更加美觀 我愛研究探索,喜歡折騰,想嘗試新事物。用Gr

原创 【NDK】【007】NDK使用Logcat控制檯,JString和C++標準庫

注意事項 當mk文件中一個選項包含多個值時,可以通過空格割開,或者+=來拼接 #可以是這種形式 LOCAL_SRC_FILES += logcat.cpp com_easing_android_JniHello.cpp

原创 【Java】【編譯原理】path,classpath,java.library.path的區別

path:環境變量。java在編譯源代碼時,可能會調用到多個命令,編譯器會到path變量所包含的所有目錄下,逐個去尋找對應的同名的命令行程序 classpath:類加載路徑。java程序在運行時,除了主程序之外,還會用到其它

原创 【Android】【控件繪製】監聽控件繪製變化

需求 在開發中,我們可能時常會碰到這樣的需求,諸如: 監聽地圖縮放等級變化 監聽控件中的畫面變化 監聽ViewGroup中的節點變化 一般方法 很多時候,控件和類庫並沒有爲我們提供統一的回調方法來監聽這些事件 一般我們解

原创 【NDK】【002】將C++代碼編譯爲dll共享庫

什麼是共享庫 C++代碼可以編譯成類庫,直接分發給其它應用調用,這使得可以很容易地將自己的代碼以庫文件的形式共享給他人使用,同時還能保護源碼不泄漏 C++共享庫在Windows中以dll文件的形式存在,而在Linux系統中則以so

原创 【NDK】【004】動態庫管理,dll加載原理

這篇博客我們主要講解,Java程序是如何查找dll的 根據這個查找規則,我們又該如何去管理dll文件,如何修改軟件運行參數 Java程序會從哪些地方查找dll文件 當前運行目錄:默認爲jar包所在目錄,或工程代碼所在根目錄

原创 【Android】【IDE】解決Attach Debug to Process找不到手機進程問題

安卓調試進程有兩種方式 一種是通過Debug模式直接啓動 另一種是先打開應用,再通過Attach Debug to Process綁定進程,就可以中途進行調試 我遇到過幾次Attach Debug to Process找不到And

原创 【NDK】【006】AndroidStudio編譯和調用so庫

前面我們已經講解過,如何在Java中使用JNI和DLL,這和在Android中使用JNI和SO原理是完全一致的,流程也相似,只是編譯的平臺和工具不同 如果我們前面都學透了,現在就會很輕鬆了。下面我們開始講解,如何在Android中

原创 【Android】【屏幕截圖】通過Canvas緩存進行屏幕截圖

我們知道,控件都是通過Canvas進行繪製而呈現出來的 如果我們將Canvas的繪製過程緩存起來,再將其寫入到位圖中,那麼就可以得到這個控件的圖像 如果我們對DecorView(Window佈局的根節點)的Canvas進行緩存捕捉

原创 【Java】【線程同步】Java線程同步全API詳解及代碼實測

前言 這篇博客重點在於講解API功能細節,對於同步異步還沒有清晰概念,或從未使用過線程同步相關API的同學,請先自行補全入門基礎,這裏不再累述 由於Java爲線程API都設置了強制異常檢查,所以編程時需要編寫大量的try-catc

原创 【Android】【IDE】AndroidStudio3.5編譯出現D8 Errors: Program type already present問題解決方案

Program type already present這個問題,一般是由於項目中多個模塊引用了相同的庫,但版本號不同引起的衝突 但今天我更新了AndroidStudio和Gradle版本後,本來正常的項目,突然就報了這個錯誤,顯