① 2016 android新技術有哪些
1、DataBinding
今年的 Google IO 大會上,Android 團隊發布了一個數據綁定框架(Data Binding Library)。Data Binding Library 是一個 support 庫,支持 Android 2.1+ 版本 (API level 7+)。
在2015年,它還是beta版本,但是就 Android Studio 2 的 Preview 版本發展來看,Google 在這個庫上還是很花心思的,我們有理由相信,在2016年 DataBinding 將會迎來第一個正式版。
2、MVP模式
MVVM 與 MVP 模式,正在 Android 開發中越來越流行,適合不是大型項目。在這里為大家強烈推薦我的:TheMVP 項目,可以直接引入項目作為 mole 依賴。(詳情請在 github 搜索 TheMVP )
3、熱修復(插件化)
在2015年,涌現出了一大批熱修復動態載入技術:HotFix、Nuwa、DroidFix、AndFix 等等,以及同樣原理的插件化技術:DroidPlugin、DynamicAPK。就連 Android Studio 2 的 Preview 版本中體現的 Instant Run 功能,本質上也是一種熱修復技術。
我猜想,在2016年一定會有基於 Instant Run 思想做出的熱修復技術涌現。
4、Rxjava
優雅(也許僅體現在lambda表達式)的鏈式表達,輕松的線程切換,讓 RxJava 在 2015 年已然得以如日中天。如果此時你還不了解 RxJava 究竟是什麼的話,我建議你一定要仔細反思一下自己是否已與世界脫軌。
② android 熱修復能代替新版本發布么
現有框架 :
AndFix
dexposed
Xposed
Nuwa
HotFix
qq空間的暫時還沒開源
AndFix
alibaba出品
功能:method
body's replacing 即支持方法級別修復
Support
Android Version :2.3-6.0
dalvik & art runtime
優缺點
無需重啟
andfix只能替換方法而不能增減新的欄位,也不能下發類
issue(122個)
查看了一些issue,記錄一些可能存在的問題以及缺陷:
兼容性問題
部分手機奔潰
部分手機ANR
不能改變數的值,不過方法的添加修改,刪除,都可以
需要注意多進程
ART下模式無法對同一個方法進行多次更新
③ 求能看了辰東新書《完美世界》的安卓手機客戶端軟體
完美世界辰東.apk
http://bs..com/nuwa-android/passport.900033396/1220970/%E5%AE%8C%E7%BE%8E%E4%B8%96%E7%95%8C%E8%BE%B0%E4%B8%9C_0.1_android.apk
④ android熱更新框架哪個好
一.基礎知識
1.阿里的熱更新框架已經開源 了。但已經很久沒有更新過新版本了。當前的版本只支持到了 Android 4.4。由於 5.0 起新的 ART 虛擬機、更嚴格的 SELinux 策略以及對 64 位的支持之類的事,使得 Xposed 都在開發上做了很多調整。我不知道 Dexposed 現在是否支持,但至少阿里沒有開源。
2.在本地動態執行遠端下發的代碼是極度危險的行為。利用此方法執行非法代碼等或用於繞過 Google Play 等市場的審查是違反相關協議的,也是對用戶極度不負責任的行為。
3.在一些訪問非常密集的地方使用熱更新可能會對效率產生相對比較大的影響,應該避免使用.
4.我們可以對 Java 的 ScriptEngine 進行一些封裝成為一個 HotPatch 類使得它更適合做熱更新的工作。
5.首先,檢查熱更新補丁的管道一定要建立在 https 上,因為下發代碼是極其危險的,如果被劫持,後果是無法想像的。其次,請求時最好自動帶上 Android 版本、手機型號、地區、版本號等信息,以方便更精確地下發,千萬不能下發錯。
6.Java在運行時載入對應的類是通過ClassLoader來實現的,ClassLoader本身是一個抽象來,Android中使用PathClassLoader類作為Android的默認的類載入器
7.我們的如果想做hotpatch,一定要保證我們的hotpacth dex文件出現在dexElements列表的前面。
二.常用的熱更新技術框架:
基於QQ空間的HotFix →→ 要使用到android dex分包方案→拆分dex的項目的話,可以參考一下谷歌的multidex方案實現.
大眾點評的NuWa←項目補丁自動化做的很完整
alibaba/AndFix
阿里巴巴的DexPosed
dalvik_patch實現multidex
使用React-Native實現app熱部署的一次實踐
alibaba/AndFix
三、常用的熱更新技術框架比較
Advantage
disadavantage
NuWa
1,可以新增類和欄位,
2,兼容到6.0系統
1,基本原理是classloader,類載入器
2,不能修改資源文件,如圖片布局等(可通過動態布局實現)
AndFix
1, 支持Android2.3到6.0版本
2, 支持arm與x86系統架構
3, 支持dalvik和ART的runtime
4, 不需要重啟App即可應用補丁
1,不能新增類和欄位,
2,不能修改資源文件,
3,不能修改manifest文件
4,不能新增成員變數
5,不能使用加固後的apk製作pacth文件
四、github地址
網路的同學的實現 HotFix
點評的同學的實現 Nuwa
阿里的同學的實現 AndFix
另:AndFix對static的支持不太好,下面是試驗的Demo:
添加了一個靜態的欄位addString:
通過AndFix來製作patch會直接報錯:
⑤ 如何使用Android Studio開發Gradle插件
使用Android Studio開發Gradle插件的步驟:
1 創建Gradle Mole
AndroidStudio中是沒有新建類似Gradle Plugin這樣的選項的,那我們如何在AndroidStudio中編寫Gradle插件,並打包出來呢?
(1) 首先,你得新建一個Android Project
(2) 然後再新建一個Mole,這個Mole用於開發Gradle插件,同樣,Mole裡面沒有gradle plugin給你選,但是我們只是需要一個「容器」來容納我們寫的插件,因此,你可以隨便選擇一個Mole類型(如Phone&Tablet Mole或Android Librarty),因為接下來一步我們是將裡面的大部分內容刪除,所以選擇哪個類型的Mole不重要。
(3) 將Mole裡面的內容刪除,只保留build.gradle文件和src/main目錄。
由於gradle是基於groovy,因此,我們開發的gradle插件相當於一個groovy項目。所以需要在main目錄下新建groovy目錄
(4) groovy又是基於Java,因此,接下來創建groovy的過程跟創建java很類似。在groovy新建包名,如:com.hc.plugin,然後在該包下新建groovy文件,通過new->file->MyPlugin.groovy來新建名為MyPlugin的groovy文件。
(5) 為了讓我們的groovy類申明為gradle的插件,新建的groovy需要實現org.gradle.api.Plugin介面。如下所示:
package com.hc.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class MyPlugin implements Plugin<project> {</project>
void apply(Project project) {
System.out.println("========================");
System.out.println("hello gradle plugin!");
System.out.println("========================");
}
}
因為我本人對groovy也不是特別熟悉,所以我盡可能的用Java語言,使用System.out.println而不是用groovy的pintln "",我們的代碼裡面啥也沒做,就列印信息。
(6) 現在,我們已經定義好了自己的gradle插件類,接下來就是告訴gradle,哪一個是我們自定義的插件類,因此,需要在main目錄下新建resources目錄,然後在resources目錄裡面再新建META-INF目錄,再在META-INF裡面新建gradle-plugins目錄。最後在gradle-plugins目錄裡面新建properties文件,注意這個文件的命名,你可以隨意取名,但是後面使用這個插件的時候,會用到這個名字。比如,你取名為com.hc.gradle.properties,而在其他build.gradle文件中使用自定義的插件時候則需寫成:
apply plugin: 'com.hc.gradle'
然後在com.hc.gradle.properties文件裡面指明你自定義的類
implementation-class=com.hc.plugin.MyPlugin
現在,你的目錄應該如下:
(7) 因為我們要用到groovy以及後面打包要用到maven,所以在我們自定義的Mole下的build.gradle需要添加如下代碼:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi()
compile localGroovy()
}
repositories {
mavenCentral()
}
2 打包到本地Maven
前面我們已經自定義好了插件,接下來就是要打包到Maven庫裡面去了,你可以選擇打包到本地,或者是遠程伺服器中。在我們自定義Mole目錄下的build.gradle添加如下代碼:
group='com.hc.plugin'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('D:/repos'))
}
}
}
其中,group和version後面會用到,我們後面再講。雖然我們已經定義好了打包地址以及打包相關配置,但是還需要我們讓這個打包task執行。點擊AndroidStudio右側的gradle工具,如下圖所示:
可以看到有uploadArchives這個Task,雙擊uploadArchives就會執行打包上傳啦!執行完成後,去我們的Maven本地倉庫查看一下:
其中,com/hc/plugin這幾層目錄是由我們的group指定,myplugin是模塊的名稱,1.0.0是版本號(version指定)。
⑥ 如何使用Android Studio開發Gradle插件
一種是直接在項目中的gradle文件里編寫,這種方式的缺點是無法復用插件代碼,在其他項目中還得復制一遍代碼(或者說說復制一遍文件)
另一種是在獨立的項目里編寫插件,然後發布到中央倉庫,之後直接引用就可以了,優點就是可復用。就和上面的Nuwa和Small一樣。
⑦ 如何使用Android Studio 開發Gradle插件
插件類型
Gradle的插件一般有這么幾種:
一種是直接在項目中的gradle文件里編寫,這種方式的缺點是無法復用插件代碼,在其他項目中還得復制一遍代碼(或者說說復制一遍文件)
另一種是在獨立的項目里編寫插件,然後發布到中央倉庫,之後直接引用就可以了,優點就是可復用。就和上面的Nuwa和Small一樣。
Gradle相關語法
本篇文章不會詳細說明Gradle相關的語法,如果要學習gradle相關的東西,請查看Gradle for Android
Gradle插件開發
Gradle插件是使用Groovy進行開發的,而Groovy其實是可以兼容Java的。Android Studio其實除了開發Android App外,完全可以勝任開發Gradle插件這一工作,下面來講講具體如何開發。
首先,新建一個Android項目。
之後,新建一個Android Mole項目,類型選擇Android Library。
將新建的Mole中除了build.gradle文件外的其餘文件全都刪除,然後刪除build.gradle文件中的所有內容。
在新建的mole中新建文件夾src,接著在src文件目錄下新建main文件夾,在main目錄下新建groovy目錄,這時候groovy文件夾會被Android識別為groovy源碼目錄。除了在main目錄下新建groovy目錄外,你還要在main目錄下新建resources目錄,同理resources目錄會被自動識別為資源文件夾。在groovy目錄下新建項目包名,就像Java包名那樣。resources目錄下新建文件夾META-INF,META-INF文件夾下新建gradle-plugins文件夾。這樣,就完成了gradle 插件的項目的整體搭建,之後就是小細節了。目前,項目的結構是這樣的。
http://blog.csdn.net/sbsujjbcy/article/details/50782830
⑧ 為什麼 Android 中 Toolbar.setTitle 沒有效果
Gradle的插件一般有這么幾種:
一種是直接在項目中的gradle文件里編寫,這種方式的缺點是無法復用插件代碼,在其他項目中還得復制一遍代碼(或者說說復制一遍文件)
另一種是在獨立的項目里編寫插件,然後發布到中央倉庫,之後直接引用就可以了,優點就是可復用。就和上面的Nuwa和Small一樣。
⑨ andfix原理
AndFix,全稱是Android hot-fix,是一個Android熱補丁框架。
原理是:apkpatch將兩個apk做一次對比,然後找出不同的部分。可以看到生成的apatch了文件,後綴改成zip再解壓開,裡面有一個dex文件。通過jadx查看一下源碼,裡面就是被修復的代碼所在的類文件,這些更改過的類都加上了一個_CF的後綴,並且變動的方法都被加上了一個叫@MethodReplace的annotation,通過clazz和method指定了需要替換的方法。然後客戶端sdk得到補丁文件後就會根據annotation來尋找需要替換的方法。最後由JNI層完成方法的替換。
如果本地保存了多個補丁,那麼AndFix會按照補丁生成的時間順序載入補丁。具體是根據.apatch文件中的PATCH.MF的欄位Created-Time。
局限性:不支持YunOS
無法添加新類和新的欄位
需要使用加固前的apk製作補丁,但是補丁文件很容易被反編譯,也就是修改過的類源碼容易泄露。
使用加固平台可能會使熱補丁功能失效。
andfix與Nuwa對比,
Nuwa是另一個熱補丁框架。
⑩ 如何使用Android Studio開發Gradle插件
首先說明一下為什麼會有這篇文章。前段時間,插件化以及熱修復的技術很熱,Nuwa熱修復的工具NuwaGradle,攜程動態載入技術DynamicAPK,還有希望做最輕巧的插件化框架的Small。這三個App有一個共同的地方就是大量的使用了Gradle這個強大的構建工具,除了攜程的框架外,另外兩個都發布了獨立的Gradle插件提供自動化構建插件,或者生成熱修復的補丁。所以學習一下Gradle插件的編寫還是一件十分有意義的事。
http://blog.csdn.net/sbsujjbcy/article/details/50782830