-
Notifications
You must be signed in to change notification settings - Fork 1
Android Development Guide
Garot Conklin edited this page Dec 15, 2024
·
1 revision
- JDK: OpenJDK 17 or later
- Android Studio: Latest stable version (Hedgehog | 2023.1.1)
- Git: Latest version
- GitHub CLI: For repository management
# Clone the repository
git clone https://github.com/fleXRPL/RunOn.git
cd RunOn
# Create and switch to development branch
git checkout -b development-
Code Style:
- Enable ktlint formatting
- Use project-specific settings
// .editorconfig root = true [*.{kt,kts}] ktlint_code_style = official max_line_length = 120
-
Gradle Settings:
- Gradle JDK: JDK 17
- Enable configuration cache
- Enable build cache
// app/build.gradle.kts
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.dagger.hilt.android")
id("com.google.devtools.ksp")
}
android {
namespace = "com.flexrpl.runon"
compileSdk = 34
defaultConfig {
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.3"
}
}-
Branch Naming:
feature/[feature-name] bugfix/[bug-description] enhancement/[enhancement-description] -
Commit Messages:
feat: Add event discovery screen fix: Resolve calendar sync issue docs: Update API documentation refactor: Improve event filtering logic -
Pull Request Process:
- Create feature branch
- Implement changes
- Run tests and checks
- Create PR with description
- Request review
- Address feedback
- Merge after approval
-
Pre-commit Checks:
./gradlew ktlintCheck ./gradlew detekt ./gradlew test -
CI/CD Pipeline:
- Automated tests
- Code quality checks
- Build verification
- Release management
@Test
fun `event filtering should return matching events`() {
// Given
val events = listOf(/* test data */)
// When
val filtered = useCase.filterEvents(events, criteria)
// Then
assertThat(filtered).hasSize(expectedSize)
}@Test
fun eventListDisplaysCorrectly() {
composeTestRule.setContent {
EventList(events = testEvents)
}
composeTestRule
.onNodeWithText("Event Title")
.assertIsDisplayed()
}-
Layout Inspector:
- Analyze UI hierarchy
- Debug Compose issues
-
Network Profiler:
- Monitor API calls
- Analyze response times
-
Memory Profiler:
- Track memory usage
- Identify leaks
object Logger {
fun d(tag: String, message: String) {
if (BuildConfig.DEBUG) {
Log.d(tag, message)
}
}
// Additional log levels...
}-
Debug:
- Development features enabled
- Logging enabled
- Test endpoints
-
Release:
- Optimized build
- ProGuard enabled
- Production endpoints
// Version.kt
object Version {
const val MAJOR = 1
const val MINOR = 0
const val PATCH = 0
const val BUILD = 1
fun versionName() = "$MAJOR.$MINOR.$PATCH"
fun versionCode() = MAJOR * 10000 + MINOR * 1000 + PATCH * 100 + BUILD
}- Update version numbers
- Run full test suite
- Generate release notes
- Create signed bundle
- Submit to Play Store
- Tag release in Git
/**
* Filters events based on specified criteria.
*
* @param events List of events to filter
* @param criteria Filtering criteria
* @return Filtered list of events
*/
fun filterEvents(events: List<Event>, criteria: FilterCriteria): List<Event>- Use OpenAPI/Swagger
- Document all endpoints
- Include request/response examples
- Keep diagrams updated
- Document design decisions
- Maintain changelog
© RunOn! 2024
Full-Featured Documentation
- Android Technical Stack (Archived)
- Android Architecture (Archived)
- Business Prospectus (Archived)
- Feature Specifications (Archived)
- UI/UX Design (Archived)