导航:首页 > 操作系统 > 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相关的资料

热点内容
dvd光盘存储汉子算法 浏览:755
苹果邮件无法连接服务器地址 浏览:960
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:142
专属学情分析报告是什么app 浏览:563
php工程部署 浏览:831
android全屏透明 浏览:732
阿里云服务器已开通怎么办 浏览:802
光遇为什么登录时服务器已满 浏览:301
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:141
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:890
app转账是什么 浏览:163