~repos /only-bible-app
git clone
https://pyrossh.dev/repos/only-bible-app.git
Discussions:
https://groups.google.com/g/rust-embed-devs
The only bible app you will ever need. No ads. No in-app purchases. No distractions.
b9339f06
—
Peter John 1 year ago
add signingConfigs
.gitignore
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
*.iml
|
|
2
2
|
.gradle
|
|
3
|
+
.kotlin
|
|
3
4
|
/local.properties
|
|
4
5
|
/.idea/caches
|
|
5
6
|
/.idea/libraries
|
|
@@ -9,7 +10,10 @@
|
|
|
9
10
|
/.idea/assetWizardSettings.xml
|
|
10
11
|
.DS_Store
|
|
11
12
|
/build
|
|
13
|
+
/app/release
|
|
12
14
|
/captures
|
|
13
15
|
.externalNativeBuild
|
|
14
16
|
.cxx
|
|
15
17
|
local.properties
|
|
18
|
+
keystore.properties
|
|
19
|
+
upload-keystore.jks
|
.idea/deploymentTargetSelector.xml
CHANGED
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
<SelectionState runConfigName="PreviewAlignStart">
|
|
17
17
|
<option name="selectionMode" value="DROPDOWN" />
|
|
18
18
|
</SelectionState>
|
|
19
|
+
<SelectionState runConfigName="app-release">
|
|
20
|
+
<option name="selectionMode" value="DROPDOWN" />
|
|
21
|
+
</SelectionState>
|
|
19
22
|
</selectionStates>
|
|
20
23
|
</component>
|
|
21
24
|
</project>
|
.idea/runConfigurations/app.xml
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
|
2
|
+
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
|
|
3
|
+
<module name="BibleApp.app.main" />
|
|
4
|
+
<option name="DEPLOY" value="true" />
|
|
5
|
+
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
|
|
6
|
+
<option name="DEPLOY_AS_INSTANT" value="false" />
|
|
7
|
+
<option name="ARTIFACT_NAME" value="" />
|
|
8
|
+
<option name="PM_INSTALL_OPTIONS" value="" />
|
|
9
|
+
<option name="ALL_USERS" value="false" />
|
|
10
|
+
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
|
|
11
|
+
<option name="CLEAR_APP_STORAGE" value="false" />
|
|
12
|
+
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
|
13
|
+
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
|
14
|
+
<option name="MODE" value="default_activity" />
|
|
15
|
+
<option name="CLEAR_LOGCAT" value="false" />
|
|
16
|
+
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
|
|
17
|
+
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
|
|
18
|
+
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
|
19
|
+
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
|
20
|
+
<option name="DEBUGGER_TYPE" value="Auto" />
|
|
21
|
+
<Auto>
|
|
22
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
23
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
24
|
+
<option name="WORKING_DIR" value="" />
|
|
25
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
26
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
27
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
28
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
29
|
+
</Auto>
|
|
30
|
+
<Hybrid>
|
|
31
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
32
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
33
|
+
<option name="WORKING_DIR" value="" />
|
|
34
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
35
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
36
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
37
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
38
|
+
</Hybrid>
|
|
39
|
+
<Java>
|
|
40
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
41
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
42
|
+
</Java>
|
|
43
|
+
<Native>
|
|
44
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
45
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
46
|
+
<option name="WORKING_DIR" value="" />
|
|
47
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
48
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
49
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
50
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
51
|
+
</Native>
|
|
52
|
+
<Profilers>
|
|
53
|
+
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
|
|
54
|
+
<option name="STARTUP_PROFILING_ENABLED" value="false" />
|
|
55
|
+
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
|
|
56
|
+
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
|
|
57
|
+
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
|
|
58
|
+
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
|
|
59
|
+
</Profilers>
|
|
60
|
+
<option name="DEEP_LINK" value="" />
|
|
61
|
+
<option name="ACTIVITY_CLASS" value="" />
|
|
62
|
+
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
|
|
63
|
+
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
|
|
64
|
+
<method v="2">
|
|
65
|
+
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
|
|
66
|
+
</method>
|
|
67
|
+
</configuration>
|
|
68
|
+
</component>
|
.idea/runConfigurations/app_release.xml
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
|
2
|
+
<configuration default="false" name="app-release" type="AndroidRunConfigurationType" factoryName="Android App">
|
|
3
|
+
<module name="BibleApp.app.main" />
|
|
4
|
+
<option name="DEPLOY" value="true" />
|
|
5
|
+
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
|
|
6
|
+
<option name="DEPLOY_AS_INSTANT" value="false" />
|
|
7
|
+
<option name="ARTIFACT_NAME" value="" />
|
|
8
|
+
<option name="PM_INSTALL_OPTIONS" value="" />
|
|
9
|
+
<option name="ALL_USERS" value="false" />
|
|
10
|
+
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
|
|
11
|
+
<option name="CLEAR_APP_STORAGE" value="false" />
|
|
12
|
+
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
|
13
|
+
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
|
14
|
+
<option name="MODE" value="default_activity" />
|
|
15
|
+
<option name="CLEAR_LOGCAT" value="false" />
|
|
16
|
+
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
|
|
17
|
+
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
|
|
18
|
+
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
|
19
|
+
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
|
20
|
+
<option name="DEBUGGER_TYPE" value="Auto" />
|
|
21
|
+
<Auto>
|
|
22
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
23
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
24
|
+
<option name="WORKING_DIR" value="" />
|
|
25
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
26
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
27
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
28
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
29
|
+
</Auto>
|
|
30
|
+
<Hybrid>
|
|
31
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
32
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
33
|
+
<option name="WORKING_DIR" value="" />
|
|
34
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
35
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
36
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
37
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
38
|
+
</Hybrid>
|
|
39
|
+
<Java>
|
|
40
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
41
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
42
|
+
</Java>
|
|
43
|
+
<Native>
|
|
44
|
+
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
|
|
45
|
+
<option name="SHOW_STATIC_VARS" value="true" />
|
|
46
|
+
<option name="WORKING_DIR" value="" />
|
|
47
|
+
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
|
48
|
+
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
|
|
49
|
+
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
|
|
50
|
+
<option name="DEBUG_SANDBOX_SDK" value="false" />
|
|
51
|
+
</Native>
|
|
52
|
+
<Profilers>
|
|
53
|
+
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
|
|
54
|
+
<option name="STARTUP_PROFILING_ENABLED" value="false" />
|
|
55
|
+
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
|
|
56
|
+
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
|
|
57
|
+
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
|
|
58
|
+
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
|
|
59
|
+
</Profilers>
|
|
60
|
+
<option name="DEEP_LINK" value="" />
|
|
61
|
+
<option name="ACTIVITY_CLASS" value="" />
|
|
62
|
+
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
|
|
63
|
+
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
|
|
64
|
+
<method v="2">
|
|
65
|
+
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
|
|
66
|
+
</method>
|
|
67
|
+
</configuration>
|
|
68
|
+
</component>
|
app/build.gradle.kts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
|
|
1
2
|
import com.android.build.gradle.tasks.asJavaVersion
|
|
3
|
+
import java.io.FileInputStream
|
|
4
|
+
import java.util.Properties
|
|
5
|
+
|
|
6
|
+
val keystorePropertiesFile = rootProject.file("keystore.properties")
|
|
7
|
+
val keystoreProperties = Properties()
|
|
8
|
+
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
|
|
2
9
|
|
|
3
10
|
plugins {
|
|
4
11
|
alias(libs.plugins.android.application)
|
|
@@ -15,7 +22,7 @@ android {
|
|
|
15
22
|
|
|
16
23
|
defaultConfig {
|
|
17
24
|
applicationId = "dev.pyrossh.onlyBible"
|
|
18
|
-
minSdk =
|
|
25
|
+
minSdk = 32
|
|
19
26
|
targetSdk = 34
|
|
20
27
|
versionCode = 1
|
|
21
28
|
versionName = "1.0"
|
|
@@ -26,9 +33,20 @@ android {
|
|
|
26
33
|
}
|
|
27
34
|
}
|
|
28
35
|
|
|
36
|
+
signingConfigs {
|
|
37
|
+
create("release") {
|
|
38
|
+
keyAlias = keystoreProperties["keyAlias"] as String
|
|
39
|
+
keyPassword = keystoreProperties["keyPassword"] as String
|
|
40
|
+
storeFile = file(keystoreProperties["storeFile"] as String)
|
|
41
|
+
storePassword = keystoreProperties["storePassword"] as String
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
29
45
|
buildTypes {
|
|
30
46
|
release {
|
|
47
|
+
signingConfig = signingConfigs.getByName("release")
|
|
31
|
-
isMinifyEnabled =
|
|
48
|
+
isMinifyEnabled = true
|
|
49
|
+
isShrinkResources = true
|
|
32
50
|
proguardFiles(
|
|
33
51
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
34
52
|
"proguard-rules.pro"
|
|
@@ -36,8 +54,8 @@ android {
|
|
|
36
54
|
}
|
|
37
55
|
}
|
|
38
56
|
compileOptions {
|
|
39
|
-
sourceCompatibility = JavaLanguageVersion.of(
|
|
57
|
+
sourceCompatibility = JavaLanguageVersion.of(17).asJavaVersion()
|
|
40
|
-
targetCompatibility = JavaLanguageVersion.of(
|
|
58
|
+
targetCompatibility = JavaLanguageVersion.of(17).asJavaVersion()
|
|
41
59
|
}
|
|
42
60
|
buildFeatures {
|
|
43
61
|
compose = true
|
|
@@ -49,7 +67,7 @@ android {
|
|
|
49
67
|
}
|
|
50
68
|
}
|
|
51
69
|
kotlinOptions {
|
|
52
|
-
jvmTarget = JavaLanguageVersion.of(
|
|
70
|
+
jvmTarget = JavaLanguageVersion.of(17).toString()
|
|
53
71
|
}
|
|
54
72
|
androidResources {
|
|
55
73
|
generateLocaleConfig = true
|
app/src/main/AndroidManifest.xml
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
3
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
|
4
|
+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
3
5
|
<application
|
|
4
6
|
android:allowBackup="true"
|
|
5
7
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
app/src/main/java/dev/pyrossh/onlyBible/AppHost.kt
CHANGED
|
@@ -9,19 +9,20 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|
|
9
9
|
import androidx.compose.material3.CircularProgressIndicator
|
|
10
10
|
import androidx.compose.runtime.Composable
|
|
11
11
|
import androidx.compose.runtime.SideEffect
|
|
12
|
+
import androidx.compose.runtime.collectAsState
|
|
13
|
+
import androidx.compose.runtime.getValue
|
|
12
14
|
import androidx.compose.ui.Alignment
|
|
13
15
|
import androidx.compose.ui.Modifier
|
|
14
16
|
import androidx.compose.ui.draw.alpha
|
|
15
|
-
import androidx.lifecycle.viewmodel.compose.viewModel
|
|
16
17
|
import androidx.navigation.compose.NavHost
|
|
17
18
|
import androidx.navigation.compose.composable
|
|
18
19
|
import androidx.navigation.compose.rememberNavController
|
|
19
20
|
import androidx.navigation.toRoute
|
|
20
|
-
import dev.pyrossh.onlyBible.domain.Verse
|
|
21
21
|
|
|
22
22
|
@Composable
|
|
23
23
|
fun AppHost(model: AppViewModel) {
|
|
24
24
|
val navController = rememberNavController()
|
|
25
|
+
val verses by model.verses.collectAsState()
|
|
25
26
|
val navigateToChapter = { props: ChapterScreenProps ->
|
|
26
27
|
model.resetScrollState()
|
|
27
28
|
navController.navigate(props)
|
|
@@ -76,7 +77,7 @@ fun AppHost(model: AppViewModel) {
|
|
|
76
77
|
if (model.isLoading) it.alpha(0.5f) else it
|
|
77
78
|
}
|
|
78
79
|
) {
|
|
79
|
-
if (
|
|
80
|
+
if (verses.isNotEmpty()) {
|
|
80
81
|
AppDrawer(model = model, navigateToChapter = navigateToChapter) { openDrawer ->
|
|
81
82
|
NavHost(
|
|
82
83
|
navController = navController,
|
|
@@ -90,14 +91,13 @@ fun AppHost(model: AppViewModel) {
|
|
|
90
91
|
tween(400),
|
|
91
92
|
)
|
|
92
93
|
},
|
|
93
|
-
|
|
94
|
+
exitTransition = {
|
|
94
|
-
// fadeOut()
|
|
95
|
-
|
|
95
|
+
val props = this.targetState.toRoute<ChapterScreenProps>()
|
|
96
|
-
|
|
96
|
+
slideOutOfContainer(
|
|
97
|
-
|
|
97
|
+
Dir.valueOf(props.dir).slideDirection(),
|
|
98
|
-
|
|
98
|
+
tween(400),
|
|
99
|
-
|
|
99
|
+
)
|
|
100
|
-
|
|
100
|
+
},
|
|
101
101
|
popEnterTransition = {
|
|
102
102
|
slideIntoContainer(
|
|
103
103
|
AnimatedContentTransitionScope.SlideDirection.Right,
|