diff --git a/android/build.gradle b/android/build.gradle index 2613aecca..250ad3e2c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' android { compileSdkVersion appAndroidCompileSDK @@ -57,7 +58,7 @@ android { configurations { natives } dependencies { - implementation 'com.github.RohitSurwase.UCE-Handler:uce_handler:1.4' + implementation 'cat.ereza:customactivityoncrash:2.3.0' implementation project(':core') implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" @@ -71,6 +72,7 @@ dependencies { natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64" implementation "com.badlogicgames.gdx-controllers:gdx-controllers-android:$gdxControllersVersion" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } // called every time gradle gets executed, takes the native dependencies of @@ -96,4 +98,7 @@ task copyAndroidNatives() { } } } +} +repositories { + mavenCentral() } \ No newline at end of file diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java index 0a7a5bd0f..e3962e434 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java @@ -33,7 +33,6 @@ import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.badlogic.gdx.backends.android.AndroidAudio; import com.badlogic.gdx.backends.android.AsynchronousAndroidAudio; -import com.rohitss.uceh.UCEHandler; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.services.news.News; @@ -85,9 +84,6 @@ public class AndroidGame extends AndroidApplication { // this is the default prefs filename given to an android app (.xml is automatically added to it) SPDSettings.set(instance.getPreferences("ShatteredPixelDungeon")); - UCEHandler.Builder builder = new UCEHandler.Builder(this); - builder.build(); - } else { instance = this; } diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/GameApplication.kt b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/GameApplication.kt new file mode 100644 index 000000000..8ffbf9577 --- /dev/null +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/GameApplication.kt @@ -0,0 +1,34 @@ +package com.shatteredpixel.shatteredpixeldungeon.android; + +import android.app.Application +import android.content.Context +import cat.ereza.customactivityoncrash.config.CaocConfig + +class GameApplication : Application() { + +// companion object { +// val appId = "61853bf9e0f9bb492b4f7eba" +// val channel = "Umeng" +// } + override fun onCreate() { + super.onCreate() +// UMConfigure.preInit(this, appId, channel) + CaocConfig.Builder.create() + .backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) //default: CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM + .enabled(true) //default: true + .backgroundMode(CaocConfig.BACKGROUND_MODE_CRASH) //default: CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM + .enabled(true) //default: true + .backgroundMode(CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM) //default: CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM + .enabled(true) //default: true + .showErrorDetails(true) //default: true + .showRestartButton(true) //default: true + .logErrorOnRestart(true) //default: true + .trackActivities(false) //default: false + .minTimeBetweenCrashesMs(2000) //default: 3000 + //.errorDrawable(R.drawable.customactivityoncrash_error_image) //default: bug image + // + .apply() + } + + +} \ No newline at end of file diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml new file mode 100644 index 000000000..c746aab3b --- /dev/null +++ b/android/src/main/res/values/strings.xml @@ -0,0 +1,13 @@ + + + 魔绫的像素地牢 + 魔绫的像素地牢发生了意外的崩溃,\n\n请点击下方错误日志查看错误详情 + 重启应用程序 + 退出应用程序 + 错误日志 + 错误日志 + 关闭 + 复制错误日志 + 错误日志已经复制到你的剪贴板 + 错误信息 + diff --git a/build.gradle b/build.gradle index ededd8c2a..5da1b6cfe 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,12 @@ buildscript { + ext.kotlin_version = '1.5.20' repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven{ url 'https://maven.aliyun.com/repository/jcenter'} } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java index 2fba78989..93c1572ce 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java @@ -28,17 +28,17 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.QuickSlot; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.ArmorAbility; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.huntress.NaturesPower; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.huntress.SpiritHawk; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.huntress.SpectralBlades; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage.WildMagic; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage.WarpBeacon; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.huntress.SpiritHawk; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage.ElementalBlast; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage.WarpBeacon; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage.WildMagic; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.rogue.DeathMark; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.rogue.ShadowClone; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.rogue.SmokeBomb; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.warrior.Endure; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.warrior.HeroicLeap; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.warrior.Shockwave; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.warrior.Endure; import com.shatteredpixel.shatteredpixeldungeon.items.BrokenSeal; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Waterskin; @@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows; import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch; import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; +import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame; @@ -55,7 +56,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRage; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; -import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfDivination; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger; @@ -93,7 +93,9 @@ public enum HeroClass { new VelvetPouch().collect(); Dungeon.LimitedDrops.VELVET_POUCH.drop(); - + if (DeviceCompat.isDebug()){ + new MeatPie().quantity(100).identify().collect(); + } Waterskin waterskin = new Waterskin(); waterskin.collect();