1.修复了默认为仓库界面,启动程序后点击社区崩溃的问题。2.修复了保存源代码时,程序崩溃的问题,现在不崩溃了,改为弹出错误提示。3.修复了模组列表快速滚动时,程序崩溃的问题。4.修复了排行榜数据加载较慢,程序崩溃的问题。5.修复了最近的文件加载崩溃的问题。
This commit is contained in:
parent
d14c4cf727
commit
7a4b00199e
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -31,8 +31,8 @@ android {
|
|||
applicationId "com.coldmint.rust.pro"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 33
|
||||
versionCode 25
|
||||
versionName "2.1 Bata3(2023-1-27)"
|
||||
versionCode 26
|
||||
versionName "2.1 Bata4(2023-1-28)"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
|
212
app/mapping.txt
212
app/mapping.txt
|
@ -67605,7 +67605,7 @@ com.bumptech.glide.disklrucache.DiskLruCache$Entry -> com.bumptech.glide.disklru
|
|||
1:1:java.io.File getDirtyFile(int):874:874 -> k
|
||||
1:3:java.lang.String getLengths():843:845 -> l
|
||||
4:4:java.lang.String getLengths():847:847 -> l
|
||||
1:1:java.io.IOException invalidLengths(java.lang.String[]):866:866 -> m
|
||||
1:1:java.io.Exception invalidLengths(java.lang.String[]):866:866 -> m
|
||||
1:1:void setLengths(java.lang.String[]):852:852 -> n
|
||||
2:3:void setLengths(java.lang.String[]):857:858 -> n
|
||||
4:4:void setLengths(java.lang.String[]):861:861 -> n
|
||||
|
@ -71378,8 +71378,8 @@ com.bumptech.glide.load.resource.bitmap.Downsampler -> com.bumptech.glide.load.r
|
|||
2:2:void logDecode(int,int,java.lang.String,android.graphics.BitmapFactory$Options,android.graphics.Bitmap,int,int,long):623:623 -> p
|
||||
3:4:void logDecode(int,int,java.lang.String,android.graphics.BitmapFactory$Options,android.graphics.Bitmap,int,int,long):628:629 -> p
|
||||
5:5:void logDecode(int,int,java.lang.String,android.graphics.BitmapFactory$Options,android.graphics.Bitmap,int,int,long):621:621 -> p
|
||||
1:1:java.io.IOException newIoExceptionForInBitmapAssertion(java.lang.IllegalArgumentException,int,int,java.lang.String,android.graphics.BitmapFactory$Options):655:655 -> q
|
||||
2:2:java.io.IOException newIoExceptionForInBitmapAssertion(java.lang.IllegalArgumentException,int,int,java.lang.String,android.graphics.BitmapFactory$Options):659:659 -> q
|
||||
1:1:java.io.Exception newExceptionForInBitmapAssertion(java.lang.IllegalArgumentException,int,int,java.lang.String,android.graphics.BitmapFactory$Options):655:655 -> q
|
||||
2:2:java.io.Exception newExceptionForInBitmapAssertion(java.lang.IllegalArgumentException,int,int,java.lang.String,android.graphics.BitmapFactory$Options):659:659 -> q
|
||||
1:4:void releaseOptions(android.graphics.BitmapFactory$Options):703:706 -> r
|
||||
1:13:void resetOptions(android.graphics.BitmapFactory$Options):711:723 -> s
|
||||
int round(double) -> t
|
||||
|
@ -71504,7 +71504,7 @@ com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream -> com.bum
|
|||
1:3:void close():130:132 -> close
|
||||
4:5:void close():134:135 -> close
|
||||
6:6:void close():137:137 -> close
|
||||
1:1:java.io.IOException streamClosed():99:99 -> d
|
||||
1:1:java.io.Exception streamClosed():99:99 -> d
|
||||
1:3:void mark(int):200:202 -> mark
|
||||
1:2:int read():230:231 -> read
|
||||
3:3:int read():237:237 -> read
|
||||
|
@ -73758,12 +73758,12 @@ com.bumptech.glide.util.ContentLengthInputStream -> com.bumptech.glide.util.b:
|
|||
com.bumptech.glide.util.ExceptionCatchingInputStream -> com.bumptech.glide.util.c:
|
||||
java.util.Queue QUEUE -> c
|
||||
java.io.InputStream wrapped -> a
|
||||
java.io.IOException exception -> b
|
||||
java.io.Exception exception -> b
|
||||
1:1:void <clinit>():19:19 -> <clinit>
|
||||
1:1:void <init>():44:44 -> <init>
|
||||
1:2:void clearQueue():39:40 -> a
|
||||
1:1:int available():54:54 -> available
|
||||
1:1:java.io.IOException getException():127:127 -> b
|
||||
1:1:java.io.Exception getException():127:127 -> b
|
||||
1:3:com.bumptech.glide.util.ExceptionCatchingInputStream obtain(java.io.InputStream):27:29 -> c
|
||||
4:4:com.bumptech.glide.util.ExceptionCatchingInputStream obtain(java.io.InputStream):31:31 -> c
|
||||
5:5:com.bumptech.glide.util.ExceptionCatchingInputStream obtain(java.io.InputStream):33:33 -> c
|
||||
|
@ -80022,12 +80022,12 @@ com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1 -> m.e$a:
|
|||
1:5:void onResponse(okhttp3.Call,okhttp3.Response):69:73 -> a
|
||||
6:8:void onResponse(okhttp3.Call,okhttp3.Response):75:77 -> a
|
||||
9:9:void onResponse(okhttp3.Call,okhttp3.Response):80:80 -> a
|
||||
1:1:void onFailure(okhttp3.Call,java.io.IOException):64:64 -> b
|
||||
1:1:void onFailure(okhttp3.Call,java.io.Exception):64:64 -> b
|
||||
void $r8$lambda$FVi_IFJplmesumSnn19tL8yLhSM(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.iflynote.dataBean.DocData) -> c
|
||||
void $r8$lambda$IEr9Zunn2MTJVsmRZrMPfZupfvU(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> d
|
||||
void $r8$lambda$IEr9Zunn2MTJVsmRZrMPfZupfvU(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> d
|
||||
void $r8$lambda$o-TJR8eEdzATcOMeI8uFYMjKSII(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.String) -> e
|
||||
void $r8$lambda$uATSwPmnPU5NJ1GaRglL2OipzXI(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.iflynote.dataBean.NoteData) -> f
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):64:64 -> g
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):64:64 -> g
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.iflynote.dataBean.NoteData):73:73 -> h
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.iflynote.dataBean.DocData):77:77 -> i
|
||||
1:1:void onResponse$lambda-3(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.String):80:80 -> j
|
||||
|
@ -80626,11 +80626,11 @@ com.coldmint.rust.core.web.User$Companion$activateAccount$1 -> r.e$a$a:
|
|||
1:1:void onResponse(okhttp3.Call,okhttp3.Response):48:48 -> a
|
||||
2:3:void onResponse(okhttp3.Call,okhttp3.Response):50:51 -> a
|
||||
4:5:void onResponse(okhttp3.Call,okhttp3.Response):55:56 -> a
|
||||
1:2:void onFailure(okhttp3.Call,java.io.IOException):42:43 -> b
|
||||
1:2:void onFailure(okhttp3.Call,java.io.Exception):42:43 -> b
|
||||
void $r8$lambda$3m0IADyBNZRbmo7yOkZzpQZQQC0(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.ApiResponse) -> c
|
||||
void $r8$lambda$ChCQroczIBqnhBdRBFQI49wgvoI(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception) -> d
|
||||
void $r8$lambda$pqw46I-_Fy9kyoOMS8nWQeVsa_A(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):43:43 -> f
|
||||
void $r8$lambda$pqw46I-_Fy9kyoOMS8nWQeVsa_A(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):43:43 -> f
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.ApiResponse):52:52 -> g
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception):57:57 -> h
|
||||
com.coldmint.rust.core.web.User$Companion$getSocialInfo$1 -> r.e$a$b:
|
||||
|
@ -80642,11 +80642,11 @@ com.coldmint.rust.core.web.User$Companion$getSocialInfo$1 -> r.e$a$b:
|
|||
1:1:void onResponse(okhttp3.Call,okhttp3.Response):89:89 -> a
|
||||
2:3:void onResponse(okhttp3.Call,okhttp3.Response):91:92 -> a
|
||||
4:5:void onResponse(okhttp3.Call,okhttp3.Response):96:97 -> a
|
||||
1:2:void onFailure(okhttp3.Call,java.io.IOException):83:84 -> b
|
||||
1:2:void onFailure(okhttp3.Call,java.io.Exception):83:84 -> b
|
||||
void $r8$lambda$H_IHH-GFQt2-njO_YEebotOhC6U(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception) -> c
|
||||
void $r8$lambda$PhARra_gg1YDyLa2Gl9R07PcsNc(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.SocialInfoData) -> d
|
||||
void $r8$lambda$dZ_zHG_kUqZP7KMtrNkOHZDtq6A(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):84:84 -> f
|
||||
void $r8$lambda$dZ_zHG_kUqZP7KMtrNkOHZDtq6A(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):84:84 -> f
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.SocialInfoData):93:93 -> g
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception):98:98 -> h
|
||||
com.coldmint.rust.core.web.User$login$1 -> r.e$b:
|
||||
|
@ -80660,11 +80660,11 @@ com.coldmint.rust.core.web.User$login$1 -> r.e$b:
|
|||
7:8:void onResponse(okhttp3.Call,okhttp3.Response):151:152 -> a
|
||||
9:9:void onResponse(okhttp3.Call,okhttp3.Response):154:154 -> a
|
||||
10:10:void onResponse(okhttp3.Call,okhttp3.Response):152:152 -> a
|
||||
1:2:void onFailure(okhttp3.Call,java.io.IOException):137:138 -> b
|
||||
void $r8$lambda$9SW4GCuhrG2PTYFgme5Y_ESe9VM(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> c
|
||||
1:2:void onFailure(okhttp3.Call,java.io.Exception):137:138 -> b
|
||||
void $r8$lambda$9SW4GCuhrG2PTYFgme5Y_ESe9VM(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> c
|
||||
void $r8$lambda$L1XosbjiMV9apeyeg_wzaorid7g(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.UserData) -> d
|
||||
void $r8$lambda$zDiP2W4pEPRi8g8_iNsXLcFtVUc(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):138:138 -> f
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):138:138 -> f
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.UserData):148:148 -> g
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception):153:153 -> h
|
||||
com.coldmint.rust.core.web.User$register$1 -> r.e$c:
|
||||
|
@ -80678,11 +80678,11 @@ com.coldmint.rust.core.web.User$register$1 -> r.e$c:
|
|||
6:7:void onResponse(okhttp3.Call,okhttp3.Response):182:183 -> a
|
||||
8:8:void onResponse(okhttp3.Call,okhttp3.Response):185:185 -> a
|
||||
9:9:void onResponse(okhttp3.Call,okhttp3.Response):183:183 -> a
|
||||
1:1:void onFailure(okhttp3.Call,java.io.IOException):170:170 -> b
|
||||
void $r8$lambda$oQ54xFVU_Ggo33z6NA-SklbM90o(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> c
|
||||
1:1:void onFailure(okhttp3.Call,java.io.Exception):170:170 -> b
|
||||
void $r8$lambda$oQ54xFVU_Ggo33z6NA-SklbM90o(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> c
|
||||
void $r8$lambda$tBBqs8Wiu7ZAKBhGSohdn9cHf50(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.ApiResponse) -> d
|
||||
void $r8$lambda$ztrpDYKIX4ViGSuruzrZF_qUKhc(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):170:170 -> f
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):170:170 -> f
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.ApiResponse):179:179 -> g
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception):184:184 -> h
|
||||
com.coldmint.rust.core.web.WebMod -> r.r:
|
||||
|
@ -80702,11 +80702,11 @@ com.coldmint.rust.core.web.WebMod$Companion$list$1 -> r.r$a$a:
|
|||
1:1:void <init>(android.os.Handler,com.coldmint.rust.core.interfaces.ApiCallBack,com.google.gson.Gson):26:26 -> <init>
|
||||
1:3:void onResponse(okhttp3.Call,okhttp3.Response):34:36 -> a
|
||||
4:5:void onResponse(okhttp3.Call,okhttp3.Response):40:41 -> a
|
||||
1:2:void onFailure(okhttp3.Call,java.io.IOException):28:29 -> b
|
||||
1:2:void onFailure(okhttp3.Call,java.io.Exception):28:29 -> b
|
||||
void $r8$lambda$CzUGRJ-ev_CuPP8v9eLfamA-PzY(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.WebModData) -> c
|
||||
void $r8$lambda$rOB5TZmseTyBtHk1dXnfaASEa9g(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception) -> d
|
||||
void $r8$lambda$xnVPHNaCde2e-O5SYgG_mTV6lTA(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException):29:29 -> f
|
||||
void $r8$lambda$xnVPHNaCde2e-O5SYgG_mTV6lTA(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> e
|
||||
1:1:void onFailure$lambda-0(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception):29:29 -> f
|
||||
1:1:void onResponse$lambda-1(com.coldmint.rust.core.interfaces.ApiCallBack,com.coldmint.rust.core.web.dataBean.WebModData):37:37 -> g
|
||||
1:1:void onResponse$lambda-2(com.coldmint.rust.core.interfaces.ApiCallBack,java.lang.Exception):42:42 -> h
|
||||
com.coldmint.rust.core.web.dataBean.ApiResponse -> s.a:
|
||||
|
@ -91661,11 +91661,11 @@ com.efs.sdk.net.OkHttpListener -> com.efs.sdk.net.OkHttpListener:
|
|||
4:4:void callEnd(okhttp3.Call):314:314 -> callEnd
|
||||
5:6:void callEnd(okhttp3.Call):310:311 -> callEnd
|
||||
7:7:void callEnd(okhttp3.Call):317:317 -> callEnd
|
||||
1:1:void callFailed(okhttp3.Call,java.io.IOException):323:323 -> callFailed
|
||||
2:3:void callFailed(okhttp3.Call,java.io.IOException):325:326 -> callFailed
|
||||
4:4:void callFailed(okhttp3.Call,java.io.IOException):330:330 -> callFailed
|
||||
5:6:void callFailed(okhttp3.Call,java.io.IOException):327:328 -> callFailed
|
||||
7:7:void callFailed(okhttp3.Call,java.io.IOException):333:333 -> callFailed
|
||||
1:1:void callFailed(okhttp3.Call,java.io.Exception):323:323 -> callFailed
|
||||
2:3:void callFailed(okhttp3.Call,java.io.Exception):325:326 -> callFailed
|
||||
4:4:void callFailed(okhttp3.Call,java.io.Exception):330:330 -> callFailed
|
||||
5:6:void callFailed(okhttp3.Call,java.io.Exception):327:328 -> callFailed
|
||||
7:7:void callFailed(okhttp3.Call,java.io.Exception):333:333 -> callFailed
|
||||
1:1:void callStart(okhttp3.Call):55:55 -> callStart
|
||||
2:4:void callStart(okhttp3.Call):57:59 -> callStart
|
||||
5:5:void callStart(okhttp3.Call):61:61 -> callStart
|
||||
|
@ -91680,11 +91680,11 @@ com.efs.sdk.net.OkHttpListener -> com.efs.sdk.net.OkHttpListener:
|
|||
4:4:void connectEnd(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol):160:160 -> connectEnd
|
||||
5:5:void connectEnd(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol):158:158 -> connectEnd
|
||||
6:6:void connectEnd(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol):163:163 -> connectEnd
|
||||
1:1:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.IOException):169:169 -> connectFailed
|
||||
2:3:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.IOException):171:172 -> connectFailed
|
||||
4:4:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.IOException):176:176 -> connectFailed
|
||||
5:6:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.IOException):173:174 -> connectFailed
|
||||
7:7:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.IOException):179:179 -> connectFailed
|
||||
1:1:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.Exception):169:169 -> connectFailed
|
||||
2:3:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.Exception):171:172 -> connectFailed
|
||||
4:4:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.Exception):176:176 -> connectFailed
|
||||
5:6:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.Exception):173:174 -> connectFailed
|
||||
7:7:void connectFailed(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp3.Protocol,java.io.Exception):179:179 -> connectFailed
|
||||
1:1:void connectStart(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy):107:107 -> connectStart
|
||||
2:3:void connectStart(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy):109:110 -> connectStart
|
||||
4:4:void connectStart(okhttp3.Call,java.net.InetSocketAddress,java.net.Proxy):113:113 -> connectStart
|
||||
|
@ -108799,7 +108799,7 @@ com.google.gson.JsonElement -> com.google.gson.l:
|
|||
1:5:java.lang.String toString():313:317 -> toString
|
||||
6:6:java.lang.String toString():319:319 -> toString
|
||||
1:1:boolean isJsonPrimitive():65:65 -> u
|
||||
com.google.gson.JsonIOException -> com.google.gson.m:
|
||||
com.google.gson.JsonException -> com.google.gson.m:
|
||||
long serialVersionUID -> b
|
||||
1:1:void <init>(java.lang.String):29:29 -> <init>
|
||||
2:2:void <init>(java.lang.String,java.lang.Throwable):33:33 -> <init>
|
||||
|
@ -110963,7 +110963,7 @@ com.google.gson.stream.JsonReader -> com.google.gson.stream.a:
|
|||
10:10:void skipValue():1247:1247 -> l0
|
||||
11:11:void skipValue():1255:1255 -> l0
|
||||
12:13:void skipValue():1258:1259 -> l0
|
||||
1:1:java.io.IOException syntaxError(java.lang.String):1562:1562 -> m0
|
||||
1:1:java.io.Exception syntaxError(java.lang.String):1562:1562 -> m0
|
||||
1:3:java.lang.String getPath():1462:1464 -> q
|
||||
4:6:java.lang.String getPath():1473:1475 -> q
|
||||
7:7:java.lang.String getPath():1467:1467 -> q
|
||||
|
@ -143324,12 +143324,12 @@ kotlin.io.FilesKt__UtilsKt -> kotlin.io.q:
|
|||
kotlin.io.FilesKt__UtilsKt$copyRecursively$1 -> kotlin.io.q$a:
|
||||
# {"id":"sourceFile","fileName":"Utils.kt"}
|
||||
kotlin.io.FilesKt__UtilsKt$copyRecursively$1 INSTANCE -> a
|
||||
1:1:java.lang.Void invoke(java.io.File,java.io.IOException):291:291 -> a
|
||||
1:1:java.lang.Void invoke(java.io.File,java.io.Exception):291:291 -> a
|
||||
1:1:java.lang.Object invoke(java.lang.Object,java.lang.Object):291:291 -> invoke
|
||||
kotlin.io.FilesKt__UtilsKt$copyRecursively$2 -> kotlin.io.q$b:
|
||||
# {"id":"sourceFile","fileName":"Utils.kt"}
|
||||
kotlin.jvm.functions.Function2 $onError -> a
|
||||
1:1:void invoke(java.io.File,java.io.IOException):299:299 -> a
|
||||
1:1:void invoke(java.io.File,java.io.Exception):299:299 -> a
|
||||
1:1:java.lang.Object invoke(java.lang.Object,java.lang.Object):299:299 -> invoke
|
||||
kotlin.io.LineReader -> kotlin.io.r:
|
||||
# {"id":"sourceFile","fileName":"Console.kt"}
|
||||
|
@ -160667,8 +160667,8 @@ l.InputParserDataBean$$ExternalSyntheticOutline0 -> l.a:
|
|||
int com.coldmint.rust.core.dataBean.InputParserDataBean$$InternalSyntheticOutline$9$43c6e9a6682936d0d73d7540684449d85e4a4f5a97637c717abd6469ef665de3$0.m(java.lang.String,int,int) -> a
|
||||
m.IFlyNoteAPi$getCode$1$$ExternalSyntheticLambda0 -> m.a:
|
||||
com.coldmint.rust.core.interfaces.ApiCallBack com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.f$0 -> a
|
||||
java.io.IOException com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.f$1 -> b
|
||||
void com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.<init>(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.IOException) -> <init>
|
||||
java.io.Exception com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.f$1 -> b
|
||||
void com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.<init>(com.coldmint.rust.core.interfaces.ApiCallBack,java.io.Exception) -> <init>
|
||||
void com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$09dc785f8f6a4d524681713a24a020f419593dfe5c4cf6f171f90d9dc24da9a2$0.run() -> run
|
||||
m.IFlyNoteAPi$getCode$1$$ExternalSyntheticLambda1 -> m.b:
|
||||
com.coldmint.rust.core.interfaces.ApiCallBack com.coldmint.rust.core.iflynote.IFlyNoteAPi$getCode$1$$InternalSyntheticLambda$0$d043a00f994d1295522b97c4f7e2080fe954709fe3c31b2deb5a40b45f62d25d$2.f$0 -> a
|
||||
|
@ -161056,7 +161056,7 @@ okhttp3.Call$Factory -> okhttp3.e$a:
|
|||
okhttp3.Callback -> okhttp3.f:
|
||||
# {"id":"sourceFile","fileName":"Callback.kt"}
|
||||
void onResponse(okhttp3.Call,okhttp3.Response) -> a
|
||||
void onFailure(okhttp3.Call,java.io.IOException) -> b
|
||||
void onFailure(okhttp3.Call,java.io.Exception) -> b
|
||||
okhttp3.CertificatePinner -> okhttp3.g:
|
||||
# {"id":"sourceFile","fileName":"CertificatePinner.kt"}
|
||||
okhttp3.internal.tls.CertificateChainCleaner certificateChainCleaner -> b
|
||||
|
@ -163450,7 +163450,7 @@ okhttp3.internal.Util -> okhttp3.internal.d:
|
|||
1:1:boolean hasIntersection(java.lang.String[],java.lang.String[],java.util.Comparator):141:141 -> w
|
||||
2:4:boolean hasIntersection(java.lang.String[],java.lang.String[],java.util.Comparator):144:146 -> w
|
||||
1:1:long headersContentLength(okhttp3.Response):437:437 -> x
|
||||
1:1:void ignoreIoExceptions(kotlin.jvm.functions.Function0):396:396 -> y
|
||||
1:1:void ignoreExceptions(kotlin.jvm.functions.Function0):396:396 -> y
|
||||
1:1:java.util.List immutableListOf(java.lang.Object[]):473:473 -> z
|
||||
okhttp3.internal.Util$asFactory$1 -> okhttp3.internal.d$a:
|
||||
# {"id":"sourceFile","fileName":"Util.kt"}
|
||||
|
@ -163846,7 +163846,7 @@ okhttp3.internal.cache.DiskLruCache$Editor$newSink$$inlined$synchronized$lambda$
|
|||
# {"id":"sourceFile","fileName":"DiskLruCache.kt"}
|
||||
int $index$inlined -> b
|
||||
okhttp3.internal.cache.DiskLruCache$Editor this$0 -> a
|
||||
1:4:void invoke(java.io.IOException):885:885 -> a
|
||||
1:4:void invoke(java.io.Exception):885:885 -> a
|
||||
1:1:java.lang.Object invoke(java.lang.Object):825:825 -> invoke
|
||||
okhttp3.internal.cache.DiskLruCache$Entry -> okhttp3.internal.cache.d$c:
|
||||
# {"id":"sourceFile","fileName":"DiskLruCache.kt"}
|
||||
|
@ -163930,9 +163930,9 @@ okhttp3.internal.cache.DiskLruCache$cleanupTask$1 -> okhttp3.internal.cache.d$e:
|
|||
okhttp3.internal.cache.DiskLruCache$newJournalWriter$faultHidingSink$1 -> okhttp3.internal.cache.d$f:
|
||||
# {"id":"sourceFile","fileName":"DiskLruCache.kt"}
|
||||
okhttp3.internal.cache.DiskLruCache this$0 -> a
|
||||
1:1:void invoke(java.io.IOException):304:304 -> a
|
||||
2:3:void invoke(java.io.IOException):1066:1067 -> a
|
||||
4:4:void invoke(java.io.IOException):305:305 -> a
|
||||
1:1:void invoke(java.io.Exception):304:304 -> a
|
||||
2:3:void invoke(java.io.Exception):1066:1067 -> a
|
||||
4:4:void invoke(java.io.Exception):305:305 -> a
|
||||
1:1:java.lang.Object invoke(java.lang.Object):87:87 -> invoke
|
||||
okhttp3.internal.cache.DiskLruCache$snapshots$1 -> okhttp3.internal.cache.d$g:
|
||||
# {"id":"sourceFile","fileName":"DiskLruCache.kt"}
|
||||
|
@ -164338,13 +164338,13 @@ okhttp3.internal.connection.ConnectionSpecSelector -> okhttp3.internal.connectio
|
|||
5:5:okhttp3.ConnectionSpec configureSecureSocket(javax.net.ssl.SSLSocket):68:68 -> a
|
||||
6:6:okhttp3.ConnectionSpec configureSecureSocket(javax.net.ssl.SSLSocket):70:70 -> a
|
||||
7:10:okhttp3.ConnectionSpec configureSecureSocket(javax.net.ssl.SSLSocket):63:63 -> a
|
||||
1:1:boolean connectionFailed(java.io.IOException):83:83 -> b
|
||||
2:2:boolean connectionFailed(java.io.IOException):86:86 -> b
|
||||
3:3:boolean connectionFailed(java.io.IOException):89:89 -> b
|
||||
4:4:boolean connectionFailed(java.io.IOException):94:94 -> b
|
||||
5:5:boolean connectionFailed(java.io.IOException):97:97 -> b
|
||||
6:6:boolean connectionFailed(java.io.IOException):100:100 -> b
|
||||
7:7:boolean connectionFailed(java.io.IOException):103:103 -> b
|
||||
1:1:boolean connectionFailed(java.io.Exception):83:83 -> b
|
||||
2:2:boolean connectionFailed(java.io.Exception):86:86 -> b
|
||||
3:3:boolean connectionFailed(java.io.Exception):89:89 -> b
|
||||
4:4:boolean connectionFailed(java.io.Exception):94:94 -> b
|
||||
5:5:boolean connectionFailed(java.io.Exception):97:97 -> b
|
||||
6:6:boolean connectionFailed(java.io.Exception):100:100 -> b
|
||||
7:7:boolean connectionFailed(java.io.Exception):103:103 -> b
|
||||
1:2:boolean isFallbackPossible(javax.net.ssl.SSLSocket):115:116 -> c
|
||||
okhttp3.internal.connection.Exchange -> okhttp3.internal.connection.c:
|
||||
# {"id":"sourceFile","fileName":"Exchange.kt"}
|
||||
|
@ -164356,12 +164356,12 @@ okhttp3.internal.connection.Exchange -> okhttp3.internal.connection.c:
|
|||
okhttp3.internal.connection.RealConnection connection -> b
|
||||
1:1:void <init>(okhttp3.internal.connection.RealCall,okhttp3.EventListener,okhttp3.internal.connection.ExchangeFinder,okhttp3.internal.http.ExchangeCodec):40:40 -> <init>
|
||||
2:2:void <init>(okhttp3.internal.connection.RealCall,okhttp3.EventListener,okhttp3.internal.connection.ExchangeFinder,okhttp3.internal.http.ExchangeCodec):50:50 -> <init>
|
||||
1:1:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):177:177 -> a
|
||||
2:2:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):181:181 -> a
|
||||
3:3:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):183:183 -> a
|
||||
4:4:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):188:188 -> a
|
||||
5:5:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):190:190 -> a
|
||||
6:6:java.io.IOException bodyComplete(long,boolean,boolean,java.io.IOException):193:193 -> a
|
||||
1:1:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):177:177 -> a
|
||||
2:2:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):181:181 -> a
|
||||
3:3:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):183:183 -> a
|
||||
4:4:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):188:188 -> a
|
||||
5:5:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):190:190 -> a
|
||||
6:6:java.io.Exception bodyComplete(long,boolean,boolean,java.io.Exception):193:193 -> a
|
||||
1:1:void cancel():153:153 -> b
|
||||
1:5:okio.Sink createRequestBody(okhttp3.Request,boolean):70:74 -> c
|
||||
1:2:void detachWithViolence():161:162 -> d
|
||||
|
@ -164384,7 +164384,7 @@ okhttp3.internal.connection.Exchange -> okhttp3.internal.connection.c:
|
|||
3:5:okhttp3.Response$Builder readResponseHeaders(boolean):110:112 -> q
|
||||
1:1:void responseHeadersEnd(okhttp3.Response):117:117 -> r
|
||||
1:1:void responseHeadersStart():100:100 -> s
|
||||
1:2:void trackFailure(java.io.IOException):166:167 -> t
|
||||
1:2:void trackFailure(java.io.Exception):166:167 -> t
|
||||
1:1:okhttp3.Headers trailers():136:136 -> u
|
||||
1:1:void webSocketUpgradeFailed():145:145 -> v
|
||||
1:3:void writeRequestHeaders(okhttp3.Request):58:60 -> w
|
||||
|
@ -164398,7 +164398,7 @@ okhttp3.internal.connection.Exchange$RequestBodySink -> okhttp3.internal.connect
|
|||
boolean closed -> d
|
||||
1:1:void <init>(okhttp3.internal.connection.Exchange,okio.Sink,long):201:201 -> <init>
|
||||
2:2:void <init>(okhttp3.internal.connection.Exchange,okio.Sink,long):205:205 -> <init>
|
||||
1:3:java.io.IOException complete(java.io.IOException):250:252 -> c
|
||||
1:3:java.io.Exception complete(java.io.Exception):250:252 -> c
|
||||
1:4:void close():236:239 -> close
|
||||
5:6:void close():242:243 -> close
|
||||
7:7:void close():245:245 -> close
|
||||
|
@ -164430,9 +164430,9 @@ okhttp3.internal.connection.Exchange$ResponseBodySource -> okhttp3.internal.conn
|
|||
11:11:long read(okio.Buffer,long):295:295 -> J0
|
||||
12:12:long read(okio.Buffer,long):300:300 -> J0
|
||||
13:13:long read(okio.Buffer,long):274:274 -> J0
|
||||
1:2:java.io.IOException complete(java.io.IOException):317:318 -> c
|
||||
3:5:java.io.IOException complete(java.io.IOException):320:322 -> c
|
||||
6:6:java.io.IOException complete(java.io.IOException):324:324 -> c
|
||||
1:2:java.io.Exception complete(java.io.Exception):317:318 -> c
|
||||
3:5:java.io.Exception complete(java.io.Exception):320:322 -> c
|
||||
6:6:java.io.Exception complete(java.io.Exception):324:324 -> c
|
||||
1:2:void close():306:307 -> close
|
||||
3:4:void close():309:310 -> close
|
||||
5:5:void close():312:312 -> close
|
||||
|
@ -164504,8 +164504,8 @@ okhttp3.internal.connection.ExchangeFinder -> okhttp3.internal.connection.d:
|
|||
2:2:okhttp3.Route retryRoute():310:310 -> f
|
||||
3:7:okhttp3.Route retryRoute():312:312 -> f
|
||||
1:2:boolean sameHostAndPort(okhttp3.HttpUrl):325:326 -> g
|
||||
1:5:void trackFailure(java.io.IOException):260:264 -> h
|
||||
6:6:void trackFailure(java.io.IOException):266:266 -> h
|
||||
1:5:void trackFailure(java.io.Exception):260:264 -> h
|
||||
6:6:void trackFailure(java.io.Exception):266:266 -> h
|
||||
okhttp3.internal.connection.RealCall -> okhttp3.internal.connection.e:
|
||||
# {"id":"sourceFile","fileName":"RealCall.kt"}
|
||||
boolean canceled -> m
|
||||
|
@ -164534,8 +164534,8 @@ okhttp3.internal.connection.RealCall -> okhttp3.internal.connection.e:
|
|||
7:7:void <init>(okhttp3.OkHttpClient,okhttp3.Request,boolean):74:74 -> <init>
|
||||
8:8:void <init>(okhttp3.OkHttpClient,okhttp3.Request,boolean):78:78 -> <init>
|
||||
9:9:void <init>(okhttp3.OkHttpClient,okhttp3.Request,boolean):110:110 -> <init>
|
||||
1:2:java.io.IOException timeoutExit(java.io.IOException):395:396 -> A
|
||||
3:4:java.io.IOException timeoutExit(java.io.IOException):398:399 -> A
|
||||
1:2:java.io.Exception timeoutExit(java.io.Exception):395:396 -> A
|
||||
3:4:java.io.Exception timeoutExit(java.io.Exception):398:399 -> A
|
||||
1:3:java.lang.String toLoggableString():463:465 -> B
|
||||
1:1:okhttp3.Request request():124:124 -> S
|
||||
1:1:okhttp3.Call clone():60:60 -> T
|
||||
|
@ -164557,16 +164557,16 @@ okhttp3.internal.connection.RealCall -> okhttp3.internal.connection.e:
|
|||
2:4:void cancel():138:140 -> cancel
|
||||
5:5:void cancel():142:142 -> cancel
|
||||
1:1:java.lang.Object clone():60:60 -> clone
|
||||
1:2:java.io.IOException callDone(java.io.IOException):557:558 -> d
|
||||
3:3:java.io.IOException callDone(java.io.IOException):346:346 -> d
|
||||
4:5:java.io.IOException callDone(java.io.IOException):561:562 -> d
|
||||
6:8:java.io.IOException callDone(java.io.IOException):349:349 -> d
|
||||
9:11:java.io.IOException callDone(java.io.IOException):352:354 -> d
|
||||
12:12:java.io.IOException callDone(java.io.IOException):356:356 -> d
|
||||
13:13:java.io.IOException callDone(java.io.IOException):349:349 -> d
|
||||
14:14:java.io.IOException callDone(java.io.IOException):360:360 -> d
|
||||
15:15:java.io.IOException callDone(java.io.IOException):362:362 -> d
|
||||
16:16:java.io.IOException callDone(java.io.IOException):364:364 -> d
|
||||
1:2:java.io.Exception callDone(java.io.Exception):557:558 -> d
|
||||
3:3:java.io.Exception callDone(java.io.Exception):346:346 -> d
|
||||
4:5:java.io.Exception callDone(java.io.Exception):561:562 -> d
|
||||
6:8:java.io.Exception callDone(java.io.Exception):349:349 -> d
|
||||
9:11:java.io.Exception callDone(java.io.Exception):352:354 -> d
|
||||
12:12:java.io.Exception callDone(java.io.Exception):356:356 -> d
|
||||
13:13:java.io.Exception callDone(java.io.Exception):349:349 -> d
|
||||
14:14:java.io.Exception callDone(java.io.Exception):360:360 -> d
|
||||
15:15:java.io.Exception callDone(java.io.Exception):362:362 -> d
|
||||
16:16:java.io.Exception callDone(java.io.Exception):364:364 -> d
|
||||
1:2:void callStart():170:171 -> e
|
||||
1:1:okhttp3.internal.connection.RealCall clone():122:122 -> f
|
||||
1:4:okhttp3.Address createAddress(okhttp3.HttpUrl):434:437 -> g
|
||||
|
@ -164615,18 +164615,18 @@ okhttp3.internal.connection.RealCall -> okhttp3.internal.connection.e:
|
|||
19:19:okhttp3.internal.connection.Exchange initExchange$okhttp(okhttp3.internal.http.RealInterceptorChain):250:250 -> r
|
||||
20:20:okhttp3.internal.connection.Exchange initExchange$okhttp(okhttp3.internal.http.RealInterceptorChain):249:249 -> r
|
||||
21:21:okhttp3.internal.connection.Exchange initExchange$okhttp(okhttp3.internal.http.RealInterceptorChain):248:248 -> r
|
||||
1:1:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):290:290 -> s
|
||||
2:7:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):294:299 -> s
|
||||
8:8:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):301:301 -> s
|
||||
9:9:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):294:294 -> s
|
||||
10:11:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):304:305 -> s
|
||||
12:12:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):309:309 -> s
|
||||
13:13:java.io.IOException messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.IOException):294:294 -> s
|
||||
1:4:java.io.IOException noMoreExchanges$okhttp(java.io.IOException):317:320 -> t
|
||||
5:5:java.io.IOException noMoreExchanges$okhttp(java.io.IOException):322:322 -> t
|
||||
6:6:java.io.IOException noMoreExchanges$okhttp(java.io.IOException):317:317 -> t
|
||||
7:7:java.io.IOException noMoreExchanges$okhttp(java.io.IOException):325:325 -> t
|
||||
8:8:java.io.IOException noMoreExchanges$okhttp(java.io.IOException):317:317 -> t
|
||||
1:1:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):290:290 -> s
|
||||
2:7:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):294:299 -> s
|
||||
8:8:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):301:301 -> s
|
||||
9:9:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):294:294 -> s
|
||||
10:11:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):304:305 -> s
|
||||
12:12:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):309:309 -> s
|
||||
13:13:java.io.Exception messageDone$okhttp(okhttp3.internal.connection.Exchange,boolean,boolean,java.io.Exception):294:294 -> s
|
||||
1:4:java.io.Exception noMoreExchanges$okhttp(java.io.Exception):317:320 -> t
|
||||
5:5:java.io.Exception noMoreExchanges$okhttp(java.io.Exception):322:322 -> t
|
||||
6:6:java.io.Exception noMoreExchanges$okhttp(java.io.Exception):317:317 -> t
|
||||
7:7:java.io.Exception noMoreExchanges$okhttp(java.io.Exception):325:325 -> t
|
||||
8:8:java.io.Exception noMoreExchanges$okhttp(java.io.Exception):317:317 -> t
|
||||
1:1:okio.Timeout timeout():60:60 -> timeout
|
||||
1:1:java.lang.String redactedUrl$okhttp():468:468 -> u
|
||||
1:1:java.net.Socket releaseConnectionNoEvents$okhttp():374:374 -> v
|
||||
|
@ -164746,17 +164746,17 @@ okhttp3.internal.connection.RealConnection -> okhttp3.internal.connection.f:
|
|||
4:4:boolean supportsUrl(okhttp3.HttpUrl):586:586 -> M
|
||||
5:5:boolean supportsUrl(okhttp3.HttpUrl):590:590 -> M
|
||||
6:6:boolean supportsUrl(okhttp3.HttpUrl):595:595 -> M
|
||||
1:1:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):703:703 -> N
|
||||
2:2:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):705:705 -> N
|
||||
3:3:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):707:707 -> N
|
||||
4:5:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):709:710 -> N
|
||||
6:6:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):714:714 -> N
|
||||
7:8:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):720:721 -> N
|
||||
9:10:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):724:725 -> N
|
||||
11:11:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):728:728 -> N
|
||||
12:12:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):730:730 -> N
|
||||
13:13:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):732:732 -> N
|
||||
14:14:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.IOException):735:735 -> N
|
||||
1:1:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):703:703 -> N
|
||||
2:2:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):705:705 -> N
|
||||
3:3:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):707:707 -> N
|
||||
4:5:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):709:710 -> N
|
||||
6:6:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):714:714 -> N
|
||||
7:8:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):720:721 -> N
|
||||
9:10:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):724:725 -> N
|
||||
11:11:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):728:728 -> N
|
||||
12:12:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):730:730 -> N
|
||||
13:13:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):732:732 -> N
|
||||
14:14:void trackFailure$okhttp(okhttp3.internal.connection.RealCall,java.io.Exception):735:735 -> N
|
||||
1:1:okhttp3.Protocol protocol():737:737 -> a
|
||||
1:1:okhttp3.Handshake handshake():684:684 -> b
|
||||
1:1:okhttp3.Route route():637:637 -> c
|
||||
|
@ -164789,9 +164789,9 @@ okhttp3.internal.connection.RealConnection -> okhttp3.internal.connection.f:
|
|||
35:36:void connect(int,int,int,int,boolean,okhttp3.Call,okhttp3.EventListener):232:233 -> m
|
||||
37:37:void connect(int,int,int,int,boolean,okhttp3.Call,okhttp3.EventListener):193:193 -> m
|
||||
38:38:void connect(int,int,int,int,boolean,okhttp3.Call,okhttp3.EventListener):175:175 -> m
|
||||
1:4:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.IOException):689:692 -> n
|
||||
5:5:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.IOException):691:691 -> n
|
||||
6:6:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.IOException):695:695 -> n
|
||||
1:4:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.Exception):689:692 -> n
|
||||
5:5:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.Exception):691:691 -> n
|
||||
6:6:void connectFailed$okhttp(okhttp3.OkHttpClient,okhttp3.Route,java.io.Exception):695:695 -> n
|
||||
1:2:void connectSocket(int,int,okhttp3.Call,okhttp3.EventListener):283:284 -> o
|
||||
3:3:void connectSocket(int,int,okhttp3.Call,okhttp3.EventListener):286:286 -> o
|
||||
4:4:void connectSocket(int,int,okhttp3.Call,okhttp3.EventListener):288:288 -> o
|
||||
|
@ -164945,8 +164945,8 @@ okhttp3.internal.connection.RouteDatabase -> okhttp3.internal.connection.i:
|
|||
1:1:boolean shouldPostpone(okhttp3.Route):40:40 -> c
|
||||
okhttp3.internal.connection.RouteException -> okhttp3.internal.connection.j:
|
||||
# {"id":"sourceFile","fileName":"RouteException.kt"}
|
||||
java.io.IOException lastConnectException -> a
|
||||
java.io.IOException firstConnectException -> b
|
||||
java.io.Exception lastConnectException -> a
|
||||
java.io.Exception firstConnectException -> b
|
||||
1:2:void <init>(java.io.IOException):25:26 -> <init>
|
||||
1:2:void addConnectException(java.io.IOException):30:31 -> a
|
||||
1:1:java.io.IOException getFirstConnectException():24:24 -> b
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.coldmint.rust.core.tool.FileOperator
|
|||
import com.coldmint.rust.core.web.ServerConfiguration
|
||||
import com.coldmint.rust.pro.adapters.FileAdapter
|
||||
import com.coldmint.rust.pro.base.BaseActivity
|
||||
import com.coldmint.rust.pro.databean.ErrorInfo
|
||||
import com.coldmint.rust.pro.databinding.ActivityEditBinding
|
||||
import com.coldmint.rust.pro.databinding.EditStartBinding
|
||||
import com.coldmint.rust.pro.edit.CodeToolAdapter
|
||||
|
@ -47,6 +48,8 @@ import com.coldmint.rust.pro.viewmodel.EditStartViewModel
|
|||
import com.coldmint.rust.pro.viewmodel.EditViewModel
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import io.github.rosemoe.sora.lang.completion.CompletionPublisher
|
||||
import io.github.rosemoe.sora.text.CharPosition
|
||||
import io.github.rosemoe.sora.text.ContentReference
|
||||
|
@ -160,6 +163,20 @@ class EditActivity : BaseActivity<ActivityEditBinding>() {
|
|||
* 加载主要的观察者
|
||||
*/
|
||||
fun loadMainObserve() {
|
||||
viewModel.memberErrorInfoFun = {
|
||||
val info = ErrorInfo()
|
||||
val saveData = String.format(getString(R.string.compile_error_message), it)
|
||||
info.allErrorDetails = it
|
||||
info.activityLog = "EditActivity-编译代码错误"
|
||||
info.save()
|
||||
CoreDialog(this).setTitle(R.string.compile_error)
|
||||
.setMessage(saveData)
|
||||
.setPositiveButton(R.string.share) {
|
||||
FileOperator.shareFile(this, info.getLogFile())
|
||||
}.setNegativeButton(R.string.dialog_cancel) {
|
||||
|
||||
}.show()
|
||||
}
|
||||
viewModel.needSaveLiveData.observe(this) {
|
||||
if (it) {
|
||||
CoreDialog(this).setTitle(R.string.edit_function).setMessage(R.string.text_changed)
|
||||
|
@ -1344,22 +1361,26 @@ class EditActivity : BaseActivity<ActivityEditBinding>() {
|
|||
// }
|
||||
// }
|
||||
R.id.save_text -> {
|
||||
val openedSourceFile =
|
||||
viewModel.openedSourceFileListLiveData.getOpenedSourceFile(viewBinding.tabLayout.selectedTabPosition)
|
||||
val needSave =
|
||||
openedSourceFile.isChanged(viewBinding.codeEditor.text.toString())
|
||||
if (needSave) {
|
||||
viewModel.compilerFile(openedSourceFile) {
|
||||
viewModel.openedSourceFileListLiveData.getOpenedSourceFile(
|
||||
viewBinding.tabLayout.selectedTabPosition
|
||||
).save(it)
|
||||
try {
|
||||
val openedSourceFile =
|
||||
viewModel.openedSourceFileListLiveData.getOpenedSourceFile(viewBinding.tabLayout.selectedTabPosition)
|
||||
val needSave =
|
||||
openedSourceFile.isChanged(viewBinding.codeEditor.text.toString())
|
||||
if (needSave) {
|
||||
viewModel.compilerFile(openedSourceFile) {
|
||||
viewModel.openedSourceFileListLiveData.getOpenedSourceFile(
|
||||
viewBinding.tabLayout.selectedTabPosition
|
||||
).save(it)
|
||||
}
|
||||
}
|
||||
Snackbar.make(
|
||||
viewBinding.recyclerview,
|
||||
R.string.save_complete2,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
Snackbar.make(
|
||||
viewBinding.recyclerview,
|
||||
R.string.save_complete2,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
R.id.show_line_number -> {
|
||||
viewBinding.codeEditor.isLineNumberEnabled =
|
||||
|
|
|
@ -98,7 +98,7 @@ class UserListActivity : BaseActivity<ActivityUserListBinding>() {
|
|||
override fun onResponse(t: FollowUserListData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val dataList = t.data
|
||||
if (dataList != null) {
|
||||
if (dataList != null && dataList.size > 0) {
|
||||
viewBinding.loadLayout.isVisible = false
|
||||
viewBinding.recyclerView.isVisible = true
|
||||
val adapter = UserAdapter(this@UserListActivity, dataList)
|
||||
|
|
|
@ -39,7 +39,7 @@ import kotlin.concurrent.thread
|
|||
* @constructor
|
||||
*/
|
||||
class ApplicationListAdapter(
|
||||
context: Context, dataList: MutableList<PackageInfo>
|
||||
context: Context, dataList: MutableList<PackageInfo>
|
||||
) : BaseAdapter<ApplicationItemBinding, PackageInfo>(context, dataList) {
|
||||
|
||||
val handler: Handler by lazy {
|
||||
|
@ -66,8 +66,14 @@ class ApplicationListAdapter(
|
|||
position: Int
|
||||
) {
|
||||
val packageManager = context.packageManager
|
||||
Glide.with(context).load(data.applicationInfo.loadIcon(packageManager)).apply(GlobalMethod.getRequestOptions())
|
||||
.into(viewBinding.appIconView)
|
||||
try {
|
||||
Glide.with(context).load(data.applicationInfo.loadIcon(packageManager))
|
||||
.apply(GlobalMethod.getRequestOptions())
|
||||
.into(viewBinding.appIconView)
|
||||
} catch (e: Exception) {
|
||||
//解决内存超标问题
|
||||
e.printStackTrace()
|
||||
}
|
||||
val appName = data.applicationInfo.loadLabel(packageManager).toString()
|
||||
viewBinding.appNameView.text = appName
|
||||
viewBinding.appVersionView.text = data.versionName
|
||||
|
|
|
@ -74,7 +74,11 @@ class ModAdapter(context: Context, dataList: MutableList<ModClass>) :
|
|||
}
|
||||
|
||||
override fun getPopupText(position: Int): String {
|
||||
val s = dataList[position].modName
|
||||
return getInitial(s).toString()
|
||||
return if (dataList.size > position) {
|
||||
val s = dataList[position].modName
|
||||
getInitial(s).toString()
|
||||
} else {
|
||||
"#"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -26,7 +26,11 @@ class ModPageAdapter(
|
|||
}
|
||||
|
||||
val historyUnitFragment: HistoryUnitFragment by lazy {
|
||||
HistoryUnitFragment(fragmentActivity, modClass, fileDataBase)
|
||||
val fragment = HistoryUnitFragment()
|
||||
fragment.fragmentActivity = fragmentActivity
|
||||
fragment.modClass = modClass
|
||||
fragment.fileDataBase = fileDataBase
|
||||
fragment
|
||||
}
|
||||
|
||||
fun setAllUnitsChanged(changed: ((Int) -> Unit)?) {
|
||||
|
|
|
@ -152,7 +152,7 @@ abstract class BaseAdapter<ViewBindingType : ViewBinding, DataType>(
|
|||
* @param index Int
|
||||
*/
|
||||
fun removeItem(index: Int) {
|
||||
if (index < dataList.size) {
|
||||
if (index > -1 && index < dataList.size) {
|
||||
val data = dataList[index]
|
||||
dataList.removeAt(index)
|
||||
handler.post {
|
||||
|
|
|
@ -27,10 +27,12 @@ import java.util.concurrent.Executors
|
|||
* @date 2022/1/14 15:54
|
||||
*/
|
||||
class HistoryUnitFragment(
|
||||
val fragmentActivity: FragmentActivity,
|
||||
val modClass: ModClass, val fileDataBase: FileDataBase
|
||||
) :
|
||||
BaseFragment<FragmentHistoryBinding>() {
|
||||
var fragmentActivity: FragmentActivity? = null
|
||||
var modClass: ModClass? = null
|
||||
var fileDataBase: FileDataBase? = null
|
||||
|
||||
//当内容改变时的数据监听
|
||||
var whenNumberChanged: ((Int) -> Unit)? = null
|
||||
val executorService: ExecutorService = Executors.newSingleThreadExecutor()
|
||||
|
@ -56,12 +58,15 @@ class HistoryUnitFragment(
|
|||
fun loadList() {
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
executorService.submit {
|
||||
if (fileDataBase == null) {
|
||||
return@submit
|
||||
}
|
||||
handler.post {
|
||||
viewBinding.unitError.isVisible = false
|
||||
viewBinding.progressBar.isVisible = true
|
||||
viewBinding.unitList.isVisible = false
|
||||
}
|
||||
val dataList = fileDataBase.getHistoryDao().getAll().toMutableList()
|
||||
val dataList = fileDataBase!!.getHistoryDao().getAll().toMutableList()
|
||||
if (dataList.isEmpty()) {
|
||||
handler.post {
|
||||
showInfoToView(R.string.not_find_history)
|
||||
|
@ -84,7 +89,7 @@ class HistoryUnitFragment(
|
|||
needUpDateUnitsList = true
|
||||
}
|
||||
executorService.submit {
|
||||
fileDataBase.getHistoryDao().delete(historyRecord)
|
||||
fileDataBase!!.getHistoryDao().delete(historyRecord)
|
||||
}
|
||||
true
|
||||
},
|
||||
|
@ -119,13 +124,15 @@ class HistoryUnitFragment(
|
|||
* @param file SourceFileClass
|
||||
*/
|
||||
fun openEditActivity(file: SourceFile) {
|
||||
val bundle = Bundle()
|
||||
val path = file.file.absolutePath
|
||||
bundle.putString("path", path)
|
||||
bundle.putString("modPath", modClass.modFile.absolutePath)
|
||||
val intent = Intent(requireContext(), EditActivity::class.java)
|
||||
intent.putExtra("data", bundle)
|
||||
fragmentActivity.startActivityForResult(intent, 2)
|
||||
if (modClass != null && fragmentActivity != null) {
|
||||
val bundle = Bundle()
|
||||
val path = file.file.absolutePath
|
||||
bundle.putString("path", path)
|
||||
bundle.putString("modPath", modClass!!.modFile.absolutePath)
|
||||
val intent = Intent(requireContext(), EditActivity::class.java)
|
||||
intent.putExtra("data", bundle)
|
||||
fragmentActivity!!.startActivityForResult(intent, 2)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -88,6 +88,9 @@ class RankingFragment : BaseFragment<FragmentRankingBinding>() {
|
|||
viewBinding.swipeRefreshLayout.isVisible = false
|
||||
WebMod.instance.list(object : ApiCallBack<WebModListData> {
|
||||
override fun onResponse(t: WebModListData) {
|
||||
if (!isAdded) {
|
||||
return
|
||||
}
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val list = t.data
|
||||
if (list != null && list.isNotEmpty()) {
|
||||
|
|
|
@ -50,6 +50,8 @@ class WarehouseFragment : BaseFragment<FragmentWarehouseBinding>() {
|
|||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
viewBinding.pager.adapter = WarehouseAdapter(this)
|
||||
//解决启动为仓库页面,点击社区,再返回仓库重复崩溃的问题
|
||||
viewBinding.pager.isSaveEnabled = false
|
||||
loadTab()
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@ import android.graphics.Color
|
|||
import android.graphics.Paint
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.util.TypedValue
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
|
@ -225,29 +228,33 @@ object GlobalMethod {
|
|||
fun showUpdateLog(context: Context, modId: String) {
|
||||
WebMod.instance.getUpdateRecord(modId, object : ApiCallBack<WebModUpdateLogData> {
|
||||
override fun onResponse(t: WebModUpdateLogData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val data = t.data
|
||||
if (data != null && data.isNotEmpty()) {
|
||||
val stringBuilder = StringBuilder()
|
||||
data.forEach {
|
||||
stringBuilder.append(it.versionName)
|
||||
stringBuilder.append("\n")
|
||||
stringBuilder.append(it.updateLog)
|
||||
stringBuilder.append("\n")
|
||||
stringBuilder.append(it.time)
|
||||
stringBuilder.append("\n\n------\n\n")
|
||||
try {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val data = t.data
|
||||
if (data != null && data.isNotEmpty()) {
|
||||
val stringBuilder = StringBuilder()
|
||||
data.forEach {
|
||||
stringBuilder.append(it.versionName)
|
||||
stringBuilder.append("\n")
|
||||
stringBuilder.append(it.updateLog)
|
||||
stringBuilder.append("\n")
|
||||
stringBuilder.append(it.time)
|
||||
stringBuilder.append("\n\n------\n\n")
|
||||
}
|
||||
val title =
|
||||
context.getString(R.string.update_record) + "(" + data.size + ")"
|
||||
MaterialAlertDialogBuilder(context).setTitle(title)
|
||||
.setMessage(stringBuilder.toString()).setCancelable(false)
|
||||
.setPositiveButton(R.string.dialog_ok) { i, i2 ->
|
||||
}.show()
|
||||
} else {
|
||||
Toast.makeText(context, t.message, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
val title =
|
||||
context.getString(R.string.update_record) + "(" + data.size + ")"
|
||||
MaterialAlertDialogBuilder(context).setTitle(title)
|
||||
.setMessage(stringBuilder.toString()).setCancelable(false)
|
||||
.setPositiveButton(R.string.dialog_ok) { i, i2 ->
|
||||
}.show()
|
||||
} else {
|
||||
Toast.makeText(context, t.message, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(context, t.message, Toast.LENGTH_SHORT).show()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@ import com.coldmint.rust.pro.livedata.OpenedSourceFileListLiveData
|
|||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.tool.CompletionItemConverter
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
@ -36,7 +38,13 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
var targetFile: File? = null
|
||||
|
||||
val codeTranslate by lazy {
|
||||
CodeTranslate(getApplication())
|
||||
val c = CodeTranslate(getApplication())
|
||||
c.setCompileErrorRecordFun {
|
||||
//将信息上传至FireBase
|
||||
Firebase.crashlytics.setCustomKey("type", "代码编译错误")
|
||||
Firebase.crashlytics.recordException(it)
|
||||
}
|
||||
c
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,6 +52,11 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
*/
|
||||
var modClass: ModClass? = null
|
||||
|
||||
/**
|
||||
* 错误信息回调
|
||||
*/
|
||||
var memberErrorInfoFun: ((String) -> Unit)? = null
|
||||
|
||||
/**
|
||||
* 是否正在复制文件
|
||||
*/
|
||||
|
@ -136,11 +149,15 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
*/
|
||||
fun compilerFile(
|
||||
openedSourceFile: OpenedSourceFile,
|
||||
func: (String) -> Unit
|
||||
func: (String) -> Unit,
|
||||
) {
|
||||
codeTranslate.setTranslate(false)
|
||||
codeTranslate.start(openedSourceFile.getEditText()) {
|
||||
func.invoke(it)
|
||||
codeTranslate.start(openedSourceFile.getEditText()) { success, data ->
|
||||
if (success) {
|
||||
func.invoke(data)
|
||||
} else {
|
||||
memberErrorInfoFun?.invoke(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,9 +190,14 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
val code = FileOperator.readFile(File(getNowOpenFilePath())) ?: return@submit
|
||||
it.setTranslation(code)
|
||||
codeTranslate.setTranslate(true)
|
||||
codeTranslate.start(code){
|
||||
codeLiveData.postValue(it)
|
||||
loadingLiveData.postValue(false)
|
||||
codeTranslate.start(code) { success, data ->
|
||||
if (success) {
|
||||
codeLiveData.postValue(data)
|
||||
loadingLiveData.postValue(false)
|
||||
} else {
|
||||
//翻译失败
|
||||
memberErrorInfoFun?.invoke(data)
|
||||
}
|
||||
}
|
||||
return@submit
|
||||
}
|
||||
|
@ -192,26 +214,30 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
executorService.submit {
|
||||
val code = FileOperator.readFile(File(path)) ?: return@submit
|
||||
codeTranslate.setTranslate(true)
|
||||
codeTranslate.start(code){
|
||||
CompletionItemConverter.setSourceFilePath(path)
|
||||
val openedSourceFile = OpenedSourceFile(path)
|
||||
openedSourceFile.setTranslation(it)
|
||||
val index = openedSourceFileListLiveData.add(openedSourceFile)
|
||||
if (index == -1) {
|
||||
nowFilePath = path
|
||||
codeLiveData.postValue(it)
|
||||
addHistoryRecord(SourceFile(File(path)))
|
||||
} else {
|
||||
val oldOpenedSourceFile =
|
||||
openedSourceFileListLiveData.getOpenedSourceFile(index)
|
||||
//如果不是当前打开的文件
|
||||
if (nowFilePath != oldOpenedSourceFile.file.absolutePath) {
|
||||
nowFilePath = oldOpenedSourceFile.file.absolutePath
|
||||
codeLiveData.postValue(oldOpenedSourceFile.getEditText())
|
||||
openedSourceFileListLiveData.refresh()
|
||||
codeTranslate.start(code) { success, data ->
|
||||
if (success) {
|
||||
CompletionItemConverter.setSourceFilePath(path)
|
||||
val openedSourceFile = OpenedSourceFile(path)
|
||||
openedSourceFile.setTranslation(data)
|
||||
val index = openedSourceFileListLiveData.add(openedSourceFile)
|
||||
if (index == -1) {
|
||||
nowFilePath = path
|
||||
codeLiveData.postValue(data)
|
||||
addHistoryRecord(SourceFile(File(path)))
|
||||
} else {
|
||||
val oldOpenedSourceFile =
|
||||
openedSourceFileListLiveData.getOpenedSourceFile(index)
|
||||
//如果不是当前打开的文件
|
||||
if (nowFilePath != oldOpenedSourceFile.file.absolutePath) {
|
||||
nowFilePath = oldOpenedSourceFile.file.absolutePath
|
||||
codeLiveData.postValue(oldOpenedSourceFile.getEditText())
|
||||
openedSourceFileListLiveData.refresh()
|
||||
}
|
||||
}
|
||||
loadingLiveData.postValue(false)
|
||||
} else {
|
||||
memberErrorInfoFun?.invoke(data)
|
||||
}
|
||||
loadingLiveData.postValue(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -311,8 +337,12 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
*/
|
||||
fun saveOneFile(openedSourceFile: OpenedSourceFile) {
|
||||
codeTranslate.setTranslate(false)
|
||||
codeTranslate.start(openedSourceFile.getEditText()){
|
||||
openedSourceFile.save(it)
|
||||
codeTranslate.start(openedSourceFile.getEditText()) { success, code ->
|
||||
if (success) {
|
||||
openedSourceFile.save(code)
|
||||
} else {
|
||||
memberErrorInfoFun?.invoke(code)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -330,16 +360,24 @@ class EditViewModel(application: Application) : BaseAndroidViewModel(application
|
|||
if (openedSourceFile.isChanged(text)) {
|
||||
needSave = true
|
||||
codeTranslate.setTranslate(false)
|
||||
codeTranslate.start(openedSourceFile.getEditText()){
|
||||
openedSourceFile.save(it)
|
||||
codeTranslate.start(openedSourceFile.getEditText()) { success, code ->
|
||||
if (success) {
|
||||
openedSourceFile.save(code)
|
||||
} else {
|
||||
memberErrorInfoFun?.invoke(code)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (openedSourceFile.isNeedSave()) {
|
||||
needSave = true
|
||||
codeTranslate.setTranslate(false)
|
||||
codeTranslate.start(openedSourceFile.getEditText()){
|
||||
openedSourceFile.save(it)
|
||||
codeTranslate.start(openedSourceFile.getEditText()) { success, code ->
|
||||
if (success) {
|
||||
openedSourceFile.save(code)
|
||||
} else {
|
||||
memberErrorInfoFun?.invoke(code)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,8 @@ import com.coldmint.rust.pro.tool.CompletionItemConverter
|
|||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
|
@ -132,12 +134,14 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
|
|||
val status = AppSettings.getValue(AppSettings.Setting.LoginStatus, false)
|
||||
if (!status) {
|
||||
needLoginLiveData.value = true
|
||||
Firebase.crashlytics.setUserId("")
|
||||
return
|
||||
}
|
||||
//验证登录
|
||||
val token = AppSettings.getValue(AppSettings.Setting.Token, "")
|
||||
if (token.isBlank()) {
|
||||
needLoginLiveData.value = true
|
||||
Firebase.crashlytics.setUserId("")
|
||||
} else {
|
||||
User.getUserActivationInfo(token, object : ApiCallBack<ActivationInfo> {
|
||||
override fun onFailure(e: Exception) {
|
||||
|
@ -147,6 +151,7 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
|
|||
)
|
||||
if (localTime == (-2).toLong()) {
|
||||
isActivationLiveData.value = true
|
||||
Firebase.crashlytics.setUserId("")
|
||||
} else {
|
||||
val nowTime = System.currentTimeMillis()
|
||||
//本地时间大于当前时间 激活
|
||||
|
@ -166,6 +171,7 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
|
|||
time
|
||||
)
|
||||
isActivationLiveData.value = activationInfo.data.activation
|
||||
Firebase.crashlytics.setUserId(activationInfo.data.account)
|
||||
} else {
|
||||
// 用户登录失败
|
||||
verifyErrorMsgLiveData.value = activationInfo.message
|
||||
|
|
|
@ -944,6 +944,8 @@
|
|||
<string name="update_number">更新次数</string>
|
||||
<string name="click_profile_picture_login">点击头像登录</string>
|
||||
<string name="log_in_discover_more">登录发现更多内容!</string>
|
||||
<string name="compile_error">编译错误</string>
|
||||
<string name="compile_error_message">很抱歉,源文件编译失败了。错误信息为:\n%1$s</string>
|
||||
<string name="follow_introduction">登录后即可解锁关注系统</string>
|
||||
|
||||
</resources>
|
|
@ -88,6 +88,19 @@ class CodeTranslate(val context: Context) {
|
|||
//翻译模式
|
||||
private var translateMode: Boolean = true
|
||||
|
||||
/**
|
||||
* 设置编译异常记录
|
||||
*/
|
||||
private var compileErrorRecord: ((Exception) -> Unit)? = null
|
||||
|
||||
/**
|
||||
* 设置编译异常上报
|
||||
*/
|
||||
public fun setCompileErrorRecordFun(func: ((Exception) -> Unit)?) {
|
||||
compileErrorRecord = func
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置是否启用英文模式 当启用时禁用翻译和编译功能
|
||||
* @param enable Boolean
|
||||
|
@ -116,9 +129,10 @@ class CodeTranslate(val context: Context) {
|
|||
|
||||
/**
|
||||
* 开始工作
|
||||
* @param func Function1<String, Unit>
|
||||
*
|
||||
* @param func (是否翻译成功,结果)若true,则结果为翻译结果,false结果为异常信息
|
||||
*/
|
||||
fun start(input: String, func: (String) -> Unit) {
|
||||
fun start(input: String, func: (Boolean, String) -> Unit) {
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
val scope = CoroutineScope(Job())
|
||||
num++
|
||||
|
@ -137,219 +151,229 @@ class CodeTranslate(val context: Context) {
|
|||
"代码翻译", isError = true
|
||||
)
|
||||
handler.post {
|
||||
func.invoke(input)
|
||||
func.invoke(true, input)
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
|
||||
val tokenizer = StringTokenizer(input, CodeTranslate.split, true)
|
||||
//缓存翻译数据,以便加速重复数据的翻译
|
||||
val translationMap = HashMap<String, String>()
|
||||
//保存每次代码的翻译结果
|
||||
val codeResult = StringBuilder()
|
||||
//保存完整的翻译结果
|
||||
val translationResult = StringBuilder()
|
||||
var codeBlockType = CodeBlockType.Key
|
||||
//保存资源引用值(应该看做整体处理)
|
||||
val referenceResult = StringBuilder()
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
val code = tokenizer.nextToken()
|
||||
if (translationMap.containsKey(code)) {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(translationMap[code])
|
||||
try {
|
||||
val tokenizer = StringTokenizer(input, CodeTranslate.split, true)
|
||||
//缓存翻译数据,以便加速重复数据的翻译
|
||||
val translationMap = HashMap<String, String>()
|
||||
//保存每次代码的翻译结果
|
||||
val codeResult = StringBuilder()
|
||||
//保存完整的翻译结果
|
||||
val translationResult = StringBuilder()
|
||||
var codeBlockType = CodeBlockType.Key
|
||||
//保存资源引用值(应该看做整体处理)
|
||||
val referenceResult = StringBuilder()
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
val code = tokenizer.nextToken()
|
||||
if (translationMap.containsKey(code)) {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(translationMap[code])
|
||||
} else {
|
||||
translationResult.append(translationMap[code])
|
||||
}
|
||||
} else {
|
||||
translationResult.append(translationMap[code])
|
||||
}
|
||||
} else {
|
||||
codeResult.clear()
|
||||
when (code) {
|
||||
"\n" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
val referenceValue = referenceResult.toString()
|
||||
val codeInfo = if (translateMode) {
|
||||
codeDataBase.getCodeDao().findCodeByCode(referenceValue)
|
||||
} else {
|
||||
codeDataBase.getCodeDao().findCodeByTranslate(referenceValue)
|
||||
codeResult.clear()
|
||||
when (code) {
|
||||
"\n" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
val referenceValue = referenceResult.toString()
|
||||
val codeInfo = if (translateMode) {
|
||||
codeDataBase.getCodeDao().findCodeByCode(referenceValue)
|
||||
} else {
|
||||
codeDataBase.getCodeDao()
|
||||
.findCodeByTranslate(referenceValue)
|
||||
}
|
||||
if (codeInfo == null) {
|
||||
translationResult.append(referenceResult)
|
||||
} else {
|
||||
translationResult.append(
|
||||
if (translateMode) {
|
||||
codeInfo.translate
|
||||
} else {
|
||||
codeInfo.code
|
||||
}
|
||||
)
|
||||
}
|
||||
DebugHelper.printLog(
|
||||
CodeTranslate.debugKey,
|
||||
"追加引用值[" + referenceValue + "]",
|
||||
"翻译行引用处理"
|
||||
)
|
||||
referenceResult.clear()
|
||||
}
|
||||
if (codeInfo == null) {
|
||||
translationResult.append(referenceResult)
|
||||
codeBlockType = CodeBlockType.Key
|
||||
codeResult.append(code)
|
||||
}
|
||||
"\r" -> {
|
||||
}
|
||||
" ", ",", "(", ")", "=", "%", "{", "}", "+", "*", "/" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(code)
|
||||
} else {
|
||||
translationResult.append(
|
||||
if (translateMode) {
|
||||
codeInfo.translate
|
||||
} else {
|
||||
codeInfo.code
|
||||
}
|
||||
codeResult.append(
|
||||
code
|
||||
)
|
||||
}
|
||||
}
|
||||
":" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(code)
|
||||
} else {
|
||||
if (codeBlockType == CodeBlockType.Key) {
|
||||
codeBlockType =
|
||||
CodeBlockType.Value
|
||||
}
|
||||
codeResult.append(code)
|
||||
}
|
||||
}
|
||||
else -> if (codeBlockType == CodeBlockType.Note) {
|
||||
codeResult.append(code)
|
||||
} else if (codeBlockType == CodeBlockType.Reference) {
|
||||
//资源引用值应该被整体处理
|
||||
DebugHelper.printLog(
|
||||
CodeTranslate.debugKey,
|
||||
"追加引用值[" + referenceValue + "]",
|
||||
"翻译行引用处理"
|
||||
"翻译添加引用值[" + code + "]",
|
||||
"翻译代码处理"
|
||||
)
|
||||
referenceResult.clear()
|
||||
}
|
||||
codeBlockType = CodeBlockType.Key
|
||||
codeResult.append(code)
|
||||
}
|
||||
"\r" -> {
|
||||
}
|
||||
" ", ",", "(", ")", "=", "%", "{", "}", "+", "*", "/" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(code)
|
||||
} else {
|
||||
codeResult.append(
|
||||
code
|
||||
)
|
||||
}
|
||||
}
|
||||
":" -> {
|
||||
if (codeBlockType == CodeBlockType.Reference) {
|
||||
referenceResult.append(code)
|
||||
} else {
|
||||
if (codeBlockType == CodeBlockType.Key) {
|
||||
codeBlockType =
|
||||
CodeBlockType.Value
|
||||
}
|
||||
codeResult.append(code)
|
||||
}
|
||||
}
|
||||
else -> if (codeBlockType == CodeBlockType.Note) {
|
||||
codeResult.append(code)
|
||||
} else if (codeBlockType == CodeBlockType.Reference) {
|
||||
//资源引用值应该被整体处理
|
||||
DebugHelper.printLog(
|
||||
CodeTranslate.debugKey,
|
||||
"翻译添加引用值[" + code + "]",
|
||||
"翻译代码处理"
|
||||
)
|
||||
referenceResult.append(code)
|
||||
} else {
|
||||
if (code.startsWith("#")) {
|
||||
codeBlockType = CodeBlockType.Note
|
||||
codeResult.append(code)
|
||||
} else if (code.startsWith("[") && code.endsWith("]")) {
|
||||
val symbolPosition = code.lastIndexOf("_")
|
||||
if (symbolPosition > 0) {
|
||||
val sectionPrefixName = code.substring(1, symbolPosition)
|
||||
codeResult.append("[")
|
||||
val info = if (translateMode) {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByCode(sectionPrefixName)
|
||||
if (code.startsWith("#")) {
|
||||
codeBlockType = CodeBlockType.Note
|
||||
codeResult.append(code)
|
||||
} else if (code.startsWith("[") && code.endsWith("]")) {
|
||||
val symbolPosition = code.lastIndexOf("_")
|
||||
if (symbolPosition > 0) {
|
||||
val sectionPrefixName = code.substring(1, symbolPosition)
|
||||
codeResult.append("[")
|
||||
val info = if (translateMode) {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByCode(sectionPrefixName)
|
||||
} else {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByTranslate(sectionPrefixName)
|
||||
}
|
||||
if (translateMode) {
|
||||
codeResult.append(
|
||||
info?.translate ?: sectionPrefixName
|
||||
)
|
||||
} else {
|
||||
codeResult.append(
|
||||
info?.code ?: sectionPrefixName
|
||||
)
|
||||
}
|
||||
codeResult.append("_")
|
||||
codeResult.append(code.substring(symbolPosition + 1))
|
||||
} else {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByTranslate(sectionPrefixName)
|
||||
val sectionCode = code.substring(1, code.length - 1)
|
||||
codeResult.append("[")
|
||||
val info = if (translateMode) {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByCode(sectionCode)
|
||||
} else {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByTranslate(sectionCode)
|
||||
}
|
||||
if (translateMode) {
|
||||
codeResult.append(
|
||||
info?.translate ?: sectionCode
|
||||
)
|
||||
} else {
|
||||
codeResult.append(
|
||||
info?.code ?: sectionCode
|
||||
)
|
||||
}
|
||||
codeResult.append("]")
|
||||
}
|
||||
if (translateMode) {
|
||||
codeResult.append(
|
||||
info?.translate ?: sectionPrefixName
|
||||
)
|
||||
} else {
|
||||
codeResult.append(
|
||||
info?.code ?: sectionPrefixName
|
||||
)
|
||||
}
|
||||
codeResult.append("_")
|
||||
codeResult.append(code.substring(symbolPosition + 1))
|
||||
} else {
|
||||
val sectionCode = code.substring(1, code.length - 1)
|
||||
codeResult.append("[")
|
||||
val info = if (translateMode) {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByCode(sectionCode)
|
||||
//翻译代码
|
||||
val codeInfo = if (translateMode) {
|
||||
codeDataBase.getCodeDao().findCodeByCode(code)
|
||||
} else {
|
||||
codeDataBase.getSectionDao()
|
||||
.findSectionInfoByTranslate(sectionCode)
|
||||
codeDataBase.getCodeDao().findCodeByTranslate(code)
|
||||
}
|
||||
if (translateMode) {
|
||||
codeResult.append(
|
||||
info?.translate ?: sectionCode
|
||||
)
|
||||
} else {
|
||||
codeResult.append(
|
||||
info?.code ?: sectionCode
|
||||
)
|
||||
}
|
||||
codeResult.append("]")
|
||||
}
|
||||
} else {
|
||||
//翻译代码
|
||||
val codeInfo = if (translateMode){
|
||||
codeDataBase.getCodeDao().findCodeByCode(code)
|
||||
}else{
|
||||
codeDataBase.getCodeDao().findCodeByTranslate(code)
|
||||
}
|
||||
if (codeInfo == null) {
|
||||
if (code.contains("_")) {
|
||||
val lineParser = LineParser(code)
|
||||
lineParser.symbol = "_"
|
||||
lineParser.analyse(object : LineParserEvent {
|
||||
override fun processingData(
|
||||
lineNum: Int,
|
||||
lineData: String,
|
||||
isEnd: Boolean
|
||||
): Boolean {
|
||||
val temCodeInfo = if (translateMode) {
|
||||
codeDataBase.getCodeDao()
|
||||
.findCodeByCode(lineData.trim())
|
||||
} else {
|
||||
codeDataBase.getCodeDao()
|
||||
.findCodeByTranslate(lineData.trim())
|
||||
}
|
||||
if (temCodeInfo == null) {
|
||||
codeResult.append(lineData)
|
||||
} else {
|
||||
if (translateMode) {
|
||||
codeResult.append(temCodeInfo.translate)
|
||||
if (codeInfo == null) {
|
||||
if (code.contains("_")) {
|
||||
val lineParser = LineParser(code)
|
||||
lineParser.symbol = "_"
|
||||
lineParser.analyse(object : LineParserEvent {
|
||||
override fun processingData(
|
||||
lineNum: Int,
|
||||
lineData: String,
|
||||
isEnd: Boolean
|
||||
): Boolean {
|
||||
val temCodeInfo = if (translateMode) {
|
||||
codeDataBase.getCodeDao()
|
||||
.findCodeByCode(lineData.trim())
|
||||
} else {
|
||||
codeResult.append(temCodeInfo.code)
|
||||
codeDataBase.getCodeDao()
|
||||
.findCodeByTranslate(lineData.trim())
|
||||
}
|
||||
if (temCodeInfo == null) {
|
||||
codeResult.append(lineData)
|
||||
} else {
|
||||
if (translateMode) {
|
||||
codeResult.append(temCodeInfo.translate)
|
||||
} else {
|
||||
codeResult.append(temCodeInfo.code)
|
||||
}
|
||||
}
|
||||
if (!isEnd) {
|
||||
codeResult.append(lineParser.symbol)
|
||||
}
|
||||
return true
|
||||
}
|
||||
if (!isEnd) {
|
||||
codeResult.append(lineParser.symbol)
|
||||
}
|
||||
return true
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
codeResult.append(code)
|
||||
}
|
||||
} else {
|
||||
codeResult.append(code)
|
||||
}
|
||||
} else {
|
||||
//是否需要检查值
|
||||
if (codeBlockType == CodeBlockType.Key) {
|
||||
val type = getValueData(codeInfo.type)
|
||||
val tag = type?.tag
|
||||
if (!tag.isNullOrBlank()) {
|
||||
//如果此类型为特殊标注,那么设置为注释
|
||||
codeBlockType =
|
||||
CodeBlockType.Reference
|
||||
//是否需要检查值
|
||||
if (codeBlockType == CodeBlockType.Key) {
|
||||
val type = getValueData(codeInfo.type)
|
||||
val tag = type?.tag
|
||||
if (!tag.isNullOrBlank()) {
|
||||
//如果此类型为特殊标注,那么设置为注释
|
||||
codeBlockType =
|
||||
CodeBlockType.Reference
|
||||
}
|
||||
}
|
||||
if (translateMode) {
|
||||
codeResult.append(codeInfo.translate)
|
||||
} else {
|
||||
codeResult.append(codeInfo.code)
|
||||
}
|
||||
}
|
||||
if (translateMode)
|
||||
{
|
||||
codeResult.append(codeInfo.translate)
|
||||
}else{
|
||||
codeResult.append(codeInfo.code)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//如果代码不是注释,也不是换行,不是冒号,那么缓存它。
|
||||
if (codeBlockType != CodeBlockType.Note && codeBlockType != CodeBlockType.Reference && code != ":" && code != "\n") {
|
||||
translationMap[code] = codeResult.toString()
|
||||
}
|
||||
translationResult.append(codeResult.toString())
|
||||
DebugHelper.printLog(
|
||||
CodeTranslate.debugKey,
|
||||
"代码[" + code + "]译文[" + codeResult.toString() + "]是否翻译[" + (code != codeResult.toString()) + "]",
|
||||
"翻译"
|
||||
)
|
||||
}
|
||||
//如果代码不是注释,也不是换行,不是冒号,那么缓存它。
|
||||
if (codeBlockType != CodeBlockType.Note && codeBlockType != CodeBlockType.Reference && code != ":" && code != "\n") {
|
||||
translationMap[code] = codeResult.toString()
|
||||
}
|
||||
translationResult.append(codeResult.toString())
|
||||
DebugHelper.printLog(
|
||||
CodeTranslate.debugKey,
|
||||
"代码[" + code + "]译文[" + codeResult.toString() + "]是否翻译[" + (code != codeResult.toString()) + "]",
|
||||
"翻译"
|
||||
)
|
||||
}
|
||||
handler.post {
|
||||
func.invoke(true, translationResult.toString())
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
compileErrorRecord?.invoke(e)
|
||||
e.printStackTrace()
|
||||
handler.post {
|
||||
//第一个布尔值表示是否翻译成功
|
||||
func.invoke(false, e.toString())
|
||||
}
|
||||
}
|
||||
handler.post {
|
||||
func.invoke(translationResult.toString())
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -138,20 +138,20 @@ class CompressionManager private constructor() {
|
|||
}
|
||||
}
|
||||
flag = true
|
||||
} catch (ex: IOException) {
|
||||
} catch (ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
flag = false
|
||||
} finally {
|
||||
}
|
||||
}
|
||||
} catch (ex: IOException) {
|
||||
} catch (ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
flag = false
|
||||
} finally {
|
||||
if (zipFile != null) {
|
||||
try {
|
||||
zipFile.close()
|
||||
} catch (ex: IOException) {
|
||||
} catch (ex: Exception) {
|
||||
flag = false
|
||||
}
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ class CompressionManager private constructor() {
|
|||
if (zipOutputStream != null) {
|
||||
zipOutputStream!!.close()
|
||||
}
|
||||
} catch (e: IOException) {
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
zipOutputStream = null
|
||||
|
|
|
@ -46,7 +46,7 @@ class ModClass(file: File) {
|
|||
*
|
||||
* @return 模组名称
|
||||
*/
|
||||
lateinit var modName: String
|
||||
var modName: String = "Null"
|
||||
private var upDateTime: Long = 0
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,6 +27,9 @@ class TurretSketchpadView(context: Context, attributeSet: AttributeSet? = null)
|
|||
* @return Bitmap
|
||||
*/
|
||||
fun scaleBitmap(bitmap: Bitmap, size: Float): Bitmap? {
|
||||
if (size <= 0) {
|
||||
return null
|
||||
}
|
||||
//创建新的图像背景
|
||||
val matrix = Matrix()
|
||||
matrix.setScale(size, size)
|
||||
|
|
Loading…
Reference in New Issue
Block a user