diff --git a/lib/android/app/build.gradle b/lib/android/app/build.gradle index 5abc5ac36bc..9d9e3689d5f 100644 --- a/lib/android/app/build.gradle +++ b/lib/android/app/build.gradle @@ -12,9 +12,9 @@ def safeExtGetFallbackLowerBound(prop, fallback) { Math.max(safeExtGet(prop,fallback),fallback) } -def DEFAULT_COMPILE_SDK_VERSION = 30 +def DEFAULT_COMPILE_SDK_VERSION = 33 def DEFAULT_MIN_SDK_VERSION = 21 -def DEFAULT_TARGET_SDK_VERSION = 30 +def DEFAULT_TARGET_SDK_VERSION = 33 def DEFAULT_KOTLIN_VERSION = "1.5.31" def DEFAULT_KOTLIN_STDLIB = 'kotlin-stdlib-jdk8' def kotlinVersion = safeExtGet("RNNKotlinVersion", DEFAULT_KOTLIN_VERSION) @@ -22,7 +22,7 @@ def kotlinStdlib = safeExtGet('RNNKotlinStdlib',DEFAULT_KOTLIN_STDLIB ) def kotlinCoroutinesCore = safeExtGet('RNNKotlinCoroutinesCore', '1.5.2') android { compileSdkVersion safeExtGetFallbackLowerBound('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION) - + buildToolsVersion = "33.0.0" defaultConfig { minSdkVersion safeExtGetFallbackLowerBound('minSdkVersion', DEFAULT_MIN_SDK_VERSION) targetSdkVersion safeExtGetFallbackLowerBound('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION) @@ -167,6 +167,27 @@ List reactNativeVersionComponents(rnPackageJsonFile) { return reactNativeVersion.tokenize('-')[0].tokenize('.') } +task installBuildToolsAndRenameD8IfNeeded { + def buildToolsVersion = android.getBuildToolsVersion() + def sdkDir = android.sdkDirectory + def buildToolsDir = new File(sdkDir, "/build-tools/" + buildToolsVersion) + + if (!buildToolsDir.exists()) { + def command = sdkDir.absolutePath + "/cmdline-tools/latest/bin/sdkmanager build-tools;" + buildToolsVersion + command.execute().waitForProcessOutput(System.out, System.err) + } + + def d8File = new File(buildToolsDir, "d8") + def dxFile = new File(buildToolsDir, "dx") + d8File.renameTo(dxFile) + + def buildToolsLibDir = new File(buildToolsDir, "lib") + d8File = new File(buildToolsLibDir, "d8.jar") + dxFile = new File(buildToolsLibDir, "dx.jar") + d8File.renameTo(dxFile) +} +build.dependsOn installBuildToolsAndRenameD8IfNeeded + dependencies { implementation "androidx.core:core-ktx:1.6.0" diff --git a/lib/android/app/src/main/AndroidManifest.xml b/lib/android/app/src/main/AndroidManifest.xml index 283e26746d1..c4e028de80e 100644 --- a/lib/android/app/src/main/AndroidManifest.xml +++ b/lib/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,9 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.reactnativenavigation"> - + diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java b/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java index 121b64e876a..226d3bf64b1 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java @@ -22,6 +22,7 @@ import com.reactnativenavigation.viewcontrollers.modal.ModalStack; import com.reactnativenavigation.viewcontrollers.navigator.Navigator; +import androidx.activity.OnBackPressedCallback; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -47,6 +48,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { ); navigator.bindViews(); getReactGateway().onActivityCreated(this); + setBackPressedCallback(); } @Override @@ -103,11 +105,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { getReactGateway().onActivityResult(this, requestCode, resultCode, data); } - @Override - public void onBackPressed() { - getReactGateway().onBackPressed(); - } - @Override public boolean onKeyUp(final int keyCode, final KeyEvent event) { return getReactGateway().onKeyUp(this, keyCode) || super.onKeyUp(keyCode, event); @@ -152,4 +149,14 @@ protected void addDefaultSplashLayout() { public void onCatalystInstanceDestroy() { runOnUiThread(() -> navigator.destroyViews()); } + + private void setBackPressedCallback() { + OnBackPressedCallback callback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + getReactGateway().onBackPressed(); + } + }; + getOnBackPressedDispatcher().addCallback(this, callback); + } } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt index 78fb25d47e4..7fd4637a2d3 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +++ b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt @@ -74,7 +74,7 @@ open class ButtonPresenter(private val context: Context, private val button: But private fun applyAccessibilityLabel(menuItem: MenuItem) { if (button.accessibilityLabel.hasValue()) { if (button.component.hasValue()) { - menuItem.actionView.contentDescription = button.accessibilityLabel.get() + menuItem.actionView?.contentDescription = button.accessibilityLabel.get() } else { MenuItemCompat.setContentDescription(menuItem, button.accessibilityLabel.get()) } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/views/animations/BaseViewAnimator.kt b/lib/android/app/src/main/java/com/reactnativenavigation/views/animations/BaseViewAnimator.kt index 8d6c25607d3..c30fcad0c75 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/views/animations/BaseViewAnimator.kt +++ b/lib/android/app/src/main/java/com/reactnativenavigation/views/animations/BaseViewAnimator.kt @@ -43,17 +43,17 @@ open class BaseViewAnimator( private inner class AnimatorListener(private val startState: AnimationState, private val endVisibility: Int) : AnimatorListenerAdapter() { var isCancelled = false - override fun onAnimationStart(animation: Animator?) { + override fun onAnimationStart(animation: Animator) { view.resetViewProperties() view.visibility = View.VISIBLE animationState = startState } - override fun onAnimationCancel(animation: Animator?) { + override fun onAnimationCancel(animation: Animator) { isCancelled = true } - override fun onAnimationEnd(animation: Animator?) { + override fun onAnimationEnd(animation: Animator) { if (!isCancelled) { animationState = AnimationState.Idle view.visibility = endVisibility diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt b/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt index a469d4c404c..3b81252cb09 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt +++ b/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt @@ -68,17 +68,15 @@ class IconBackgroundDrawable( super.setBounds(r) } - override fun onBoundsChange(bounds: Rect?) { - if (bounds != null) { - backgroundRect = Rect((bounds.width() - backgroundWidth) / 2, - (bounds.height() - backgroundHeight) / 2, - bounds.width() - (bounds.width() - backgroundWidth) / 2, - bounds.height() - (bounds.height() - backgroundHeight) / 2) - bitmapRect = Rect((bounds.width() - bitmapWidth) / 2, - (bounds.height() - bitmapHeight) / 2, - bounds.width() - (bounds.width() - bitmapWidth) / 2, - bounds.height() - (bounds.height() - bitmapHeight) / 2) - } + override fun onBoundsChange(bounds: Rect) { + backgroundRect = Rect((bounds.width() - backgroundWidth) / 2, + (bounds.height() - backgroundHeight) / 2, + bounds.width() - (bounds.width() - backgroundWidth) / 2, + bounds.height() - (bounds.height() - backgroundHeight) / 2) + bitmapRect = Rect((bounds.width() - bitmapWidth) / 2, + (bounds.height() - bitmapHeight) / 2, + bounds.width() - (bounds.width() - bitmapWidth) / 2, + bounds.height() - (bounds.height() - bitmapHeight) / 2) super.onBoundsChange(bounds) } diff --git a/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java b/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java index 55d7bb0485b..8074511d632 100644 --- a/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +++ b/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java @@ -15,9 +15,4 @@ public ReactGateway getReactGateway() { public void setNavigator(Navigator navigator) { this.navigator = navigator; } - - @Override - public void onBackPressed() { - super.onBackPressed(); - } } diff --git a/lib/android/build.gradle b/lib/android/build.gradle index e9a3e8a4158..f50281142e7 100644 --- a/lib/android/build.gradle +++ b/lib/android/build.gradle @@ -3,6 +3,7 @@ buildscript { ext { RNNKotlinVersion = '1.4.31' + appCompatVersion = '1.6.0-alpha05' } repositories { diff --git a/package.json b/package.json index 2a7781f6f4c..82233353be3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-navigation", - "version": "7.30.0-alpha", + "version": "7.30.0-alpha.1", "description": "React Native Navigation - truly native navigation for iOS and Android", "license": "MIT", "nativePackage": true, diff --git a/playground/android/build.gradle b/playground/android/build.gradle index 79f2f68dfbd..c5b0081fa97 100644 --- a/playground/android/build.gradle +++ b/playground/android/build.gradle @@ -5,10 +5,10 @@ buildscript { kotlinVersion = "1.5.31" RNNKotlinVersion = kotlinVersion detoxKotlinVersion = kotlinVersion - compileSdkVersion = 30 - buildToolsVersion = "30.0.2" + compileSdkVersion = 33 + buildToolsVersion = "33.0.0" minSdkVersion = 21 - targetSdkVersion = 30 + targetSdkVersion = 33 } repositories {