60 lines
2.5 KiB
Kotlin
60 lines
2.5 KiB
Kotlin
package com.mogo.launcher.lancet
|
||
|
||
import android.content.ComponentName
|
||
import android.content.Context
|
||
import android.content.Intent
|
||
import androidx.annotation.*
|
||
import com.knightboost.lancet.api.Origin
|
||
import com.knightboost.lancet.api.Scope.ALL
|
||
import com.knightboost.lancet.api.Scope.LEAF
|
||
import com.knightboost.lancet.api.annotations.*
|
||
|
||
@Keep
|
||
@Weaver
|
||
@Group("crash_fix")
|
||
class CrashFix {
|
||
|
||
|
||
companion object {
|
||
|
||
/**
|
||
* 修正Android8.0及之后,后台启动Service引起的崩溃
|
||
* java.lang.IllegalStateException: Not allowed to start service Intent {
|
||
* act=com.zhidao.cosupload.service.UPLOAD_ACTION cmp=com.mogo.launcher.f/com.zhidao.cosupload.service.UploadService }: app is in background uid UidRecord{6443b7b u0a404 LAST bg:+1m15s362ms idle change:idle procs:1 seq(0,0,0)}
|
||
*/
|
||
@JvmStatic
|
||
@TargetClass("android.content.Context", scope = ALL)
|
||
@TargetMethod(methodName = "startService")
|
||
@ReplaceInvoke
|
||
fun fixStartServiceCrash(context: Context, intent: Intent): ComponentName? {
|
||
return try {
|
||
return context.startService(intent)
|
||
} catch (t: Throwable) {
|
||
t.printStackTrace()
|
||
null
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* https://console.volcengine.com/apmplus/app/crash/detail/java/bb387ccd9c1a3c6ad2ede4e6f501a5e7?aid=302368&date=%7B%22granularity%22%3A%221h%22%2C%22duration%22%3A%22recently%22%2C%22range%22%3A%221w%22%7D&filters=%7B%22type%22%3A%22and%22%2C%22sub_conditions%22%3A%5B%7B%22dimension%22%3A%22os%22%2C%22op%22%3A%22in%22%2C%22type%22%3A%22expression%22%2C%22values%22%3A%5B%22Android%22%5D%7D%5D%7D&org_id=2100068151&os=Android&page_number=6&status=%5B%22pending%22%2C%22processing%22%2C%22solved%22%2C%22reopen%22%5D
|
||
* java.lang.IllegalArgumentException: Invalid audio buffer size.
|
||
* at android.media.AudioTrack.audioBuffSizeCheck(AudioTrack.java:1857)
|
||
at android.media.AudioTrack.<init>(AudioTrack.java:812)
|
||
at android.media.AudioTrack.<init>(AudioTrack.java:754)
|
||
at android.media.AudioTrack.<init>(AudioTrack.java:708)
|
||
at android.media.AudioTrack.<init>(AudioTrack.java:649)
|
||
at com.aispeech.lite.tts.a.a(SourceFile:70)
|
||
*/
|
||
@Insert
|
||
@TargetClass("com.aispeech.lite.tts.a")
|
||
@TargetMethod(methodName = "a")
|
||
fun fixAiSpeechCrash(context: Context, arg1: Int, arg2: Int) {
|
||
try {
|
||
Origin.callVoid()
|
||
} catch (t: Throwable) {
|
||
t.printStackTrace()
|
||
}
|
||
}
|
||
} |