249 líneas
7.2 KiB
Markdown
249 líneas
7.2 KiB
Markdown
# Development Setup Guide
|
|
This guide will help you set up the My ActivityPub project for development.
|
|
## Prerequisites
|
|
### Required Software
|
|
1. **Android Studio**
|
|
- Version: Hedgehog (2023.1.1) or newer
|
|
- Download: https://developer.android.com/studio
|
|
2. **Java Development Kit (JDK)**
|
|
- Version: JDK 11 or higher
|
|
- Android Studio includes a JDK, or download from: https://adoptium.net/
|
|
3. **Git**
|
|
- Version: Latest stable
|
|
- Download: https://git-scm.com/downloads
|
|
4. **Android SDK**
|
|
- API Level 24 (Android 7.0) minimum
|
|
- API Level 35 (Android 14) target
|
|
- Installed via Android Studio SDK Manager
|
|
### Recommended Tools
|
|
- **Android Device** or **Emulator** for testing
|
|
- **ADB (Android Debug Bridge)** - included with Android Studio
|
|
- **Gradle** - wrapper included in project
|
|
## Project Setup
|
|
### 1. Clone the Repository
|
|
```bash
|
|
git clone https://github.com/your-username/MyActivityPub.git
|
|
cd MyActivityPub
|
|
```
|
|
### 2. Open in Android Studio
|
|
1. Launch Android Studio
|
|
2. Select **File > Open**
|
|
3. Navigate to the cloned repository
|
|
4. Click **OK**
|
|
### 3. Gradle Sync
|
|
Android Studio will automatically trigger a Gradle sync. If not:
|
|
1. Click **File > Sync Project with Gradle Files**
|
|
2. Wait for sync to complete
|
|
3. Resolve any errors if they appear
|
|
### 4. Install Dependencies
|
|
The Gradle build system will automatically download all dependencies:
|
|
- Kotlin standard library
|
|
- Jetpack Compose libraries
|
|
- Retrofit for networking
|
|
- Coil for image loading
|
|
- Material 3 components
|
|
### 5. Configure Build Variants
|
|
1. Click **Build > Select Build Variant**
|
|
2. Choose `debug` for development
|
|
3. Use `release` for production builds
|
|
## Building the Project
|
|
### Debug Build
|
|
```bash
|
|
# From command line
|
|
./gradlew assembleDebug
|
|
# Output location
|
|
app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
### Release Build
|
|
```bash
|
|
# Create signed release APK
|
|
./gradlew assembleRelease
|
|
# Output location
|
|
app/build/outputs/apk/release/app-release.apk
|
|
```
|
|
## Running the App
|
|
### On Physical Device
|
|
1. Enable **Developer Options** on your Android device:
|
|
- Go to **Settings > About Phone**
|
|
- Tap **Build Number** 7 times
|
|
2. Enable **USB Debugging**:
|
|
- Go to **Settings > Developer Options**
|
|
- Enable **USB Debugging**
|
|
3. Connect device via USB
|
|
4. In Android Studio:
|
|
- Click **Run > Run 'app'**
|
|
- Or press **Shift + F10**
|
|
- Select your device
|
|
### On Emulator
|
|
1. Create an AVD (Android Virtual Device):
|
|
- Click **Tools > Device Manager**
|
|
- Click **Create Device**
|
|
- Select a device definition (e.g., Pixel 6)
|
|
- Select system image (API 24+)
|
|
- Click **Finish**
|
|
2. Run the app:
|
|
- Click **Run > Run 'app'**
|
|
- Select the emulator
|
|
## Configuration
|
|
### Gradle Properties
|
|
Edit `gradle.properties` to configure build settings:
|
|
```properties
|
|
# Increase memory for large projects
|
|
org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
|
|
# Enable parallel builds
|
|
org.gradle.parallel=true
|
|
# Enable configuration cache (Gradle 8.0+)
|
|
org.gradle.configuration-cache=true
|
|
```
|
|
### API Configuration
|
|
To connect to a different Mastodon instance, edit `MainActivity.kt`:
|
|
```kotlin
|
|
val retrofit = Retrofit.Builder()
|
|
.baseUrl("https://your-instance.social/") // Change this
|
|
.client(client)
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
.build()
|
|
```
|
|
## Troubleshooting
|
|
### Common Issues
|
|
#### 1. Gradle Sync Failed
|
|
**Problem**: "Could not download dependencies"
|
|
**Solutions**:
|
|
```bash
|
|
# Clear Gradle cache
|
|
rm -rf ~/.gradle/caches/
|
|
./gradlew clean --no-daemon
|
|
# Or in Android Studio:
|
|
# File > Invalidate Caches > Invalidate and Restart
|
|
```
|
|
#### 2. Build Failed with Memory Error
|
|
**Problem**: "Java heap space" or "OutOfMemoryError"
|
|
**Solution**: Increase memory in `gradle.properties`:
|
|
```properties
|
|
org.gradle.jvmargs=-Xmx4096m
|
|
```
|
|
#### 3. SDK Not Found
|
|
**Problem**: "Failed to find target with hash string 'android-35'"
|
|
**Solution**:
|
|
1. Open SDK Manager: **Tools > SDK Manager**
|
|
2. Install Android 14.0 (API 35)
|
|
3. Sync Gradle files
|
|
#### 4. Emulator Won't Start
|
|
**Problem**: Emulator crashes or doesn't start
|
|
**Solutions**:
|
|
- Enable virtualization in BIOS/UEFI
|
|
- Install HAXM (Intel) or WHPX (Windows)
|
|
- Reduce emulator RAM allocation
|
|
- Use ARM system image instead of x86
|
|
#### 5. App Crashes on Launch
|
|
**Problem**: App crashes immediately after launch
|
|
**Solutions**:
|
|
- Check Logcat for error messages
|
|
- Verify internet permission in manifest
|
|
- Clear app data: `adb shell pm clear com.manalejandro.myactivitypub`
|
|
### Debugging
|
|
#### View Logs
|
|
```bash
|
|
# View all logs
|
|
adb logcat
|
|
# Filter by app
|
|
adb logcat | grep MyActivityPub
|
|
# Filter by tag
|
|
adb logcat -s TimelineViewModel
|
|
# Clear logs
|
|
adb logcat -c
|
|
```
|
|
#### Debug in Android Studio
|
|
1. Set breakpoints in code
|
|
2. Click **Run > Debug 'app'**
|
|
3. Interact with app
|
|
4. Use debug panel to inspect variables
|
|
## IDE Configuration
|
|
### Android Studio Settings
|
|
Recommended settings for development:
|
|
1. **Code Style**:
|
|
- **Settings > Editor > Code Style > Kotlin**
|
|
- Set from: **Kotlin style guide**
|
|
2. **Auto Import**:
|
|
- **Settings > Editor > General > Auto Import**
|
|
- Enable **Add unambiguous imports on the fly**
|
|
- Enable **Optimize imports on the fly**
|
|
3. **Live Templates**:
|
|
- **Settings > Editor > Live Templates**
|
|
- Useful templates: `comp`, `vm`, `repo`
|
|
4. **Version Control**:
|
|
- **Settings > Version Control > Git**
|
|
- Configure your Git author info
|
|
### Useful Plugins
|
|
- **Rainbow Brackets**: Colorize bracket pairs
|
|
- **GitToolBox**: Enhanced Git integration
|
|
- **Key Promoter X**: Learn keyboard shortcuts
|
|
- **ADB Idea**: Quick ADB commands
|
|
- **.ignore**: Manage .gitignore files
|
|
## Testing Setup
|
|
### Unit Tests
|
|
```bash
|
|
# Run all unit tests
|
|
./gradlew test
|
|
# Run tests for specific variant
|
|
./gradlew testDebugUnitTest
|
|
```
|
|
### Instrumented Tests
|
|
```bash
|
|
# Run on connected device/emulator
|
|
./gradlew connectedAndroidTest
|
|
```
|
|
### Test Coverage
|
|
```bash
|
|
# Generate coverage report
|
|
./gradlew jacocoTestReport
|
|
# View report at:
|
|
# app/build/reports/jacoco/test/html/index.html
|
|
```
|
|
## Code Quality
|
|
### Lint Checks
|
|
```bash
|
|
# Run lint
|
|
./gradlew lint
|
|
# View report at:
|
|
# app/build/reports/lint-results.html
|
|
```
|
|
### Static Analysis
|
|
```bash
|
|
# Run detekt (if configured)
|
|
./gradlew detekt
|
|
```
|
|
## Environment Variables
|
|
For sensitive data, use local environment variables:
|
|
```bash
|
|
# In ~/.bashrc or ~/.zshrc
|
|
export MASTODON_BASE_URL="https://mastodon.social/"
|
|
export API_KEY="your-api-key"
|
|
```
|
|
Access in Gradle:
|
|
```kotlin
|
|
android {
|
|
defaultConfig {
|
|
buildConfigField("String", "BASE_URL", "\"${System.getenv("MASTODON_BASE_URL")}\"")
|
|
}
|
|
}
|
|
```
|
|
## Next Steps
|
|
After setup:
|
|
1. Read [ARCHITECTURE.md](ARCHITECTURE.md) to understand the codebase
|
|
2. Check [CONTRIBUTING.md](../CONTRIBUTING.md) for contribution guidelines
|
|
3. Review [API.md](API.md) for API documentation
|
|
4. Start coding! 🚀
|
|
## Getting Help
|
|
If you encounter issues:
|
|
1. Check this guide thoroughly
|
|
2. Search existing [Issues](https://github.com/your-repo/issues)
|
|
3. Check [Stack Overflow](https://stackoverflow.com/questions/tagged/android)
|
|
4. Ask in [Discussions](https://github.com/your-repo/discussions)
|
|
5. Create a new issue with details
|
|
## Additional Resources
|
|
- [Android Developer Guides](https://developer.android.com/guide)
|
|
- [Kotlin Documentation](https://kotlinlang.org/docs/home.html)
|
|
- [Jetpack Compose Pathway](https://developer.android.com/courses/pathways/compose)
|
|
- [Mastodon API Docs](https://docs.joinmastodon.org/api/)
|