chenxiaolong / BCR

A Basic Call Recorder for rooted Android devices
GNU General Public License v3.0
1.67k stars 109 forks source link

Cannot build project using Android Studio #580

Closed Kurczaak closed 2 weeks ago

Kurczaak commented 1 month ago

I'm new to Android native development so please assume I might have missed something really basic. I downloaded the project, synchronized gradle files, selected my magisk rooted device and the app installed successfully, yet it keeps stopping and I cannot see anything. I was able to install and run the app using magisk tho. The only problem is when I'm trying to run it using AS. My device is Pixel Pro 7a, running on Android 13 My logcat error:

2024-08-07 10:21:19.944 7631-7631 AndroidRuntime com.chiller3.bcr E FATAL EXCEPTION: main Process: com.chiller3.bcr, PID: 7631 java.lang.ExceptionInInitializerError at com.chiller3.bcr.extension.AudioFormatExtensionsKt.getSAMPLE_RATE_HZ_MIN_COMPAT(AudioFormatExtensions.kt:20) at com.chiller3.bcr.format.WaveFormat.<clinit>(WaveFormat.kt:22) at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:107) at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:103) at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:112) at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:100) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at com.chiller3.bcr.format.Format$Companion.getAll(Format.kt:100) at com.chiller3.bcr.format.Format.<clinit>(Format.kt:120) at com.chiller3.bcr.settings.SettingsFragment.refreshOutputFormat(SettingsFragment.kt:125) at com.chiller3.bcr.settings.SettingsFragment.onCreatePreferences(SettingsFragment.kt:84) at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3095) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:516) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:274) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1998) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1941) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3206) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3116) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1543) at android.app.Activity.performStart(Activity.java:8367) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3669) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:224) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:204) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7918) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused by: java.lang.NoSuchFieldException: No field SAMPLE_RATE_HZ_MIN in class Landroid/media/AudioFormat; (declaration of 'android.media.AudioFormat' appears in /system/framework/framework.jar!classes2.dex) at java.lang.Class.getDeclaredField(Native Method) at com.chiller3.bcr.extension.AudioFormatExtensionsKt.<clinit>(AudioFormatExtensions.kt:21) at com.chiller3.bcr.extension.AudioFormatExtensionsKt.getSAMPLE_RATE_HZ_MIN_COMPAT(AudioFormatExtensions.kt:20)  at com.chiller3.bcr.format.WaveFormat.<clinit>(WaveFormat.kt:22)  at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:107)  at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:103)  at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:112)  at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:100)  at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)  at com.chiller3.bcr.format.Format$Companion.getAll(Format.kt:100)  at com.chiller3.bcr.format.Format.<clinit>(Format.kt:120)  at com.chiller3.bcr.settings.SettingsFragment.refreshOutputFormat(SettingsFragment.kt:125)  at com.chiller3.bcr.settings.SettingsFragment.onCreatePreferences(SettingsFragment.kt:84)  at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161)  at androidx.fragment.app.Fragment.performCreate(Fragment.java:3095)  at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:516)  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:274)  at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103)  at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1998)  at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1941)  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3206)  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3116)  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350)  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1543)  at android.app.Activity.performStart(Activity.java:8367)  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3669)  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:224)  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:204)  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loopOnce(Looper.java:201)  at android.os.Looper.loop(Looper.java:288)  at android.app.ActivityThread.main(ActivityThread.java:7918)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)  2024-08-07 10:21:19.947 7631-7631 OutputDirUtils com.chiller3.bcr D Creating crash.log with MIME type text/plain in file:///storage/emulated/0/Android/data/com.chiller3.bcr/files 2024-08-07 10:21:19.958 7631-7631 RecorderApplication com.chiller3.bcr E Saving logcat to file:///storage/emulated/0/Android/data/com.chiller3.bcr/files/crash.log.txt due to uncaught exception in Thread[main,5,main] java.lang.ExceptionInInitializerError at com.chiller3.bcr.extension.AudioFormatExtensionsKt.getSAMPLE_RATE_HZ_MIN_COMPAT(AudioFormatExtensions.kt:20) at com.chiller3.bcr.format.WaveFormat.<clinit>(WaveFormat.kt:22) at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:107) at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:103) at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:112) at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:100) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at com.chiller3.bcr.format.Format$Companion.getAll(Format.kt:100) at com.chiller3.bcr.format.Format.<clinit>(Format.kt:120) at com.chiller3.bcr.settings.SettingsFragment.refreshOutputFormat(SettingsFragment.kt:125) at com.chiller3.bcr.settings.SettingsFragment.onCreatePreferences(SettingsFragment.kt:84) at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3095) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:516) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:274) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1998) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1941) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3206) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3116) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1543) at android.app.Activity.performStart(Activity.java:8367) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3669) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:224) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:204) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7918) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused by: java.lang.NoSuchFieldException: No field SAMPLE_RATE_HZ_MIN in class Landroid/media/AudioFormat; (declaration of 'android.media.AudioFormat' appears in /system/framework/framework.jar!classes2.dex) at java.lang.Class.getDeclaredField(Native Method) at com.chiller3.bcr.extension.AudioFormatExtensionsKt.<clinit>(AudioFormatExtensions.kt:21) at com.chiller3.bcr.extension.AudioFormatExtensionsKt.getSAMPLE_RATE_HZ_MIN_COMPAT(AudioFormatExtensions.kt:20)  at com.chiller3.bcr.format.WaveFormat.<clinit>(WaveFormat.kt:22)  at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:107)  at com.chiller3.bcr.format.Format$Companion$all$2$4.invoke(Format.kt:103)  at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:112)  at com.chiller3.bcr.format.Format$Companion$all$2.invoke(Format.kt:100)  at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)  at com.chiller3.bcr.format.Format$Companion.getAll(Format.kt:100)  at com.chiller3.bcr.format.Format.<clinit>(Format.kt:120)  at com.chiller3.bcr.settings.SettingsFragment.refreshOutputFormat(SettingsFragment.kt:125)  at com.chiller3.bcr.settings.SettingsFragment.onCreatePreferences(SettingsFragment.kt:84)  at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161)  at androidx.fragment.app.Fragment.performCreate(Fragment.java:3095)  at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:516)  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:274)  at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103)  at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1998)  at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1941)  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3206)  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3116)  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350)  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1543)  at android.app.Activity.performStart(Activity.java:8367)  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3669)  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:224)  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:204)  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2306)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loopOnce(Looper.java:201)  at android.os.Looper.loop(Looper.java:288)  at android.app.ActivityThread.main(ActivityThread.java:7918)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

chenxiaolong commented 1 month ago

Just to make sure: did you already build the Magisk module with ./gradlew zipDebug and flash that? You can't run from Android Studio without already having the module installed.