File dir = this.getDir(“libs”, Activity.MODE_PRIVATE);
String libPath = dir.getAbsolutePath() + File.separator + “hotlibapp.so”;
File libFile = new File(libPath);
if (libFile.exists()) {
supFA.add(“–aot-shared-library-name=” + libPath); //如果有hotlibapp文件 ,配置进去,没有则作用默认的
}
return supFA;
}
// 作用: 在手机根目录找 hotlibapp.so 文件 , 如果有则复制到 app libs 文件下, 没有则不做操作
public static void copyLibAndWrite(Context context, String fileName) {
try {
String path = Environment.getExternalStorageDirectory().toString();
File destFile2 = new File(path + “/” + fileName);
if (destFile2.exists()) {
File dir = context.getDir(“libs”, Activity.MODE_PRIVATE);
File destFile = new File(dir.getAbsolutePath() + File.separator + fileName);
if (destFile.exists()) {
destFile.delete();
}
destFile.createNewFile();
FileInputStream is = new FileInputStream(destFile2);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] buffer = new byte[is.available()];
int byteCount;
while ((byteCount = is.read(buffer)) != -1) {
fos.write(buffer, 0, byteCount);
}
fos.flush();
is.close();
fos.close();
destFile2.delete(); //复制完后删除这个文件
}
} catch (IOException e) {
}
}
}
原模原样复制进去就行 , 建议用as 打开 , 避免导包出错,代码不用变
- 打开MainActivity类 , 继承自己写的MyFlutterActivity类
package com.example.HotFlutter;
public class MainActivity extends MyFlutterActivity {
}
- 在AndroidManifest中添加
并注册我们自己写的类
- 为了展示效果 , 把main.dart 简化了一下 :
import ‘package:flutter/material.dart’;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
home: Scaffold(
body: Center(child: Text(“初始化项目”)),
),
);
}
}
打包:
flutter build apk --target-platform android-arm --split-per-abi
运行效果:
把 Text(“初始化项目”)改成Text(“热更新”), 重新打包一份,然后解压[图片上传失败…(image-4f4493-1600764652336)]
将app-armeabi-v7a-release\lib\armeabi-v7a\libapp.so 重命名成 hotlibapp.so,放到手机根目录
重启app , 发现首页已经变成 热更新了! 目录下的文件也会被删除 , 重启之后也是用的新包
大功告成!!!
在实际项目中,只需要把下载的文件直接写入到lib文件夹下就行了,不用经过手机根目录加载!
本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
最后
针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
-
Android前沿技术大纲
-
全套体系化高级架构视频
Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
.youkuaiyun.com/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!