原创 爲什麼編譯時方法過多會出現method ID not in [0, 0xffff]: 65536的錯誤

隨着項目的功能增多,產品框架也會越來越大,要實現的邏輯也會更多,遇到method個數超出65536個這個問題幾乎是每一個Android碼農必有的經歷,我們一直忙於解決問題,可能這個問題百度一下即可解決,卻沒有真正去探知究竟。最近我學習熱修

原创 如何將自定義task在gradle系統task運行前後執行?

在使用gradle構建android應用的過程中,build tools提供的標準gradle task有時沒法滿足自己的要求(比如上傳、自動構建),或者有些問題需要一些自定義task纔可以解決(比如使用自定義task動態修改一些文件),

原创 Jni C/C++開發基礎之基礎聚集(Android、Java範疇)

1,在jni C/C++中調用java代碼的流程: 1)獲取類 2)調用靜態方法時,先獲取methodID(使用GetStaticMethodID),然後使用類似java invoke的形式將類和methodID作爲參數調用CallSta

原创 自定義繪製view、繪圖過程中用到的函數計算

1,一個座標系中已知兩點座標,計算兩點連線的夾度? Math.atan((y1 - y2) / (x1 - x2)) / Math.PI * 180; 2,一個座標系中已知兩點座標,計算兩點之間的圓心角? (Math.atan(y1

原创 Android 7.0 Nougat 無法安裝渠道包問題

Android N 引入一項新的應用簽名方案 APK Signature Scheme v2,它能提供更快的應用安裝時間和更多針對未授權 APK 文件更改的保護。 在默認情況下,Android Studio 2.2 和 Android G

原创 idea file header template

/** * author: SimenHi * create time: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * description:  */

原创 Foo&Boo

打包目錄tempFolder內容到myNewLib.aar: jar cvf myNewLib.aar -C tempFolder/ .

原创 設置OnEditorActionListener後監聽不到ACTION_SEARCH問題

過去設置EditText屬性時常加上 editText.setSingleLine();或android:singleLine="true" 使用Android-24編譯開發項目時,官方已經不建議使用上面的屬性設置,建議使用android

原创 使用gradle開啓multiDex時,如何配置MainDex

在開啓multiDex時,多個dex文件中的類是被gradle腳本分配的,而且app在啓動時,首先加載的是MainDex。有時候我們需要設定某些類被放到MainDex中,如何設定? 在build.gradle中開啓multiDex,並指定

原创 Android動態加載so庫的實現

so庫加載包含2種方式:靜態鏈接和動態加載靜態鏈接在Android中的實現方式就是當打包項目時,將so文件放到libs目錄中。反之,動態加載需要加載

原创 Jni C/C++運行時遇到異常怎麼辦?捕獲與拋出

Android官方:https://developer.android.com/training/articles/perf-jni 有個頭疼的問題,Jni C/C++遇到問題閃退怎麼辦?有辦法,我們可以在異常發生後通過判斷清除異常解決,

原创 實現Android國際化過程中遇到的問題

Android系統內置了Locale類來定義不同語言,結構很簡單,指定語系、國家代碼即可初始化一個Locale實例,指定一個語言。 /** * Locale constant for ja_JP. */

原创 基於groovy語言的DSL編程基礎(項目構建)

Gradle是一種基於依賴的編程語言,你可以在已有的task中自定義task或者依賴規則。對比我們最常用的語言,比如java、Object-C,Gradle就像同時包含了配置虛擬機、字節碼解釋規則、code語法。Gradle會讓這些tas

原创 如何使用Android或iphone手機調試react-native應用

如果將react-native應用安裝到手機上後,以後調試應用就方便多了,藉助start命令即可實現快速調試: 1,cd到項目目錄下 2,運行命令 react-native start 3,接着在手機react-native應用中,設置

原创 如何有效的調整SwipeRefreshLayout的靈敏度

SwipeRefreshLayout和ViewPager一起使用的時候,事件處理上會有衝突,比如當你想要左右滑動的時候,但是因爲角度稍微斜了一些,極有可能導致ViewPager沒有滑動起來,卻觸發了SwipeRefreshLayout的刷