diff --git a/AppSearchSample/app/build.gradle b/AppSearchSample/app/build.gradle
index dcab3ee..db3875a 100644
--- a/AppSearchSample/app/build.gradle
+++ b/AppSearchSample/app/build.gradle
@@ -16,22 +16,23 @@
plugins {
id 'com.android.application'
- id 'kotlin-android'
- id 'kotlin-kapt'
+ id 'org.jetbrains.kotlin.android'
}
+apply plugin: 'kotlin-kapt'
+
android {
- namespace 'com.android.example.appsearchsample'
- compileSdkVersion 31
- buildToolsVersion "30.0.3"
+ namespace "com.android.example.appsearchsample"
+ compileSdk 33
defaultConfig {
applicationId "com.android.example.appsearchsample"
- minSdkVersion 14
- targetSdkVersion 31
+ minSdk 33
+ targetSdk 33
versionCode 1
versionName "1.0"
- multiDexEnabled = true
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -41,11 +42,11 @@ android {
}
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = '1.8'
+ jvmTarget = '17'
}
buildFeatures {
viewBinding true
@@ -53,23 +54,21 @@ android {
}
dependencies {
- def appsearch_version = "1.0.0-alpha03"
+ kapt 'androidx.appsearch:appsearch-compiler:1.1.0-alpha03'
- // AppSearch dependencies
- implementation "androidx.appsearch:appsearch:$appsearch_version"
- implementation "androidx.appsearch:appsearch-local-storage:$appsearch_version"
- implementation "androidx.appsearch:appsearch-platform-storage:$appsearch_version"
- kapt "androidx.appsearch:appsearch-compiler:$appsearch_version"
+ //api 'androidx.annotation:annotation:1.6.0'
+ implementation 'androidx.appsearch:appsearch:1.1.0-alpha03'
+ implementation 'androidx.appsearch:appsearch-local-storage:1.1.0-alpha03'
+ implementation 'androidx.appsearch:appsearch-platform-storage:1.1.0-alpha03'
- implementation 'androidx.activity:activity-ktx:1.3.1'
- implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'androidx.core:core-ktx:1.8.0'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.concurrent:concurrent-futures-ktx:1.1.0'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
- implementation 'androidx.core:core-ktx:1.6.0'
- implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
- implementation 'androidx.multidex:multidex:2.0.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
-}
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.5.2'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.5.2'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+}
\ No newline at end of file
diff --git a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/MainActivity.kt b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/MainActivity.kt
index b9e628b..9ae17d5 100644
--- a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/MainActivity.kt
+++ b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/MainActivity.kt
@@ -135,11 +135,14 @@ class MainActivity : AppCompatActivity() {
val addNoteDialogView = dialog as AlertDialog
val noteEditText =
addNoteDialogView.findViewById(R.id.add_note_text) as EditText?
+ val noteEditTitle =
+ addNoteDialogView.findViewById(R.id.add_note_title) as EditText?
val noteText = noteEditText?.text.toString()
+ val noteTitle = noteEditTitle?.text.toString()
progressSpinner.visibility = View.VISIBLE
noNotesMessage.visibility = View.GONE
notesList.visibility = View.GONE
- noteViewModel.addNote(noteText)
+ noteViewModel.addNote(noteText, noteTitle)
}
.setNegativeButton(R.string.add_note_dialog_cancel) { dialog, _ ->
dialog.cancel()
diff --git a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/NoteListItemAdapter.kt b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/NoteListItemAdapter.kt
index dab6ecd..e83d51a 100644
--- a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/NoteListItemAdapter.kt
+++ b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/NoteListItemAdapter.kt
@@ -54,6 +54,7 @@ class NoteListItemAdapter(private val onDelete: (SearchResult?) -> Unit) :
view: View,
) : RecyclerView.ViewHolder(view) {
val noteTextView: TextView = view.findViewById(R.id.note_text)
+ val noteTitleView: TextView = view.findViewById(R.id.note_title)
val noteDeleteButtonView: Button = view.findViewById(R.id.note_delete_button)
fun bind(searchResult: SearchResult, onDelete: (SearchResult?) -> Unit) {
@@ -69,6 +70,7 @@ class NoteListItemAdapter(private val onDelete: (SearchResult?) -> Unit) :
}
noteTextView.text = stringBuilder
+ noteTitleView.text = note.title
noteDeleteButtonView.setOnClickListener { onDelete(searchResult) }
}
diff --git a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/Note.kt b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/Note.kt
index fb548db..d092395 100644
--- a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/Note.kt
+++ b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/Note.kt
@@ -41,5 +41,11 @@ data class Note(
@Document.StringProperty(
indexingType = AppSearchSchema.StringPropertyConfig.INDEXING_TYPE_PREFIXES
)
- val text: String
+ val text: String,
+
+ /** Field for a note title that that user inputs */
+ @Document.StringProperty(
+ indexingType = AppSearchSchema.StringPropertyConfig.INDEXING_TYPE_PREFIXES
+ )
+ val title: String
)
diff --git a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/NoteViewModel.kt b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/NoteViewModel.kt
index f0ba602..0f2c70a 100644
--- a/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/NoteViewModel.kt
+++ b/AppSearchSample/app/src/main/java/com/android/example/appsearchsample/model/NoteViewModel.kt
@@ -53,13 +53,13 @@ class NoteViewModel(application: Application) : AndroidViewModel(application) {
*
* @param text text to create [Note] document for.
*/
- fun addNote(text: String) {
+ fun addNote(text: String, title: String) {
val id = UUID.randomUUID().toString()
- val note = Note(id = id, text = text)
+ val note = Note(id = id, text = text, title = title)
viewModelScope.launch {
val result = noteAppSearchManager.addNote(note)
if (!result.isSuccess) {
- _errorMessageLiveData.postValue("Failed to add note with id: $id and text: $text")
+ _errorMessageLiveData.postValue("Failed to add note with id: $id, text: $text, and title: $title")
}
queryNotes()
diff --git a/AppSearchSample/app/src/main/res/layout/add_note_dialog.xml b/AppSearchSample/app/src/main/res/layout/add_note_dialog.xml
index 542af53..7f828d3 100644
--- a/AppSearchSample/app/src/main/res/layout/add_note_dialog.xml
+++ b/AppSearchSample/app/src/main/res/layout/add_note_dialog.xml
@@ -21,10 +21,21 @@
android:layout_height="match_parent"
android:padding="6dp">
+
+
-
+ app:layout_constraintBottom_toBottomOf="parent">
+
+
+
+
+
+
+ app:layout_constraintStart_toEndOf="@+id/title_container"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
diff --git a/AppSearchSample/app/src/main/res/values/strings.xml b/AppSearchSample/app/src/main/res/values/strings.xml
index 9eb9698..cb1bc25 100644
--- a/AppSearchSample/app/src/main/res/values/strings.xml
+++ b/AppSearchSample/app/src/main/res/values/strings.xml
@@ -19,6 +19,7 @@
No notes found! Start by adding a note.
Search Notes
Enter search text
+ Enter note title
Enter note text
Add Note
Add a new note
diff --git a/AppSearchSample/build.gradle b/AppSearchSample/build.gradle
index 5eea1bf..fec9cb5 100644
--- a/AppSearchSample/build.gradle
+++ b/AppSearchSample/build.gradle
@@ -15,25 +15,8 @@
*/
// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = "1.5.10"
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath "com.android.tools.build:gradle:4.2.1"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-task clean (type: Delete) {
- delete rootProject.buildDir
-}
+plugins {
+ id 'com.android.application' version '8.0.2' apply false
+ id 'com.android.library' version '8.0.2' apply false
+ id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
+}
\ No newline at end of file
diff --git a/AppSearchSample/gradle.properties b/AppSearchSample/gradle.properties
index f20a521..3c5031e 100644
--- a/AppSearchSample/gradle.properties
+++ b/AppSearchSample/gradle.properties
@@ -12,8 +12,12 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app"s APK
+# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/AppSearchSample/gradle/wrapper/gradle-wrapper.jar b/AppSearchSample/gradle/wrapper/gradle-wrapper.jar
index f6b961f..e708b1c 100644
Binary files a/AppSearchSample/gradle/wrapper/gradle-wrapper.jar and b/AppSearchSample/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/AppSearchSample/gradle/wrapper/gradle-wrapper.properties b/AppSearchSample/gradle/wrapper/gradle-wrapper.properties
index 3e297a6..6d9c52d 100644
--- a/AppSearchSample/gradle/wrapper/gradle-wrapper.properties
+++ b/AppSearchSample/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Jun 29 07:46:11 PDT 2021
+#Tue Jun 27 13:07:45 PDT 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/AppSearchSample/gradlew b/AppSearchSample/gradlew
index cccdd3d..8b35b5b 100755
--- a/AppSearchSample/gradlew
+++ b/AppSearchSample/gradlew
@@ -28,7 +28,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -66,6 +66,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +110,11 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
@@ -138,19 +140,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
- i=$((i+1))
+ i=`expr $i + 1`
done
case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
@@ -159,14 +161,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
exec "$JAVACMD" "$@"
diff --git a/AppSearchSample/gradlew.bat b/AppSearchSample/gradlew.bat
index e95643d..6b3da4b 100644
--- a/AppSearchSample/gradlew.bat
+++ b/AppSearchSample/gradlew.bat
@@ -13,15 +13,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +38,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,28 +48,14 @@ echo location of your Java installation.
goto fail
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/AppSearchSample/settings.gradle b/AppSearchSample/settings.gradle
index bb80ea7..e8db6e3 100644
--- a/AppSearchSample/settings.gradle
+++ b/AppSearchSample/settings.gradle
@@ -13,6 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
rootProject.name = "AppSearchSample"
include ':app'