The task assigned by Cardinal Blue. We need to build a PicCollage-like application, but it's a very simple version
Requirements: JDK 17 or 21, Android SDK Platform 37, and Android SDK Build-Tools 37.0.0. The project uses Gradle 9.6.0 and Android Gradle Plugin 9.4.0.
Set ANDROID_HOME to your Android SDK directory, or create an untracked
local.properties containing sdk.dir=/absolute/path/to/Android/sdk.
Install the required SDK packages and accept their licenses using Android Studio's
SDK Manager. The first build needs internet access to download Gradle and dependencies.
./gradlew buildOn Windows, use gradlew.bat build. APKs are written to
app/build/outputs/apk/debug/ and app/build/outputs/apk/release/;
the release APK is unsigned.
The app requires Android 17 (API 37) or newer; minimum, compile, and target SDK are all 37. Photo selection uses MediaStore content URIs and modern image permissions (including selected-photo access). Exports use scoped MediaStore storage.
Start an unlocked Android 17/API 37 emulator, then run:
ANDROID_SERIAL=emulator-5554 ./gradlew connectedDebugAndroidTestReplace the serial with the one shown by adb devices. Setting it explicitly
avoids running tests on other connected devices. These tests exercise the real
picker and inject touchscreen events to verify adding a gallery photo, dragging
without resizing, and two-finger zoom in and out. Each test creates and deletes its
own gallery fixture. Photo permission is pre-granted; permission-dialog choices
are not covered. No external gallery images or network service are required.
Lint remains enabled; app/lint.xml ignores only the notification-permission false
positive from Glide’s unused NotificationTarget class.
The HTML report is at app/build/reports/androidTests/connected/debug/index.html.
./gradlew build runs build/lint checks; device tests require the separate command above.
Future Works
- the frame layout should be irregularity shapes. for example : Masonry style
- support the runtime permission (read/write the external storage)
v0.2
- Support the text scrps.
- Support the rotation feature on the image and text scrps.
- Support pinch zoom gesture.
- SPECIAL FEATURE : a magic button which can add the glasses on the faces in the collage.
v0.1
- Support multiple images selection (up to 12).
- Support change the text scrap's color.
- Support move and scale(pinch zoom) the scraps.
- Export the result to gallery with different resolutions.
