├── .gitignore
├── .metadata
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── build
│ │ └── intermediates
│ │ │ ├── bugly_intermediates
│ │ │ └── AndroidManifest.xml
│ │ │ └── tinker_intermediates
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── public.txt
│ │ │ └── values_backup
│ │ │ ├── values-af
│ │ │ └── values-af.xml
│ │ │ ├── values-am
│ │ │ └── values-am.xml
│ │ │ ├── values-ar
│ │ │ └── values-ar.xml
│ │ │ ├── values-as
│ │ │ └── values-as.xml
│ │ │ ├── values-az
│ │ │ └── values-az.xml
│ │ │ ├── values-b+sr+Latn
│ │ │ └── values-b+sr+Latn.xml
│ │ │ ├── values-be
│ │ │ └── values-be.xml
│ │ │ ├── values-bg
│ │ │ └── values-bg.xml
│ │ │ ├── values-bn
│ │ │ └── values-bn.xml
│ │ │ ├── values-bs
│ │ │ └── values-bs.xml
│ │ │ ├── values-ca
│ │ │ └── values-ca.xml
│ │ │ ├── values-cs
│ │ │ └── values-cs.xml
│ │ │ ├── values-da
│ │ │ └── values-da.xml
│ │ │ ├── values-de
│ │ │ └── values-de.xml
│ │ │ ├── values-el
│ │ │ └── values-el.xml
│ │ │ ├── values-en-rAU
│ │ │ └── values-en-rAU.xml
│ │ │ ├── values-en-rCA
│ │ │ └── values-en-rCA.xml
│ │ │ ├── values-en-rGB
│ │ │ └── values-en-rGB.xml
│ │ │ ├── values-en-rIN
│ │ │ └── values-en-rIN.xml
│ │ │ ├── values-en-rXC
│ │ │ └── values-en-rXC.xml
│ │ │ ├── values-en
│ │ │ └── values-en.xml
│ │ │ ├── values-es-rUS
│ │ │ └── values-es-rUS.xml
│ │ │ ├── values-es
│ │ │ └── values-es.xml
│ │ │ ├── values-et
│ │ │ └── values-et.xml
│ │ │ ├── values-eu
│ │ │ └── values-eu.xml
│ │ │ ├── values-fa
│ │ │ └── values-fa.xml
│ │ │ ├── values-fi
│ │ │ └── values-fi.xml
│ │ │ ├── values-fr-rCA
│ │ │ └── values-fr-rCA.xml
│ │ │ ├── values-fr
│ │ │ └── values-fr.xml
│ │ │ ├── values-gl
│ │ │ └── values-gl.xml
│ │ │ ├── values-gu
│ │ │ └── values-gu.xml
│ │ │ ├── values-hi
│ │ │ └── values-hi.xml
│ │ │ ├── values-hr
│ │ │ └── values-hr.xml
│ │ │ ├── values-hu
│ │ │ └── values-hu.xml
│ │ │ ├── values-hy
│ │ │ └── values-hy.xml
│ │ │ ├── values-in
│ │ │ └── values-in.xml
│ │ │ ├── values-is
│ │ │ └── values-is.xml
│ │ │ ├── values-it
│ │ │ └── values-it.xml
│ │ │ ├── values-iw
│ │ │ └── values-iw.xml
│ │ │ ├── values-ja
│ │ │ └── values-ja.xml
│ │ │ ├── values-ka
│ │ │ └── values-ka.xml
│ │ │ ├── values-kk
│ │ │ └── values-kk.xml
│ │ │ ├── values-km
│ │ │ └── values-km.xml
│ │ │ ├── values-kn
│ │ │ └── values-kn.xml
│ │ │ ├── values-ko
│ │ │ └── values-ko.xml
│ │ │ ├── values-ky
│ │ │ └── values-ky.xml
│ │ │ ├── values-lo
│ │ │ └── values-lo.xml
│ │ │ ├── values-lt
│ │ │ └── values-lt.xml
│ │ │ ├── values-lv
│ │ │ └── values-lv.xml
│ │ │ ├── values-mk
│ │ │ └── values-mk.xml
│ │ │ ├── values-ml
│ │ │ └── values-ml.xml
│ │ │ ├── values-mn
│ │ │ └── values-mn.xml
│ │ │ ├── values-mr
│ │ │ └── values-mr.xml
│ │ │ ├── values-ms
│ │ │ └── values-ms.xml
│ │ │ ├── values-my
│ │ │ └── values-my.xml
│ │ │ ├── values-nb
│ │ │ └── values-nb.xml
│ │ │ ├── values-ne
│ │ │ └── values-ne.xml
│ │ │ ├── values-nl
│ │ │ └── values-nl.xml
│ │ │ ├── values-or
│ │ │ └── values-or.xml
│ │ │ ├── values-pa
│ │ │ └── values-pa.xml
│ │ │ ├── values-pl
│ │ │ └── values-pl.xml
│ │ │ ├── values-pt-rBR
│ │ │ └── values-pt-rBR.xml
│ │ │ ├── values-pt-rPT
│ │ │ └── values-pt-rPT.xml
│ │ │ ├── values-pt
│ │ │ └── values-pt.xml
│ │ │ ├── values-ro
│ │ │ └── values-ro.xml
│ │ │ ├── values-ru
│ │ │ └── values-ru.xml
│ │ │ ├── values-si
│ │ │ └── values-si.xml
│ │ │ ├── values-sk
│ │ │ └── values-sk.xml
│ │ │ ├── values-sl
│ │ │ └── values-sl.xml
│ │ │ ├── values-sq
│ │ │ └── values-sq.xml
│ │ │ ├── values-sr
│ │ │ └── values-sr.xml
│ │ │ ├── values-sv
│ │ │ └── values-sv.xml
│ │ │ ├── values-sw
│ │ │ └── values-sw.xml
│ │ │ ├── values-ta
│ │ │ └── values-ta.xml
│ │ │ ├── values-te
│ │ │ └── values-te.xml
│ │ │ ├── values-th
│ │ │ └── values-th.xml
│ │ │ ├── values-tl
│ │ │ └── values-tl.xml
│ │ │ ├── values-tr
│ │ │ └── values-tr.xml
│ │ │ ├── values-uk
│ │ │ └── values-uk.xml
│ │ │ ├── values-ur
│ │ │ └── values-ur.xml
│ │ │ ├── values-uz
│ │ │ └── values-uz.xml
│ │ │ ├── values-v16
│ │ │ └── values-v16.xml
│ │ │ ├── values-v21
│ │ │ └── values-v21.xml
│ │ │ ├── values-vi
│ │ │ └── values-vi.xml
│ │ │ ├── values-zh-rCN
│ │ │ └── values-zh-rCN.xml
│ │ │ ├── values-zh-rHK
│ │ │ └── values-zh-rHK.xml
│ │ │ ├── values-zh-rTW
│ │ │ └── values-zh-rTW.xml
│ │ │ ├── values-zu
│ │ │ └── values-zu.xml
│ │ │ └── values
│ │ │ └── values.xml
│ ├── libs
│ │ └── flutterpatch.aar
│ ├── src
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── sk
│ │ │ │ │ └── flutter_hot_fix
│ │ │ │ │ ├── AppApplication.java
│ │ │ │ │ └── MainActivity.java
│ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── tinker-support.gradle
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
└── main.dart
├── pubspec.lock
├── pubspec.yaml
├── screenshots
└── 1624542146075.jpg
└── test
└── widget_test.dart
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 78910062997c3a836feee883712c241a5fd22983
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 纯Flutter项目Android端热更新(三)
2 |
3 | ### 纯flutter项目下,利用tinker进行热更新的demo
4 |
5 |
6 | 之前做HotfixFliutter的时候,我在纯Flutter项目的android下尝试接入Tinker,
7 | 但是在编译之后,就出现了[tinkerid不一致](https://github.com/Tencent/tinker/issues/1422),然后就没继续跟进,到现在tinker开发组也没给这个Bug回应。但是网友提了要求,让我搞下,我就硬着头皮再试试。
8 |
9 | 仅在android 12上热修flutter的图片资源会出现空白的情况。
10 | 感觉跟FlutterSurfaceView渲染有关,第一帧刷了个空白到界面上。
11 | 把默认的`RenderMode.surface`,改成`RenderMode.texture`或`RenderMode.image`就没问题。
12 | 具体的详细原因能力有限,还没分析出来。
13 |
14 | ```
15 | public class MainActivity extends FlutterActivity {
16 | @NonNull
17 | @Override
18 | public RenderMode getRenderMode() {
19 | return RenderMode.texture;
20 | }
21 | }
22 |
23 | ```
24 |
25 |
26 |
27 | #### 一 新建纯Flutter项目
28 | [FlutterHotFix](https://github.com/magicbaby810/FlutterHotFix)
29 |
30 | 纯Flutter项目打开后,右侧是没有gradle task任务栏的,另起个窗口打开android目录,这样一个新的android项目窗口就出来
31 |
32 | #### 二 接入tinker
33 | 移步到[HotfixFlutter](https://github.com/magicbaby810/HotfixFlutter)去把tinker的一套配置copy过来。
34 |
35 | 把AppApplication也copy过来,MultiDexApplication换成FlutterApplication,去AndroidManifest.xml里把application标签里的name给换成AppApplication。
36 |
37 |
38 | #### 三 配置插件
39 | 进入 FlutterApplication,在onCreate方法里也是使用了
40 |
41 | ```
42 | FlutterInjector.instance().flutterLoader().startInitialization(this);
43 | ```
44 | 来初始化Flutter,那就好办了,只要在这个方法下插桩就行了,但是之前的hannibal没办法区分当前项目是否是纯Flutter,所以另起个gradle项目,把这个位置给hook处理下,上传到jitpack上
45 |
46 | ```
47 | classpath 'com.github.magicbaby810:hannibalx:0.2'
48 | ```
49 | #### 四 跑流程
50 | 配置到项目中,接下来还是跑一遍tinker的操作流程,发现一个大坑,在执行bindTinkerPatchRelease的时候,在build->app->outputs->patch,这个目录生成补丁后,会很快被删除,等于我要盯着这个补丁目录,一旦生成,赶紧copy出去一份,真TMD拼手速啊。
51 |
52 | 终于在试了几次后,掌握这个文件生成补丁的规律,每次出现patch目录,延迟200ms再copy到上层目录,这样正好里面的补丁也生成了。上传补丁,等了半天也不见补丁下发,解压开补丁包,在YAPATCH.MF里发现From里的tinkerid跟我基准包里的差了3秒,这才想起,以前就遇到过这个问题,当时是差了1秒。哎,1秒还是3秒无所谓了。
53 |
54 | 这个问题不能继续挡着我,淦。
55 |
56 | 突然想到这个tinkerid是自动生成的,如果我配置成死的,不就不会来回变了。
57 |
58 | 回到tinker-support.gradle里,把自动生成tinkerid配置注掉,按照以前手动配置tinkerid的套路操作一番,补丁下发成功,修复完成。
59 |
60 | ## 我真是个人才啊!
61 |
62 | ### Demo运行
63 | 1、打开工程,进入pubspec.yaml,点击Pub get,执行完成。
64 |
65 | 2、File->open...->android目录->open->New Window。
66 |
67 | 3、Application->Bugly.init(this, "34c01a08f1", true);->输入你的buglyId。
68 |
69 | 4、运行gradle下面的assembleRelease任务。执行完成,回到FlutterHotFix下,点击左上角的Reload按钮
70 |
71 | 
72 |
73 | 安装build->bakApk->带有日期文件夹->app-release.apk。
74 |
75 | 5、去FlutterHotFix项目下修改dart代码,以及添加加载图片资源。修改完后回到android项目下,把build->bakApk下生成目录上的安装日期抄写到tinker-support.gradle里的baseApkDir里,同时把tinkerId改成`x.x.x-patch`。执行tinker-support->buildTinkerPatchRelease。
76 |
77 | 6、执行完后,在build->outputs->patch这个文件夹是空的,莫慌,再执行一次tinker-support->buildTinkerPatchRelease,这时候再看文件夹有补丁了,莫怕,里面的tinkerId没有变。
78 |
79 | 7、进入bugly官网,打开热更新页面,点击发布新补丁,上传补丁build->outputs->patch->patch_signed_7zip.apk。点击全量设备(只限测试,别整个生产的bugly id进来啊),立即下发。稍微等待那么一小会,杀掉应用,再重新打开,会出现
80 |
81 | 
82 |
83 | 代表补丁已经打上去了,杀掉应用,再次打开进去flutter页面,修复成功!
84 |
85 | 
86 |
87 |
88 | 大家在使用的时候有什么问题,都可以来 麻花疼:1151212481 找我咨询
89 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'hannibal'
26 | apply from: 'tinker-support.gradle'
27 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
28 |
29 | android {
30 | compileSdkVersion 29
31 |
32 | lintOptions {
33 | disable 'InvalidPackage'
34 | }
35 |
36 | defaultConfig {
37 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
38 | applicationId "com.sk.flutter_hot_fix"
39 | minSdkVersion 19
40 | targetSdkVersion 29
41 | versionCode flutterVersionCode.toInteger()
42 | versionName flutterVersionName
43 | }
44 |
45 | buildTypes {
46 | release {
47 | // TODO: Add your own signing config for the release build.
48 | // Signing with the debug keys for now, so `flutter run --release` works.
49 | signingConfig signingConfigs.debug
50 | }
51 | }
52 | }
53 |
54 | dependencies {
55 | implementation fileTree(include: ['*.jar'], dir: 'libs')
56 |
57 |
58 | // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
59 | implementation 'com.tencent.tinker:tinker-android-lib:1.9.14.6'
60 | implementation 'androidx.multidex:multidex:2.0.0'
61 |
62 |
63 | // implementation 'com.sk.flutterpatch:flutterpatch:0.0.7'
64 |
65 | implementation files("libs/flutterpatch.aar")
66 |
67 | implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
68 | implementation 'com.tencent.bugly:nativecrashreport:latest.release'
69 |
70 | }
71 |
72 | flutter {
73 | source '../..'
74 | }
75 |
76 | import com.hannibal.gradle.utils.*
77 | import org.objectweb.asm.*
78 | hannibal {
79 | printLog true
80 | }
81 | //hannibal {
82 | // //下面这个参数仅仅影响log输出,为本次修改命名,无实际意义,不配置也可以
83 | // hannibalModifyName = 'Hannibal'
84 | // //设置为true可以显示帮助内容,默认为true
85 | // showHelp = true
86 | // //下面的参数设置为true时会输出工程编译耗时信息
87 | // watchTimeConsume = true
88 | //
89 | // printLog = true
90 | //
91 | // //this is the most important part
92 | // modifyMatchMaps = [
93 | // 'io.flutter.app.FlutterApplication': [
94 | // ['methodName': 'onCreate', 'methodDesc': null, 'adapter': {
95 | // ClassVisitor cv, int access, String name, String desc, String signature, String[] exceptions ->
96 | // MethodVisitor methodVisitor = cv.visitMethod(access, name, desc, signature, exceptions);
97 | // MethodVisitor adapter = new MethodLogAdapter(methodVisitor) {
98 | //
99 | // @Override
100 | // void visitInsn(int opcode) {
101 | // if (opcode == Opcodes.RETURN) {
102 | // methodVisitor.visitVarInsn(Opcodes.ALOAD, 0)
103 | // methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC,
104 | // "com/sk/flutterpatch/FlutterPatch",
105 | // "hook",
106 | // "(Ljava/lang/Object;)V",
107 | // false)
108 | //
109 | // Log.info "============== adjust Flutter success =============="
110 | // }
111 | // super.visitInsn(opcode)
112 | // }
113 | // }
114 | // return adapter;
115 | // }]
116 | // ]
117 | // ]
118 | //}
119 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/bugly_intermediates/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/public.txt:
--------------------------------------------------------------------------------
1 | com.sk.flutter_hot_fix:attr/alpha = 0x7f010000
2 | com.sk.flutter_hot_fix:attr/font = 0x7f010001
3 | com.sk.flutter_hot_fix:attr/fontProviderAuthority = 0x7f010002
4 | com.sk.flutter_hot_fix:attr/fontProviderCerts = 0x7f010003
5 | com.sk.flutter_hot_fix:attr/fontProviderFetchStrategy = 0x7f010004
6 | com.sk.flutter_hot_fix:attr/fontProviderFetchTimeout = 0x7f010005
7 | com.sk.flutter_hot_fix:attr/fontProviderPackage = 0x7f010006
8 | com.sk.flutter_hot_fix:attr/fontProviderQuery = 0x7f010007
9 | com.sk.flutter_hot_fix:attr/fontStyle = 0x7f010008
10 | com.sk.flutter_hot_fix:attr/fontVariationSettings = 0x7f010009
11 | com.sk.flutter_hot_fix:attr/fontWeight = 0x7f01000a
12 | com.sk.flutter_hot_fix:attr/ttcIndex = 0x7f01000b
13 | com.sk.flutter_hot_fix:color/colorAccent = 0x7f020000
14 | com.sk.flutter_hot_fix:color/colorPrimary = 0x7f020001
15 | com.sk.flutter_hot_fix:color/colorPrimaryDark = 0x7f020002
16 | com.sk.flutter_hot_fix:color/notification_action_color_filter = 0x7f020003
17 | com.sk.flutter_hot_fix:color/notification_icon_bg_color = 0x7f020004
18 | com.sk.flutter_hot_fix:color/ripple_material_light = 0x7f020005
19 | com.sk.flutter_hot_fix:color/secondary_text_default_material_light = 0x7f020006
20 | com.sk.flutter_hot_fix:dimen/activity_horizontal_margin = 0x7f030000
21 | com.sk.flutter_hot_fix:dimen/activity_vertical_margin = 0x7f030001
22 | com.sk.flutter_hot_fix:dimen/compat_button_inset_horizontal_material = 0x7f030002
23 | com.sk.flutter_hot_fix:dimen/compat_button_inset_vertical_material = 0x7f030003
24 | com.sk.flutter_hot_fix:dimen/compat_button_padding_horizontal_material = 0x7f030004
25 | com.sk.flutter_hot_fix:dimen/compat_button_padding_vertical_material = 0x7f030005
26 | com.sk.flutter_hot_fix:dimen/compat_control_corner_material = 0x7f030006
27 | com.sk.flutter_hot_fix:dimen/compat_notification_large_icon_max_height = 0x7f030007
28 | com.sk.flutter_hot_fix:dimen/compat_notification_large_icon_max_width = 0x7f030008
29 | com.sk.flutter_hot_fix:dimen/notification_action_icon_size = 0x7f030009
30 | com.sk.flutter_hot_fix:dimen/notification_action_text_size = 0x7f03000a
31 | com.sk.flutter_hot_fix:dimen/notification_big_circle_margin = 0x7f03000b
32 | com.sk.flutter_hot_fix:dimen/notification_content_margin_start = 0x7f03000c
33 | com.sk.flutter_hot_fix:dimen/notification_large_icon_height = 0x7f03000d
34 | com.sk.flutter_hot_fix:dimen/notification_large_icon_width = 0x7f03000e
35 | com.sk.flutter_hot_fix:dimen/notification_main_column_padding_top = 0x7f03000f
36 | com.sk.flutter_hot_fix:dimen/notification_media_narrow_margin = 0x7f030010
37 | com.sk.flutter_hot_fix:dimen/notification_right_icon_size = 0x7f030011
38 | com.sk.flutter_hot_fix:dimen/notification_right_side_padding_top = 0x7f030012
39 | com.sk.flutter_hot_fix:dimen/notification_small_icon_background_padding = 0x7f030013
40 | com.sk.flutter_hot_fix:dimen/notification_small_icon_size_as_large = 0x7f030014
41 | com.sk.flutter_hot_fix:dimen/notification_subtext_size = 0x7f030015
42 | com.sk.flutter_hot_fix:dimen/notification_top_pad = 0x7f030016
43 | com.sk.flutter_hot_fix:dimen/notification_top_pad_large_text = 0x7f030017
44 | com.sk.flutter_hot_fix:drawable/launch_background = 0x7f040000
45 | com.sk.flutter_hot_fix:drawable/notification_action_background = 0x7f040001
46 | com.sk.flutter_hot_fix:drawable/notification_bg = 0x7f040002
47 | com.sk.flutter_hot_fix:drawable/notification_bg_low = 0x7f040003
48 | com.sk.flutter_hot_fix:drawable/notification_bg_low_normal = 0x7f040004
49 | com.sk.flutter_hot_fix:drawable/notification_bg_low_pressed = 0x7f040005
50 | com.sk.flutter_hot_fix:drawable/notification_bg_normal = 0x7f040006
51 | com.sk.flutter_hot_fix:drawable/notification_bg_normal_pressed = 0x7f040007
52 | com.sk.flutter_hot_fix:drawable/notification_icon_background = 0x7f040008
53 | com.sk.flutter_hot_fix:drawable/notification_template_icon_bg = 0x7f040009
54 | com.sk.flutter_hot_fix:drawable/notification_template_icon_low_bg = 0x7f04000a
55 | com.sk.flutter_hot_fix:drawable/notification_tile_bg = 0x7f04000b
56 | com.sk.flutter_hot_fix:drawable/notify_panel_notification_icon_bg = 0x7f04000c
57 | com.sk.flutter_hot_fix:id/accessibility_action_clickable_span = 0x7f050000
58 | com.sk.flutter_hot_fix:id/accessibility_custom_action_0 = 0x7f050001
59 | com.sk.flutter_hot_fix:id/accessibility_custom_action_1 = 0x7f050002
60 | com.sk.flutter_hot_fix:id/accessibility_custom_action_10 = 0x7f050003
61 | com.sk.flutter_hot_fix:id/accessibility_custom_action_11 = 0x7f050004
62 | com.sk.flutter_hot_fix:id/accessibility_custom_action_12 = 0x7f050005
63 | com.sk.flutter_hot_fix:id/accessibility_custom_action_13 = 0x7f050006
64 | com.sk.flutter_hot_fix:id/accessibility_custom_action_14 = 0x7f050007
65 | com.sk.flutter_hot_fix:id/accessibility_custom_action_15 = 0x7f050008
66 | com.sk.flutter_hot_fix:id/accessibility_custom_action_16 = 0x7f050009
67 | com.sk.flutter_hot_fix:id/accessibility_custom_action_17 = 0x7f05000a
68 | com.sk.flutter_hot_fix:id/accessibility_custom_action_18 = 0x7f05000b
69 | com.sk.flutter_hot_fix:id/accessibility_custom_action_19 = 0x7f05000c
70 | com.sk.flutter_hot_fix:id/accessibility_custom_action_2 = 0x7f05000d
71 | com.sk.flutter_hot_fix:id/accessibility_custom_action_20 = 0x7f05000e
72 | com.sk.flutter_hot_fix:id/accessibility_custom_action_21 = 0x7f05000f
73 | com.sk.flutter_hot_fix:id/accessibility_custom_action_22 = 0x7f050010
74 | com.sk.flutter_hot_fix:id/accessibility_custom_action_23 = 0x7f050011
75 | com.sk.flutter_hot_fix:id/accessibility_custom_action_24 = 0x7f050012
76 | com.sk.flutter_hot_fix:id/accessibility_custom_action_25 = 0x7f050013
77 | com.sk.flutter_hot_fix:id/accessibility_custom_action_26 = 0x7f050014
78 | com.sk.flutter_hot_fix:id/accessibility_custom_action_27 = 0x7f050015
79 | com.sk.flutter_hot_fix:id/accessibility_custom_action_28 = 0x7f050016
80 | com.sk.flutter_hot_fix:id/accessibility_custom_action_29 = 0x7f050017
81 | com.sk.flutter_hot_fix:id/accessibility_custom_action_3 = 0x7f050018
82 | com.sk.flutter_hot_fix:id/accessibility_custom_action_30 = 0x7f050019
83 | com.sk.flutter_hot_fix:id/accessibility_custom_action_31 = 0x7f05001a
84 | com.sk.flutter_hot_fix:id/accessibility_custom_action_4 = 0x7f05001b
85 | com.sk.flutter_hot_fix:id/accessibility_custom_action_5 = 0x7f05001c
86 | com.sk.flutter_hot_fix:id/accessibility_custom_action_6 = 0x7f05001d
87 | com.sk.flutter_hot_fix:id/accessibility_custom_action_7 = 0x7f05001e
88 | com.sk.flutter_hot_fix:id/accessibility_custom_action_8 = 0x7f05001f
89 | com.sk.flutter_hot_fix:id/accessibility_custom_action_9 = 0x7f050020
90 | com.sk.flutter_hot_fix:id/action_container = 0x7f050021
91 | com.sk.flutter_hot_fix:id/action_divider = 0x7f050022
92 | com.sk.flutter_hot_fix:id/action_image = 0x7f050023
93 | com.sk.flutter_hot_fix:id/action_text = 0x7f050024
94 | com.sk.flutter_hot_fix:id/actions = 0x7f050025
95 | com.sk.flutter_hot_fix:id/async = 0x7f050026
96 | com.sk.flutter_hot_fix:id/blocking = 0x7f050027
97 | com.sk.flutter_hot_fix:id/chronometer = 0x7f050028
98 | com.sk.flutter_hot_fix:id/dialog_button = 0x7f050029
99 | com.sk.flutter_hot_fix:id/forever = 0x7f05002a
100 | com.sk.flutter_hot_fix:id/icon = 0x7f05002b
101 | com.sk.flutter_hot_fix:id/icon_group = 0x7f05002c
102 | com.sk.flutter_hot_fix:id/info = 0x7f05002d
103 | com.sk.flutter_hot_fix:id/italic = 0x7f05002e
104 | com.sk.flutter_hot_fix:id/line1 = 0x7f05002f
105 | com.sk.flutter_hot_fix:id/line3 = 0x7f050030
106 | com.sk.flutter_hot_fix:id/normal = 0x7f050031
107 | com.sk.flutter_hot_fix:id/notification_background = 0x7f050032
108 | com.sk.flutter_hot_fix:id/notification_main_column = 0x7f050033
109 | com.sk.flutter_hot_fix:id/notification_main_column_container = 0x7f050034
110 | com.sk.flutter_hot_fix:id/right_icon = 0x7f050035
111 | com.sk.flutter_hot_fix:id/right_side = 0x7f050036
112 | com.sk.flutter_hot_fix:id/tag_accessibility_actions = 0x7f050037
113 | com.sk.flutter_hot_fix:id/tag_accessibility_clickable_spans = 0x7f050038
114 | com.sk.flutter_hot_fix:id/tag_accessibility_heading = 0x7f050039
115 | com.sk.flutter_hot_fix:id/tag_accessibility_pane_title = 0x7f05003a
116 | com.sk.flutter_hot_fix:id/tag_screen_reader_focusable = 0x7f05003b
117 | com.sk.flutter_hot_fix:id/tag_transition_group = 0x7f05003c
118 | com.sk.flutter_hot_fix:id/tag_unhandled_key_event_manager = 0x7f05003d
119 | com.sk.flutter_hot_fix:id/tag_unhandled_key_listeners = 0x7f05003e
120 | com.sk.flutter_hot_fix:id/text = 0x7f05003f
121 | com.sk.flutter_hot_fix:id/text2 = 0x7f050040
122 | com.sk.flutter_hot_fix:id/time = 0x7f050041
123 | com.sk.flutter_hot_fix:id/title = 0x7f050042
124 | com.sk.flutter_hot_fix:integer/status_bar_notification_info_maxnum = 0x7f060000
125 | com.sk.flutter_hot_fix:layout/activity_beta_active_alert = 0x7f070000
126 | com.sk.flutter_hot_fix:layout/custom_dialog = 0x7f070001
127 | com.sk.flutter_hot_fix:layout/notification_action = 0x7f070002
128 | com.sk.flutter_hot_fix:layout/notification_action_tombstone = 0x7f070003
129 | com.sk.flutter_hot_fix:layout/notification_template_custom_big = 0x7f070004
130 | com.sk.flutter_hot_fix:layout/notification_template_icon_group = 0x7f070005
131 | com.sk.flutter_hot_fix:layout/notification_template_part_chronometer = 0x7f070006
132 | com.sk.flutter_hot_fix:layout/notification_template_part_time = 0x7f070007
133 | com.sk.flutter_hot_fix:mipmap/ic_launcher = 0x7f080000
134 | com.sk.flutter_hot_fix:string/app_name = 0x7f090000
135 | com.sk.flutter_hot_fix:string/status_bar_notification_info_overflow = 0x7f090001
136 | com.sk.flutter_hot_fix:string/strNetworkTipsCancelBtn = 0x7f090002
137 | com.sk.flutter_hot_fix:string/strNetworkTipsConfirmBtn = 0x7f090003
138 | com.sk.flutter_hot_fix:string/strNetworkTipsMessage = 0x7f090004
139 | com.sk.flutter_hot_fix:string/strNetworkTipsTitle = 0x7f090005
140 | com.sk.flutter_hot_fix:string/strNotificationClickToContinue = 0x7f090006
141 | com.sk.flutter_hot_fix:string/strNotificationClickToInstall = 0x7f090007
142 | com.sk.flutter_hot_fix:string/strNotificationClickToRetry = 0x7f090008
143 | com.sk.flutter_hot_fix:string/strNotificationClickToView = 0x7f090009
144 | com.sk.flutter_hot_fix:string/strNotificationDownloadError = 0x7f09000a
145 | com.sk.flutter_hot_fix:string/strNotificationDownloadSucc = 0x7f09000b
146 | com.sk.flutter_hot_fix:string/strNotificationDownloading = 0x7f09000c
147 | com.sk.flutter_hot_fix:string/strNotificationHaveNewVersion = 0x7f09000d
148 | com.sk.flutter_hot_fix:string/strToastCheckUpgradeError = 0x7f09000e
149 | com.sk.flutter_hot_fix:string/strToastCheckingUpgrade = 0x7f09000f
150 | com.sk.flutter_hot_fix:string/strToastYourAreTheLatestVersion = 0x7f090010
151 | com.sk.flutter_hot_fix:string/strUpgradeDialogCancelBtn = 0x7f090011
152 | com.sk.flutter_hot_fix:string/strUpgradeDialogContinueBtn = 0x7f090012
153 | com.sk.flutter_hot_fix:string/strUpgradeDialogFeatureLabel = 0x7f090013
154 | com.sk.flutter_hot_fix:string/strUpgradeDialogFileSizeLabel = 0x7f090014
155 | com.sk.flutter_hot_fix:string/strUpgradeDialogInstallBtn = 0x7f090015
156 | com.sk.flutter_hot_fix:string/strUpgradeDialogRetryBtn = 0x7f090016
157 | com.sk.flutter_hot_fix:string/strUpgradeDialogUpdateTimeLabel = 0x7f090017
158 | com.sk.flutter_hot_fix:string/strUpgradeDialogUpgradeBtn = 0x7f090018
159 | com.sk.flutter_hot_fix:string/strUpgradeDialogVersionLabel = 0x7f090019
160 | com.sk.flutter_hot_fix:style/AppBaseTheme = 0x7f0a0000
161 | com.sk.flutter_hot_fix:style/AppTheme = 0x7f0a0001
162 | com.sk.flutter_hot_fix:style/LaunchTheme = 0x7f0a0002
163 | com.sk.flutter_hot_fix:style/NormalTheme = 0x7f0a0003
164 | com.sk.flutter_hot_fix:style/TextAppearance.Compat.Notification = 0x7f0a0004
165 | com.sk.flutter_hot_fix:style/TextAppearance.Compat.Notification.Info = 0x7f0a0005
166 | com.sk.flutter_hot_fix:style/TextAppearance.Compat.Notification.Line2 = 0x7f0a0006
167 | com.sk.flutter_hot_fix:style/TextAppearance.Compat.Notification.Time = 0x7f0a0007
168 | com.sk.flutter_hot_fix:style/TextAppearance.Compat.Notification.Title = 0x7f0a0008
169 | com.sk.flutter_hot_fix:style/Widget.Compat.NotificationActionContainer = 0x7f0a0009
170 | com.sk.flutter_hot_fix:style/Widget.Compat.NotificationActionText = 0x7f0a000a
171 | com.sk.flutter_hot_fix:xml/provider_paths = 0x7f0c0000
172 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-af/values-af.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-am/values-am.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ar/values-ar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-as/values-as.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "৯৯৯+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-az/values-az.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-b+sr+Latn/values-b+sr+Latn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-be/values-be.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-bg/values-bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-bn/values-bn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "৯৯৯+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-bs/values-bs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ca/values-ca.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-cs/values-cs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-da/values-da.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-de/values-de.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-el/values-el.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en-rAU/values-en-rAU.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en-rCA/values-en-rCA.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en-rGB/values-en-rGB.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en-rIN/values-en-rIN.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en-rXC/values-en-rXC.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-en/values-en.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Cancel
4 | Continue
5 | The Network have switch to mobile network, continue?
6 | Network tips
7 | Continue download
8 | Click to install
9 | Click to retry
10 | Click to check
11 | Download fail
12 | Download finished
13 | Downloading...
14 | Have new version
15 | Check upgrade fail, retry after
16 | Checking upgrade...
17 | You have no new version
18 | Next time
19 | Continue
20 | Upgrade feature
21 | Package Size
22 | Install
23 | Retry
24 | Upgrade time
25 | Upgrade
26 | Version
27 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-es-rUS/values-es-rUS.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-es/values-es.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-et/values-et.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-eu/values-eu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-fa/values-fa.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-fi/values-fi.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-fr-rCA/values-fr-rCA.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-fr/values-fr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-gl/values-gl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ">999"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-gu/values-gu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-hi/values-hi.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-hr/values-hr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-hu/values-hu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-hy/values-hy.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-in/values-in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-is/values-is.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-it/values-it.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-iw/values-iw.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ja/values-ja.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ka/values-ka.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-kk/values-kk.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-km/values-km.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-kn/values-kn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ko/values-ko.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ky/values-ky.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-lo/values-lo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-lt/values-lt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-lv/values-lv.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-mk/values-mk.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ml/values-ml.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-mn/values-mn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-mr/values-mr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "९९९+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ms/values-ms.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-my/values-my.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "၉၉၉+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-nb/values-nb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ne/values-ne.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "९९९+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-nl/values-nl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-or/values-or.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-pa/values-pa.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-pl/values-pl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-pt-rBR/values-pt-rBR.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-pt-rPT/values-pt-rPT.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-pt/values-pt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ro/values-ro.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ru/values-ru.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ">999"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-si/values-si.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sk/values-sk.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sl/values-sl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sq/values-sq.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sr/values-sr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sv/values-sv.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-sw/values-sw.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ta/values-ta.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-te/values-te.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-th/values-th.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-tl/values-tl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-tr/values-tr.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-uk/values-uk.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-ur/values-ur.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "+999"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-uz/values-uz.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-v16/values-v16.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4dp
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-v21/values-v21.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @color/secondary_text_default_material_light
4 | 0dp
5 | 0dp
6 | 12dp
7 |
8 |
9 |
10 |
11 |
14 |
19 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-vi/values-vi.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-zh-rCN/values-zh-rCN.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-zh-rHK/values-zh-rHK.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-zh-rTW/values-zh-rTW.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values-zu/values-zu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | "999+"
4 |
--------------------------------------------------------------------------------
/android/app/build/intermediates/tinker_intermediates/values_backup/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF4081
4 | #3F51B5
5 | #303F9F
6 | #ffffffff
7 | #ff9e9e9e
8 | #1f000000
9 | #8a000000
10 | 16dp
11 | 16dp
12 | 4dp
13 | 6dp
14 | 8dp
15 | 4dp
16 | 2dp
17 | 320dp
18 | 320dp
19 | 32dp
20 | 13sp
21 | 12dp
22 | 8dp
23 | 64dp
24 | 64dp
25 | 10dp
26 | @dimen/notification_content_margin_start
27 | 16dp
28 | 2dp
29 | 3dp
30 | 24dp
31 | 13sp
32 | 10dp
33 | 5dp
34 | #3333B5E5
35 | #0cffffff
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | 999
83 | tinker-wrapper
84 | 999+
85 | 取消
86 | 继续下载
87 | 你已切换到移动网络,是否继续当前下载?
88 | 网络提示
89 | 继续下载
90 | 点击安装
91 | 点击重试
92 | 点击查看
93 | 下载失败
94 | 下载完成
95 | 正在下载
96 | 有新版本
97 | 检查新版本失败,请稍后重试
98 | 正在检查,请稍候...
99 | 你已经是最新版了
100 | 下次再说
101 | 继续
102 | 更新说明
103 | 包大小
104 | 安装
105 | 重试
106 | 更新时间
107 | 立即更新
108 | 版本
109 |
116 |
119 |
124 |
127 |
128 |
132 |
133 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
152 |
153 |
155 |
156 |
161 |
162 |
169 |
170 |
175 |
176 |
181 |
182 |
183 |
184 |
185 |
187 |
188 |
189 |
190 |
191 |
194 |
195 |
196 |
197 |
198 |
200 |
201 |
206 |
207 |
211 |
212 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
245 |
246 |
248 |
249 |
251 |
252 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
262 |
263 |
264 |
265 |
266 |
--------------------------------------------------------------------------------
/android/app/libs/flutterpatch.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/libs/flutterpatch.aar
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
12 |
19 |
23 |
27 |
32 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/sk/flutter_hot_fix/AppApplication.java:
--------------------------------------------------------------------------------
1 | package com.sk.flutter_hot_fix;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 | import android.net.wifi.WifiManager;
6 | import android.os.Build;
7 |
8 |
9 | //import com.idlefish.flutterboost.FlutterBoost;
10 | //import com.idlefish.flutterboost.Platform;
11 | //import com.idlefish.flutterboost.Utils;
12 | //import com.idlefish.flutterboost.interfaces.INativeRouter;
13 | import androidx.multidex.MultiDexApplication;
14 |
15 | import com.tencent.bugly.Bugly;
16 | import com.tencent.bugly.beta.Beta;
17 |
18 | import java.util.Map;
19 |
20 | import io.flutter.FlutterInjector;
21 | import io.flutter.app.FlutterApplication;
22 | import io.flutter.embedding.android.FlutterView;
23 | import io.flutter.plugin.common.MethodChannel;
24 | import io.flutter.view.FlutterMain;
25 |
26 | /**
27 | * | quu..__
28 | * | $$ `---.__
29 | * | "$ `--. ___.---uuudP
30 | * | `$ `.__.------.__ __.---' $$$$" .
31 | * | " -' `-.-' $$$" .'|
32 | * | ". d$" _.' |
33 | * | `. / ..." .' |
34 | * | `./ ..::-' _.' |
35 | * | / .:::-' .-' .'
36 | * | : ::''\ _.' |
37 | * | .' .-. .-. `. .' |
38 | * | : /'$$| .@"$\ `. .' _.-'
39 | * | .'|$$| |$$,$$| | < _.-'
40 | * | | `:$$:' :$$$$$: `. `. .-'
41 | * | : `"--' | `-. \
42 | * | :$$. == .$$$. `. `. `\
43 | * | |$$: :$$$: | > >
44 | * | |$' `..'`..' `$$$' x: / /
45 | * | \ xXX| / ./
46 | * | \ xXXX'| / ./
47 | * | /`-. `. / /
48 | * | : `- ..........., | / .'
49 | * | | ``:::::::' . |< `.
50 | * | | ``` | x| \ `.:``.
51 | * | | .' /' xXX| `:`M`M':.
52 | * | | | ; /:' xXXX'| -'MMMMM:'
53 | * | `. .' : /:' |-'MMMM.-'
54 | * | | | .' /' .'MMM.-'
55 | * | `'`' : ,' |MMM<
56 | * | | `' |tbap\
57 | * | \ :MM.-'
58 | * | \ | .''
59 | * | \. `. /
60 | * | / .:::::::.. : /
61 | * | | .:::::::::::`. /
62 | * | | .:::------------\ /
63 | * | / .'' >::' /
64 | * | `',: : .'
65 | * |
66 | * | `:.:'
67 | * |
68 | * |
69 | * |
70 | *
71 | * @author SK on 2020/6/18
72 | */
73 |
74 |
75 | public class AppApplication extends FlutterApplication {
76 |
77 |
78 | // 测试sophix时,请注掉attachBaseContext
79 | @Override
80 | protected void attachBaseContext(Context base) {
81 | super.attachBaseContext(base);
82 | Beta.installTinker();
83 | }
84 |
85 | @Override
86 | public void onCreate() {
87 | super.onCreate();
88 | Bugly.init(this, "34c01a08f1", true);
89 | }
90 |
91 | //配置flutterboost
92 | // private void initFlutterBoost() {
93 | // INativeRouter router =new INativeRouter() {
94 | // @Override
95 | // public void openContainer(Context context, String url, Map urlParams, int requestCode, Map exts) {
96 | // String assembleUrl= Utils.assembleUrl(url,urlParams);
97 | // }
98 | //
99 | // };
100 | //
101 | // FlutterBoost.BoostLifecycleListener boostLifecycleListener= new FlutterBoost.BoostLifecycleListener(){
102 | //
103 | // @Override
104 | // public void beforeCreateEngine() {
105 | //
106 | // }
107 | //
108 | // @Override
109 | // public void onEngineCreated() {
110 | //
111 | // // 注册MethodChannel,监听flutter侧的getPlatformVersion调用
112 | // MethodChannel methodChannel = new MethodChannel(FlutterBoost.instance().engineProvider().getDartExecutor(), "flutter_native_channel");
113 | // methodChannel.setMethodCallHandler((call, result) -> {
114 | //
115 | // if (call.method.equals("getPlatformVersion")) {
116 | // result.success(Build.VERSION.RELEASE);
117 | // } else {
118 | // result.notImplemented();
119 | // }
120 | //
121 | // });
122 | //
123 | // // 注册PlatformView viewTypeId要和flutter中的viewType对应
124 | //// FlutterBoost
125 | //// .instance()
126 | //// .engineProvider()
127 | //// .getPlatformViewsController()
128 | //// .getRegistry()
129 | //// .registerViewFactory("plugins.test/view", new TextPlatformViewFactory(StandardMessageCodec.INSTANCE));
130 | //
131 | // }
132 | //
133 | // @Override
134 | // public void onPluginsRegistered() {
135 | //
136 | // }
137 | //
138 | // @Override
139 | // public void onEngineDestroy() {
140 | //
141 | // }
142 | //
143 | // };
144 | //
145 | // //
146 | // // AndroidManifest.xml 中必须要添加 flutterEmbedding 版本设置
147 | // //
148 | // //
150 | // //
151 | // // GeneratedPluginRegistrant 会自动生成 新的插件方式
152 | // //
153 | // // 插件注册方式请使用
154 | // // FlutterBoost.instance().engineProvider().getPlugins().add(new FlutterPlugin());
155 | // // GeneratedPluginRegistrant.registerWith(),是在engine 创建后马上执行,放射形式调用
156 | // //
157 | //
158 | // Platform platform= new FlutterBoost
159 | // .ConfigBuilder(this,router)
160 | // .isDebug(true)
161 | // .whenEngineStart(FlutterBoost.ConfigBuilder.ANY_ACTIVITY_CREATED)
162 | // .renderMode(FlutterView.RenderMode.texture)
163 | // .lifecycleListener(boostLifecycleListener)
164 | // .build();
165 | // FlutterBoost.instance().init(platform);
166 | // }
167 | }
168 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/sk/flutter_hot_fix/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.sk.flutter_hot_fix;
2 |
3 | import android.util.Log;
4 |
5 | import io.flutter.embedding.android.FlutterActivity;
6 |
7 | public class MainActivity extends FlutterActivity {
8 |
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/tinker-support.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.tencent.bugly.tinker-support'
2 |
3 | def bakPath = file("${buildDir}/bakApk/")
4 |
5 | /**
6 | * 此处填写每次构建生成的基准包目录
7 | */
8 | def baseApkDir = "app-0619-00-46-00"
9 |
10 | /**
11 | * 对于插件各参数的详细解析请参考
12 | */
13 | tinkerSupport {
14 |
15 | // 开启tinker-support插件,默认值true
16 | enable = true
17 |
18 | // 指定归档目录,默认值当前module的子目录tinker
19 | autoBackupApkDir = "${bakPath}"
20 |
21 | tinkerId = "1.0.0-base"
22 | // autoGenerateTinkerId = true
23 |
24 | // 是否启用覆盖tinkerPatch配置功能,默认值false
25 | // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch
26 | overrideTinkerPatchConfiguration = true
27 |
28 | // 编译补丁包时,必需指定基线版本的apk,默认值为空
29 | // 如果为空,则表示不是进行补丁包的编译
30 | // @{link tinkerPatch.oldApk }
31 | baseApk = "${bakPath}/${baseApkDir}/app-release.apk"
32 |
33 | // 对应tinker插件applyMapping
34 | baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"
35 |
36 | // 对应tinker插件applyResourceMapping
37 | baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"
38 |
39 | // 构建多渠道补丁时使用
40 | // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"
41 |
42 | // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持)
43 | // isProtectedApp = true
44 |
45 | // 是否开启反射Application模式
46 | enableProxyApplication = true
47 |
48 | // 是否支持新增非export的Activity(注意:设置为true才能修改AndroidManifest文件)
49 | supportHotplugComponent = true
50 |
51 | }
52 |
53 | /**
54 | * 一般来说,我们无需对下面的参数做任何的修改
55 | * 对于各参数的详细介绍请参考:
56 | * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
57 | */
58 | tinkerPatch {
59 | //oldApk ="${bakPath}/${appName}/app-release.apk"
60 | ignoreWarning = false
61 | useSign = true
62 | dex {
63 | dexMode = "jar"
64 | pattern = ["classes*.dex"]
65 | loader = []
66 | }
67 | lib {
68 | pattern = ["lib/*/*.so"]
69 | }
70 |
71 | res {
72 | pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
73 | ignoreChange = []
74 | largeModSize = 100
75 | }
76 |
77 | packageConfig {
78 | }
79 | sevenZip {
80 | zipArtifact = "com.tencent.mm:SevenZip:1.1.0"
81 | // path = "/usr/local/bin/7za"
82 | }
83 | buildConfig {
84 | keepDexApply = false
85 | //tinkerId = "1.0.1-base"
86 | //applyMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard混淆方式
87 | //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配
88 | }
89 | }
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | maven { url "https://jitpack.io" }
6 |
7 | maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
8 | maven { url 'https://maven.aliyun.com/repository/google/' }
9 | maven { url 'https://maven.aliyun.com/repository/jcenter/' }
10 | maven { url 'http://download.flutter.io' }
11 | maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
12 | }
13 |
14 | dependencies {
15 | classpath 'com.android.tools.build:gradle:3.4.1'
16 |
17 | classpath 'com.tencent.bugly:tinker-support:1.1.5'
18 |
19 | classpath 'com.github.magicbaby810:HannibalX:0.2'
20 | }
21 | }
22 |
23 | allprojects {
24 | repositories {
25 | google()
26 | mavenCentral()
27 | maven { url "https://jitpack.io" }
28 |
29 | maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
30 | maven { url 'https://maven.aliyun.com/repository/google/' }
31 | maven { url 'https://maven.aliyun.com/repository/jcenter/' }
32 | maven { url 'http://download.flutter.io' }
33 | maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
34 | }
35 | }
36 |
37 | rootProject.buildDir = '../build'
38 | subprojects {
39 | project.buildDir = "${rootProject.buildDir}/${project.name}"
40 | }
41 | subprojects {
42 | project.evaluationDependsOn(':app')
43 | }
44 |
45 | task clean(type: Delete) {
46 | delete rootProject.buildDir
47 | }
48 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | android.enableR8=true
5 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXCopyFilesBuildPhase section */
19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
20 | isa = PBXCopyFilesBuildPhase;
21 | buildActionMask = 2147483647;
22 | dstPath = "";
23 | dstSubfolderSpec = 10;
24 | files = (
25 | );
26 | name = "Embed Frameworks";
27 | runOnlyForDeploymentPostprocessing = 0;
28 | };
29 | /* End PBXCopyFilesBuildPhase section */
30 |
31 | /* Begin PBXFileReference section */
32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | );
53 | runOnlyForDeploymentPostprocessing = 0;
54 | };
55 | /* End PBXFrameworksBuildPhase section */
56 |
57 | /* Begin PBXGroup section */
58 | 9740EEB11CF90186004384FC /* Flutter */ = {
59 | isa = PBXGroup;
60 | children = (
61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
65 | );
66 | name = Flutter;
67 | sourceTree = "";
68 | };
69 | 97C146E51CF9000F007C117D = {
70 | isa = PBXGroup;
71 | children = (
72 | 9740EEB11CF90186004384FC /* Flutter */,
73 | 97C146F01CF9000F007C117D /* Runner */,
74 | 97C146EF1CF9000F007C117D /* Products */,
75 | );
76 | sourceTree = "";
77 | };
78 | 97C146EF1CF9000F007C117D /* Products */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 97C146EE1CF9000F007C117D /* Runner.app */,
82 | );
83 | name = Products;
84 | sourceTree = "";
85 | };
86 | 97C146F01CF9000F007C117D /* Runner */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
92 | 97C147021CF9000F007C117D /* Info.plist */,
93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
97 | );
98 | path = Runner;
99 | sourceTree = "";
100 | };
101 | /* End PBXGroup section */
102 |
103 | /* Begin PBXNativeTarget section */
104 | 97C146ED1CF9000F007C117D /* Runner */ = {
105 | isa = PBXNativeTarget;
106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
107 | buildPhases = (
108 | 9740EEB61CF901F6004384FC /* Run Script */,
109 | 97C146EA1CF9000F007C117D /* Sources */,
110 | 97C146EB1CF9000F007C117D /* Frameworks */,
111 | 97C146EC1CF9000F007C117D /* Resources */,
112 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
114 | );
115 | buildRules = (
116 | );
117 | dependencies = (
118 | );
119 | name = Runner;
120 | productName = Runner;
121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
122 | productType = "com.apple.product-type.application";
123 | };
124 | /* End PBXNativeTarget section */
125 |
126 | /* Begin PBXProject section */
127 | 97C146E61CF9000F007C117D /* Project object */ = {
128 | isa = PBXProject;
129 | attributes = {
130 | LastUpgradeCheck = 1020;
131 | ORGANIZATIONNAME = "";
132 | TargetAttributes = {
133 | 97C146ED1CF9000F007C117D = {
134 | CreatedOnToolsVersion = 7.3.1;
135 | LastSwiftMigration = 1100;
136 | };
137 | };
138 | };
139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
140 | compatibilityVersion = "Xcode 9.3";
141 | developmentRegion = en;
142 | hasScannedForEncodings = 0;
143 | knownRegions = (
144 | en,
145 | Base,
146 | );
147 | mainGroup = 97C146E51CF9000F007C117D;
148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
149 | projectDirPath = "";
150 | projectRoot = "";
151 | targets = (
152 | 97C146ED1CF9000F007C117D /* Runner */,
153 | );
154 | };
155 | /* End PBXProject section */
156 |
157 | /* Begin PBXResourcesBuildPhase section */
158 | 97C146EC1CF9000F007C117D /* Resources */ = {
159 | isa = PBXResourcesBuildPhase;
160 | buildActionMask = 2147483647;
161 | files = (
162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXShellScriptBuildPhase section */
172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
173 | isa = PBXShellScriptBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | );
177 | inputPaths = (
178 | );
179 | name = "Thin Binary";
180 | outputPaths = (
181 | );
182 | runOnlyForDeploymentPostprocessing = 0;
183 | shellPath = /bin/sh;
184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
185 | };
186 | 9740EEB61CF901F6004384FC /* Run Script */ = {
187 | isa = PBXShellScriptBuildPhase;
188 | buildActionMask = 2147483647;
189 | files = (
190 | );
191 | inputPaths = (
192 | );
193 | name = "Run Script";
194 | outputPaths = (
195 | );
196 | runOnlyForDeploymentPostprocessing = 0;
197 | shellPath = /bin/sh;
198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
199 | };
200 | /* End PBXShellScriptBuildPhase section */
201 |
202 | /* Begin PBXSourcesBuildPhase section */
203 | 97C146EA1CF9000F007C117D /* Sources */ = {
204 | isa = PBXSourcesBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
209 | );
210 | runOnlyForDeploymentPostprocessing = 0;
211 | };
212 | /* End PBXSourcesBuildPhase section */
213 |
214 | /* Begin PBXVariantGroup section */
215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
216 | isa = PBXVariantGroup;
217 | children = (
218 | 97C146FB1CF9000F007C117D /* Base */,
219 | );
220 | name = Main.storyboard;
221 | sourceTree = "";
222 | };
223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
224 | isa = PBXVariantGroup;
225 | children = (
226 | 97C147001CF9000F007C117D /* Base */,
227 | );
228 | name = LaunchScreen.storyboard;
229 | sourceTree = "";
230 | };
231 | /* End PBXVariantGroup section */
232 |
233 | /* Begin XCBuildConfiguration section */
234 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
235 | isa = XCBuildConfiguration;
236 | buildSettings = {
237 | ALWAYS_SEARCH_USER_PATHS = NO;
238 | CLANG_ANALYZER_NONNULL = YES;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
244 | CLANG_WARN_BOOL_CONVERSION = YES;
245 | CLANG_WARN_COMMA = YES;
246 | CLANG_WARN_CONSTANT_CONVERSION = YES;
247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
249 | CLANG_WARN_EMPTY_BODY = YES;
250 | CLANG_WARN_ENUM_CONVERSION = YES;
251 | CLANG_WARN_INFINITE_RECURSION = YES;
252 | CLANG_WARN_INT_CONVERSION = YES;
253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
258 | CLANG_WARN_STRICT_PROTOTYPES = YES;
259 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
260 | CLANG_WARN_UNREACHABLE_CODE = YES;
261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
263 | COPY_PHASE_STRIP = NO;
264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
265 | ENABLE_NS_ASSERTIONS = NO;
266 | ENABLE_STRICT_OBJC_MSGSEND = YES;
267 | GCC_C_LANGUAGE_STANDARD = gnu99;
268 | GCC_NO_COMMON_BLOCKS = YES;
269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
271 | GCC_WARN_UNDECLARED_SELECTOR = YES;
272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
273 | GCC_WARN_UNUSED_FUNCTION = YES;
274 | GCC_WARN_UNUSED_VARIABLE = YES;
275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
276 | MTL_ENABLE_DEBUG_INFO = NO;
277 | SDKROOT = iphoneos;
278 | SUPPORTED_PLATFORMS = iphoneos;
279 | TARGETED_DEVICE_FAMILY = "1,2";
280 | VALIDATE_PRODUCT = YES;
281 | };
282 | name = Profile;
283 | };
284 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
285 | isa = XCBuildConfiguration;
286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
287 | buildSettings = {
288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
289 | CLANG_ENABLE_MODULES = YES;
290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
291 | ENABLE_BITCODE = NO;
292 | FRAMEWORK_SEARCH_PATHS = (
293 | "$(inherited)",
294 | "$(PROJECT_DIR)/Flutter",
295 | );
296 | INFOPLIST_FILE = Runner/Info.plist;
297 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
298 | LIBRARY_SEARCH_PATHS = (
299 | "$(inherited)",
300 | "$(PROJECT_DIR)/Flutter",
301 | );
302 | PRODUCT_BUNDLE_IDENTIFIER = com.sk.flutterHotFix;
303 | PRODUCT_NAME = "$(TARGET_NAME)";
304 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
305 | SWIFT_VERSION = 5.0;
306 | VERSIONING_SYSTEM = "apple-generic";
307 | };
308 | name = Profile;
309 | };
310 | 97C147031CF9000F007C117D /* Debug */ = {
311 | isa = XCBuildConfiguration;
312 | buildSettings = {
313 | ALWAYS_SEARCH_USER_PATHS = NO;
314 | CLANG_ANALYZER_NONNULL = YES;
315 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
316 | CLANG_CXX_LIBRARY = "libc++";
317 | CLANG_ENABLE_MODULES = YES;
318 | CLANG_ENABLE_OBJC_ARC = YES;
319 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
320 | CLANG_WARN_BOOL_CONVERSION = YES;
321 | CLANG_WARN_COMMA = YES;
322 | CLANG_WARN_CONSTANT_CONVERSION = YES;
323 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
325 | CLANG_WARN_EMPTY_BODY = YES;
326 | CLANG_WARN_ENUM_CONVERSION = YES;
327 | CLANG_WARN_INFINITE_RECURSION = YES;
328 | CLANG_WARN_INT_CONVERSION = YES;
329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
334 | CLANG_WARN_STRICT_PROTOTYPES = YES;
335 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
336 | CLANG_WARN_UNREACHABLE_CODE = YES;
337 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
339 | COPY_PHASE_STRIP = NO;
340 | DEBUG_INFORMATION_FORMAT = dwarf;
341 | ENABLE_STRICT_OBJC_MSGSEND = YES;
342 | ENABLE_TESTABILITY = YES;
343 | GCC_C_LANGUAGE_STANDARD = gnu99;
344 | GCC_DYNAMIC_NO_PIC = NO;
345 | GCC_NO_COMMON_BLOCKS = YES;
346 | GCC_OPTIMIZATION_LEVEL = 0;
347 | GCC_PREPROCESSOR_DEFINITIONS = (
348 | "DEBUG=1",
349 | "$(inherited)",
350 | );
351 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
352 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
353 | GCC_WARN_UNDECLARED_SELECTOR = YES;
354 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
355 | GCC_WARN_UNUSED_FUNCTION = YES;
356 | GCC_WARN_UNUSED_VARIABLE = YES;
357 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
358 | MTL_ENABLE_DEBUG_INFO = YES;
359 | ONLY_ACTIVE_ARCH = YES;
360 | SDKROOT = iphoneos;
361 | TARGETED_DEVICE_FAMILY = "1,2";
362 | };
363 | name = Debug;
364 | };
365 | 97C147041CF9000F007C117D /* Release */ = {
366 | isa = XCBuildConfiguration;
367 | buildSettings = {
368 | ALWAYS_SEARCH_USER_PATHS = NO;
369 | CLANG_ANALYZER_NONNULL = YES;
370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
371 | CLANG_CXX_LIBRARY = "libc++";
372 | CLANG_ENABLE_MODULES = YES;
373 | CLANG_ENABLE_OBJC_ARC = YES;
374 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
375 | CLANG_WARN_BOOL_CONVERSION = YES;
376 | CLANG_WARN_COMMA = YES;
377 | CLANG_WARN_CONSTANT_CONVERSION = YES;
378 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
379 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
380 | CLANG_WARN_EMPTY_BODY = YES;
381 | CLANG_WARN_ENUM_CONVERSION = YES;
382 | CLANG_WARN_INFINITE_RECURSION = YES;
383 | CLANG_WARN_INT_CONVERSION = YES;
384 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
385 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
386 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
387 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
389 | CLANG_WARN_STRICT_PROTOTYPES = YES;
390 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
391 | CLANG_WARN_UNREACHABLE_CODE = YES;
392 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
393 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
394 | COPY_PHASE_STRIP = NO;
395 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
396 | ENABLE_NS_ASSERTIONS = NO;
397 | ENABLE_STRICT_OBJC_MSGSEND = YES;
398 | GCC_C_LANGUAGE_STANDARD = gnu99;
399 | GCC_NO_COMMON_BLOCKS = YES;
400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
402 | GCC_WARN_UNDECLARED_SELECTOR = YES;
403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
404 | GCC_WARN_UNUSED_FUNCTION = YES;
405 | GCC_WARN_UNUSED_VARIABLE = YES;
406 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
407 | MTL_ENABLE_DEBUG_INFO = NO;
408 | SDKROOT = iphoneos;
409 | SUPPORTED_PLATFORMS = iphoneos;
410 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
411 | TARGETED_DEVICE_FAMILY = "1,2";
412 | VALIDATE_PRODUCT = YES;
413 | };
414 | name = Release;
415 | };
416 | 97C147061CF9000F007C117D /* Debug */ = {
417 | isa = XCBuildConfiguration;
418 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
419 | buildSettings = {
420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
421 | CLANG_ENABLE_MODULES = YES;
422 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
423 | ENABLE_BITCODE = NO;
424 | FRAMEWORK_SEARCH_PATHS = (
425 | "$(inherited)",
426 | "$(PROJECT_DIR)/Flutter",
427 | );
428 | INFOPLIST_FILE = Runner/Info.plist;
429 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
430 | LIBRARY_SEARCH_PATHS = (
431 | "$(inherited)",
432 | "$(PROJECT_DIR)/Flutter",
433 | );
434 | PRODUCT_BUNDLE_IDENTIFIER = com.sk.flutterHotFix;
435 | PRODUCT_NAME = "$(TARGET_NAME)";
436 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
437 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
438 | SWIFT_VERSION = 5.0;
439 | VERSIONING_SYSTEM = "apple-generic";
440 | };
441 | name = Debug;
442 | };
443 | 97C147071CF9000F007C117D /* Release */ = {
444 | isa = XCBuildConfiguration;
445 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
446 | buildSettings = {
447 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
448 | CLANG_ENABLE_MODULES = YES;
449 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
450 | ENABLE_BITCODE = NO;
451 | FRAMEWORK_SEARCH_PATHS = (
452 | "$(inherited)",
453 | "$(PROJECT_DIR)/Flutter",
454 | );
455 | INFOPLIST_FILE = Runner/Info.plist;
456 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
457 | LIBRARY_SEARCH_PATHS = (
458 | "$(inherited)",
459 | "$(PROJECT_DIR)/Flutter",
460 | );
461 | PRODUCT_BUNDLE_IDENTIFIER = com.sk.flutterHotFix;
462 | PRODUCT_NAME = "$(TARGET_NAME)";
463 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
464 | SWIFT_VERSION = 5.0;
465 | VERSIONING_SYSTEM = "apple-generic";
466 | };
467 | name = Release;
468 | };
469 | /* End XCBuildConfiguration section */
470 |
471 | /* Begin XCConfigurationList section */
472 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
473 | isa = XCConfigurationList;
474 | buildConfigurations = (
475 | 97C147031CF9000F007C117D /* Debug */,
476 | 97C147041CF9000F007C117D /* Release */,
477 | 249021D3217E4FDB00AE95B9 /* Profile */,
478 | );
479 | defaultConfigurationIsVisible = 0;
480 | defaultConfigurationName = Release;
481 | };
482 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
483 | isa = XCConfigurationList;
484 | buildConfigurations = (
485 | 97C147061CF9000F007C117D /* Debug */,
486 | 97C147071CF9000F007C117D /* Release */,
487 | 249021D4217E4FDB00AE95B9 /* Profile */,
488 | );
489 | defaultConfigurationIsVisible = 0;
490 | defaultConfigurationName = Release;
491 | };
492 | /* End XCConfigurationList section */
493 | };
494 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
495 | }
496 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_hot_fix
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | void main() {
4 | runApp(MyApp());
5 | }
6 |
7 | class MyApp extends StatelessWidget {
8 | // This widget is the root of your application.
9 | @override
10 | Widget build(BuildContext context) {
11 | return MaterialApp(
12 | title: 'Flutter Demo',
13 | theme: ThemeData(
14 | // This is the theme of your application.
15 | //
16 | // Try running your application with "flutter run". You'll see the
17 | // application has a blue toolbar. Then, without quitting the app, try
18 | // changing the primarySwatch below to Colors.green and then invoke
19 | // "hot reload" (press "r" in the console where you ran "flutter run",
20 | // or simply save your changes to "hot reload" in a Flutter IDE).
21 | // Notice that the counter didn't reset back to zero; the application
22 | // is not restarted.
23 | primarySwatch: Colors.blue,
24 | // This makes the visual density adapt to the platform that you run
25 | // the app on. For desktop platforms, the controls will be smaller and
26 | // closer together (more dense) than on mobile platforms.
27 | visualDensity: VisualDensity.adaptivePlatformDensity,
28 | ),
29 | home: MyHomePage(title: 'Flutter Do Home Page'),
30 | );
31 | }
32 | }
33 |
34 | class MyHomePage extends StatefulWidget {
35 | MyHomePage({Key key, this.title}) : super(key: key);
36 |
37 | // This widget is the home page of your application. It is stateful, meaning
38 | // that it has a State object (defined below) that contains fields that affect
39 | // how it looks.
40 |
41 | // This class is the configuration for the state. It holds the values (in this
42 | // case the title) provided by the parent (in this case the App widget) and
43 | // used by the build method of the State. Fields in a Widget subclass are
44 | // always marked "final".
45 |
46 | final String title;
47 |
48 | @override
49 | _MyHomePageState createState() => _MyHomePageState();
50 | }
51 |
52 | class _MyHomePageState extends State {
53 | int _counter = 0;
54 |
55 | void _incrementCounter() {
56 | setState(() {
57 | // This call to setState tells the Flutter framework that something has
58 | // changed in this State, which causes it to rerun the build method below
59 | // so that the display can reflect the updated values. If we changed
60 | // _counter without calling setState(), then the build method would not be
61 | // called again, and so nothing would appear to happen.
62 | _counter++;
63 | });
64 | }
65 |
66 | @override
67 | Widget build(BuildContext context) {
68 | // This method is rerun every time setState is called, for instance as done
69 | // by the _incrementCounter method above.
70 | //
71 | // The Flutter framework has been optimized to make rerunning build methods
72 | // fast, so that you can just rebuild anything that needs updating rather
73 | // than having to individually change instances of widgets.
74 | return Scaffold(
75 | appBar: AppBar(
76 | // Here we take the value from the MyHomePage object that was created by
77 | // the App.build method, and use it to set our appbar title.
78 | title: Text(widget.title),
79 | ),
80 | body: Center(
81 | // Center is a layout widget. It takes a single child and positions it
82 | // in the middle of the parent.
83 | child: Column(
84 | // Column is also a layout widget. It takes a list of children and
85 | // arranges them vertically. By default, it sizes itself to fit its
86 | // children horizontally, and tries to be as tall as its parent.
87 | //
88 | // Invoke "debug painting" (press "p" in the console, choose the
89 | // "Toggle Debug Paint" action from the Flutter Inspector in Android
90 | // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
91 | // to see the wireframe for each widget.
92 | //
93 | // Column has various properties to control how it sizes itself and
94 | // how it positions its children. Here we use mainAxisAlignment to
95 | // center the children vertically; the main axis here is the vertical
96 | // axis because Columns are vertical (the cross axis would be
97 | // horizontal).
98 | mainAxisAlignment: MainAxisAlignment.center,
99 | children: [
100 | Text(
101 | 'You have pushed the button this many times:',
102 | ),
103 | Text(
104 | '$_counter',
105 | style: Theme.of(context).textTheme.headline4,
106 | ),
107 | ],
108 | ),
109 | ),
110 | floatingActionButton: FloatingActionButton(
111 | onPressed: _incrementCounter,
112 | tooltip: 'Increment',
113 | child: Icon(Icons.add),
114 | ), // This trailing comma makes auto-formatting nicer for build methods.
115 | );
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | url: "https://pub.flutter-io.cn"
9 | source: hosted
10 | version: "2.5.0-nullsafety.1"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "https://pub.flutter-io.cn"
16 | source: hosted
17 | version: "2.1.0-nullsafety.1"
18 | characters:
19 | dependency: transitive
20 | description:
21 | name: characters
22 | url: "https://pub.flutter-io.cn"
23 | source: hosted
24 | version: "1.1.0-nullsafety.3"
25 | charcode:
26 | dependency: transitive
27 | description:
28 | name: charcode
29 | url: "https://pub.flutter-io.cn"
30 | source: hosted
31 | version: "1.2.0-nullsafety.1"
32 | clock:
33 | dependency: transitive
34 | description:
35 | name: clock
36 | url: "https://pub.flutter-io.cn"
37 | source: hosted
38 | version: "1.1.0-nullsafety.1"
39 | collection:
40 | dependency: transitive
41 | description:
42 | name: collection
43 | url: "https://pub.flutter-io.cn"
44 | source: hosted
45 | version: "1.15.0-nullsafety.3"
46 | cupertino_icons:
47 | dependency: "direct main"
48 | description:
49 | name: cupertino_icons
50 | url: "https://pub.flutter-io.cn"
51 | source: hosted
52 | version: "1.0.0"
53 | fake_async:
54 | dependency: transitive
55 | description:
56 | name: fake_async
57 | url: "https://pub.flutter-io.cn"
58 | source: hosted
59 | version: "1.2.0-nullsafety.1"
60 | flutter:
61 | dependency: "direct main"
62 | description: flutter
63 | source: sdk
64 | version: "0.0.0"
65 | flutter_test:
66 | dependency: "direct dev"
67 | description: flutter
68 | source: sdk
69 | version: "0.0.0"
70 | matcher:
71 | dependency: transitive
72 | description:
73 | name: matcher
74 | url: "https://pub.flutter-io.cn"
75 | source: hosted
76 | version: "0.12.10-nullsafety.1"
77 | meta:
78 | dependency: transitive
79 | description:
80 | name: meta
81 | url: "https://pub.flutter-io.cn"
82 | source: hosted
83 | version: "1.3.0-nullsafety.3"
84 | path:
85 | dependency: transitive
86 | description:
87 | name: path
88 | url: "https://pub.flutter-io.cn"
89 | source: hosted
90 | version: "1.8.0-nullsafety.1"
91 | sky_engine:
92 | dependency: transitive
93 | description: flutter
94 | source: sdk
95 | version: "0.0.99"
96 | source_span:
97 | dependency: transitive
98 | description:
99 | name: source_span
100 | url: "https://pub.flutter-io.cn"
101 | source: hosted
102 | version: "1.8.0-nullsafety.2"
103 | stack_trace:
104 | dependency: transitive
105 | description:
106 | name: stack_trace
107 | url: "https://pub.flutter-io.cn"
108 | source: hosted
109 | version: "1.10.0-nullsafety.1"
110 | stream_channel:
111 | dependency: transitive
112 | description:
113 | name: stream_channel
114 | url: "https://pub.flutter-io.cn"
115 | source: hosted
116 | version: "2.1.0-nullsafety.1"
117 | string_scanner:
118 | dependency: transitive
119 | description:
120 | name: string_scanner
121 | url: "https://pub.flutter-io.cn"
122 | source: hosted
123 | version: "1.1.0-nullsafety.1"
124 | term_glyph:
125 | dependency: transitive
126 | description:
127 | name: term_glyph
128 | url: "https://pub.flutter-io.cn"
129 | source: hosted
130 | version: "1.2.0-nullsafety.1"
131 | test_api:
132 | dependency: transitive
133 | description:
134 | name: test_api
135 | url: "https://pub.flutter-io.cn"
136 | source: hosted
137 | version: "0.2.19-nullsafety.2"
138 | typed_data:
139 | dependency: transitive
140 | description:
141 | name: typed_data
142 | url: "https://pub.flutter-io.cn"
143 | source: hosted
144 | version: "1.3.0-nullsafety.3"
145 | vector_math:
146 | dependency: transitive
147 | description:
148 | name: vector_math
149 | url: "https://pub.flutter-io.cn"
150 | source: hosted
151 | version: "2.1.0-nullsafety.3"
152 | sdks:
153 | dart: ">=2.10.0-110 <2.11.0"
154 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_hot_fix
2 | description: A new Flutter project.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `pub publish`. This is preferred for private packages.
6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 |
27 |
28 | # The following adds the Cupertino Icons font to your application.
29 | # Use with the CupertinoIcons class for iOS style icons.
30 | cupertino_icons: ^1.0.0
31 |
32 | dev_dependencies:
33 | flutter_test:
34 | sdk: flutter
35 |
36 | # For information on the generic Dart part of this file, see the
37 | # following page: https://dart.dev/tools/pub/pubspec
38 |
39 | # The following section is specific to Flutter.
40 | flutter:
41 |
42 | # The following line ensures that the Material Icons font is
43 | # included with your application, so that you can use the icons in
44 | # the material Icons class.
45 | uses-material-design: true
46 |
47 | # To add assets to your application, add an assets section, like this:
48 | # assets:
49 | # - images/a_dot_burr.jpeg
50 | # - images/a_dot_ham.jpeg
51 |
52 | # An image asset can refer to one or more resolution-specific "variants", see
53 | # https://flutter.dev/assets-and-images/#resolution-aware.
54 |
55 | # For details regarding adding assets from package dependencies, see
56 | # https://flutter.dev/assets-and-images/#from-packages
57 |
58 | # To add custom fonts to your application, add a fonts section here,
59 | # in this "flutter" section. Each entry in this list should have a
60 | # "family" key with the font family name, and a "fonts" key with a
61 | # list giving the asset and other descriptors for the font. For
62 | # example:
63 | # fonts:
64 | # - family: Schyler
65 | # fonts:
66 | # - asset: fonts/Schyler-Regular.ttf
67 | # - asset: fonts/Schyler-Italic.ttf
68 | # style: italic
69 | # - family: Trajan Pro
70 | # fonts:
71 | # - asset: fonts/TrajanPro.ttf
72 | # - asset: fonts/TrajanPro_Bold.ttf
73 | # weight: 700
74 | #
75 | # For details regarding fonts from package dependencies,
76 | # see https://flutter.dev/custom-fonts/#from-packages
77 |
--------------------------------------------------------------------------------
/screenshots/1624542146075.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/magicbaby810/FlutterHotFix/0f87721e6a48afc8d99b42b67afde6030e991ef6/screenshots/1624542146075.jpg
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility that Flutter provides. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_test/flutter_test.dart';
10 |
11 | import 'package:flutter_hot_fix/main.dart';
12 |
13 | void main() {
14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(MyApp());
17 |
18 | // Verify that our counter starts at 0.
19 | expect(find.text('0'), findsOneWidget);
20 | expect(find.text('1'), findsNothing);
21 |
22 | // Tap the '+' icon and trigger a frame.
23 | await tester.tap(find.byIcon(Icons.add));
24 | await tester.pump();
25 |
26 | // Verify that our counter has incremented.
27 | expect(find.text('0'), findsNothing);
28 | expect(find.text('1'), findsOneWidget);
29 | });
30 | }
31 |
--------------------------------------------------------------------------------