導航:首頁 > 操作系統 > nuwaandroid

nuwaandroid

發布時間:2022-12-13 07:01:38

① 如何使用android Studio開發Gradle插件

首先說明一下為什麼會有這篇文章。前段時間,插件化以及熱修復的技術很熱,Nuwa熱修復的工具NuwaGradle,攜程動態載入技術DynamicAPK,還有希望做最輕巧的插件化框架的Small。這三個App有一個共同的地方就是大量的使用了Gradle這個強大的構建工具,除了攜程的框架外,另外兩個都發布了獨立的Gradle插件提供自動化構建插件,或者生成熱修復的補丁。所以學習一下Gradle插件的編寫還是一件十分有意義的事。
http://blog.csdn.net/sbsujjbcy/article/details/50782830

② 小米9se可以升級miui14嗎

小米9se可以升級miui14.,但是小米9和小米9cc 小米9por不支持。小米MIUII一直都被用戶稱為萬物起源,甚至用「萬物基於MIUI」來進行形容。不過進入全面屏時代後,MIUI的優化迎來了很大的壓力,很多用戶都知道,小米什麼都想要,但是硬體和優化確實有點不同步,直到MIUI 13的推出,很多米粉都表示體驗提升了不少。但最值得米粉歡呼的是,XiaomiMIUI報道已經在代碼庫中發現了 MIUI 14,並且有代號為女媧(nuwa)的小米 13 手機將搭載 MIUI 14。

MIUI 14有什麼看點?

從MIUI 14 Early Beta 22.7.19版本來看,新版本在UI設計方面有了不少改變,其中小米信息助手迎來UI改進,相比於13版本中的要更加簡潔,視覺效果更好。MIUI時鍾App也會迎來UI改進(代碼顯示時鍾App將允許被卸載),還支持直接從通知面板禁用永久通知、在圖庫中添加了OCR文字識別功能、MIUI Gallery迎來今日回憶等,外觀設計的改變還是非常大的。

除此以外,MIUI 14在隱私安全方面也將迎來提升,無論是簡訊通知還是消息推送都將被進一步監視到位,從而更好地保障消費者的使用體驗安全。

有哪些機型可以升級MIUI 14?

目前代號為「女媧」的小米13和代號「伏羲」的小米13 Pro已在測試MIUI 14,很多米粉的可能會問還有哪些機型支持升級更新到MIUI14系統呢?根據XiaomiMIUI曝光的MIUI 14系統升級更新支持機型列表,支持的升級新系統的機型還是很多的,包括很多舊機型共計上百款。
具體來看包括:
小米13系列、小米12系列、小米12S系列、小米12 Lite、小米12T、小米11T、小米11Lite、小米MIX4、小米MIX Fold OLD、小米Civi系列、小米10系列。
紅米Note11系列、紅米Note10系列、紅米Note9系列、紅米K50系列、紅米K40系列、紅米K30系列以及紅米10、紅米9等產品都可以進行提升,大家可以看下圖中具體型號!

從更新名單來看,比較大的遺憾是,支持MIUI 13的小米9 Pro、小米CC9 Pro等老機型,這次竟無緣MIUI 14,xiaomiui指出,那些內核也就是底層版本停留在Android 11的設備將被MIUI 14「拋棄」。

③ 如何使用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

④ 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熱更新框架哪個好

一.基礎知識

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會直接報錯:

⑥ Starst:Android插件補丁於一體的解決方案

這篇文章分享了筆者近幾個月在插件和熱補丁技術方面的一些經驗積累以及我們開發的動態載入框架Starst.

針對Android平台,集熱更新熱修復於一體的解決方案,一套機制解決兩個問題

它主要包括三個部分:

Qihoo360/DroidPlugin
CtripMobile/DynamicAPK
mmin18/AndroidDynamicLoader
singwhatiwanna/dynamic-load-apk
houkx/android-pluginmgr
bunnyblue/ACDD
wequick/Small
主要分為兩類:

主流插件框架對比

總體來說:
1.沙盒的方案是最極致 也是開發成本最高的,但對兼容性和穩定性提出了很高的要求
2.Small修改資源packageId方案的思路值得借鑒,但不本身不適於產品化,比如首次啟動插件的性能問題以及一些兼容性的問題

Java流派:
1)更改classloader載入dex順序,同時繞過pre-verified:qq空間,nuwa, qfix, robust
2)dex合成:tinkerNative流派: AndFix

| 方案 | Tinker | QZone |AndFix|
| -------- | --------| -- |
| 原理 | 反射classloader+ dexdiff 全量合成 | hack classloader + 插樁 | native hook |
| 缺陷 | 合成邏輯復雜,感覺較重 | 運行時性能受到插樁機制的影響 略差 | 兼容性穩定性較差 |

更詳細的比較可以參考Tinker( https://github.com/Tencent/tinker/wiki )

這張圖中我們需要了解以下幾點:

Starst的開發之路並不是順利的,最初時並沒有想的十分清楚, 對於四大組件的支持到什麼樣的程度?
是否真的有必要支持四大組件的動態更新?
對於熱補丁採用哪種機制,Tinker/Qzone/AndFix/QFix? ,
這些問題當時都很難回答,也是在開發中不斷探索,不斷汲取別人的經驗,過程中我們借鑒了 Small 以及 QFix 設計上的很多思路,對此表示感謝,日後我們也會在Starst更完善的時候將它開源,與大家共同學習成長。

目前整套機制還在產品的灰度測試中,已覆蓋2000+用戶

最開始的開發中我們已經開發了對四大組件動態載入的原型,在其後的開發中我們也在不斷思考動態化載入方案的優勢

而引入hook 四大組件載入的機制對於穩定性、兼容性也提出了更高的要求,以及對於插件的進程管理也需要統一的維護管理,反而不如注冊在宿主的AndroidManifest.xml中交由交由系統管理,各自的生命周期,對此僅需要規范的開發流程即可保證。

以上是筆者在插件和補丁的技術研究中的一些收獲,目的是為了提供一個新的思路,關於具體的實現技術細節並沒有做展開的闡述,感興趣的同學可以參考提供鏈接

插件的演化介紹
QFix熱補丁機制 Small
Tinker

⑦ 求問大神現在做android的hotfix用哪個框架比較好

一.基礎知識1.阿里的熱更新框架已經開源了。但已經很久沒有更新過新版本了。當前的版本只支持到了Android4.4。由於5.0起新的ART虛擬機、更嚴格的SELinux策略以及對64位的支持之類的事,使得Xposed都在開發上做了很多調整。我不知道Dexposed現在是否支持,但至少阿里沒有開源。2.在本地動態執行遠端下發的代碼是極度危險的行為。利用此方法執行非法代碼等或用於繞過GooglePlay等市場的審查是違反相關協議的,也是對用戶極度不負責任的行為。3.在一些訪問非常密集的地方使用熱更新可能會對效率產生相對比較大的影響,應該避免使用.4.我們可以對Java的ScriptEngine進行一些封裝成為一個HotPatch類使得它更適合做熱更新的工作。5.首先,檢查熱更新補丁的管道一定要建立在https上,因為下發代碼是極其危險的,如果被劫持,後果是無法想像的。其次,請求時最好自動帶上Android版本、手機型號、地區、版本號等信息,以方便更精確地下發,千萬不能下發錯。6.Java在運行時載入對應的類是通過ClassLoader來實現的,ClassLoader本身是一個抽象來,Android中使用PathClassLoader類作為Android的默認的類載入器7.我們的如果想做hotpatch,一定要保證我們的hotpacthdex文件出現在dexElements列表的前面。二.常用的熱更新技術框架:基於 空間的HotFix→→要使用到androiddex分包方案→拆分dex的項目的話,可以參考一下谷歌的multidex方案實現.大眾點評的NuWa←項目補丁自動化做的很完整alibaba/AndFix阿里巴巴的DexPoseddalvik_patch實現multidex使用React-Native實現app熱部署的一次實踐alibaba/AndFix三、常用的熱更新技術框架比較AdvantagedisadavantageNuWa1,可以新增類和欄位,2,兼容到6.0系統1,基本原理是classloader,類載入器2,不能修改資源文件,如圖片布局等(可通過動態布局實現)AndFix1,支持Android2.3到6.0版本2,支持arm與x86系統架構3,支持dalvik和ART的runtime4,不需要重啟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指定)。

閱讀全文

與nuwaandroid相關的資料

熱點內容
phpffmpeg轉碼 瀏覽:667
長沙好玩的解壓項目 瀏覽:140
專屬學情分析報告是什麼app 瀏覽:562
php工程部署 瀏覽:831
android全屏透明 瀏覽:730
阿里雲伺服器已開通怎麼辦 瀏覽:801
光遇為什麼登錄時伺服器已滿 瀏覽:300
PDF分析 瀏覽:482
h3c光纖全工半全工設置命令 瀏覽:139
公司法pdf下載 瀏覽:379
linuxmarkdown 瀏覽:349
華為手機怎麼多選文件夾 瀏覽:681
如何取消命令方塊指令 瀏覽:347
風翼app為什麼進不去了 瀏覽:776
im4java壓縮圖片 瀏覽:360
數據查詢網站源碼 瀏覽:148
伊克塞爾文檔怎麼進行加密 瀏覽:888
app轉賬是什麼 瀏覽:161
php的基本語法 瀏覽:792
對外漢語pdf 瀏覽:518