Table of Contents#
- Core Architecture Differences
- API & Framework Updates
- User-Facing Feature Comparison
- Development Toolchain Evolution
- Best Practices for Targeting Early Android
- Real-World Code Comparison
- Conclusion
- References
1. Core Architecture Differences#
Android 1.0 (API Level 1)#
- Linux Kernel: 2.6.25 with custom Binder IPC driver
- Dalvik VM: Initial implementation (non-JIT)
- Storage: SQLite 3.5.9 with basic ContentProvider support
- Security: Single-permission model at install time
Android 1.1 (API Level 2)#
- Linux Kernel: Patched to 2.6.27 with stability fixes
- Dalvik Optimizations: Bytecode verification improvements
- ContentProviders: Expanded URI operation support
- Security: Introduced
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
Key Insight: 1.1 focused on hardening foundational components rather than major redesigns.
2. API & Framework Updates#
New Packages in 1.1#
android.webkit.CacheManager // Web cache controlModified Classes#
| Class/Method | 1.0 Behavior | 1.1 Change |
|---|---|---|
LocationManager.getLastKnownLocation() | Unstable under low memory | Fixed memory leak |
Development Impact: 1.1 required defensive coding for backward compatibility:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
// Use cancellationSignal in queries
} else {
// Fallback to basic query
}Note: Build.VERSION_CODES.CUPCAKE corresponds to API 3 (Android 1.5). The example above is for illustrative purposes of version-check patterns.
3. User-Facing Feature Comparison#
| Feature | Android 1.0 (1.0_r1) | Android 1.1 (1.1_r1) |
|---|---|---|
| Maps | Basic Google Maps with no traffic | Long-tap for address details |
| Voice Dialing | Not supported | Limited voice command support |
| Email Attachments | View only | View + Save capabilities |
| Browser | JavaScript disabled by default | Per-site JavaScript toggles |
| Hardware Support | T-Mobile G1 only | Generic keyboard mapping API |
4. Development Toolchain Evolution#
| Component | 1.0 | 1.1 |
|---|---|---|
| SDK Tools | v1.0_r1 | v1.1_r2 with ADB improvements |
| Emulator | QEMU-based (extremely slow) | x86 acceleration prototypes |
| AAPT | Basic resource compilation | Added raw asset support |
| DX Compiler | .dex output v035 | .dex v038 with opcode fixes |
Best Practice: Developers began using minSdkVersion in manifests:
<uses-sdk android:minSdkVersion="2" /> <!-- 1.1 = API Level 2 -->5. Best Practices for Targeting Early Android#
Compatibility Patterns#
1. Runtime Version Checks
if (Integer.parseInt(Build.VERSION.SDK) >= 2) {
// Use 1.1 APIs
}2. Abstract New Functionality
public interface LocationWrapper {
Location getLastLocation();
}
// Implement version-specific implementationPerformance Tips#
- Memory Management: Explicitly recycle bitmaps (critical under 16MB heap)
- Threading: Prefer
AsyncTaskover raw threads (backported via support libs) - Storage: Always use
Context.getFilesDir()vs hardcoded paths
6. Real-World Code Comparison#
Map Location Handling (1.0 vs 1.1)#
Android 1.0 (Basic Implementation)
MapController mc = mapView.getController();
mc.animateTo(geoPoint); // No position trackingAndroid 1.1 (Added Features)
// MyLocationOverlay available since 1.0
MyLocationOverlay myLocOverlay = new MyLocationOverlay(context, mapView);
myLocOverlay.enableMyLocation(); // Requires new permission
mapView.getOverlays().add(myLocOverlay);7. Conclusion#
While Android 1.0 established core mobile paradigms, 1.1 played a critical role in:
- Stabilizing foundational systems
- Expanding hardware compatibility
- Introducing subtle but impactful API refinements
- Setting precedent for rapid iteration cycles
These early versions remind us that backward compatibility and incremental improvements remain central to Android's philosophy. Modern Android development still employs patterns established during this era—especially runtime version checks and abstraction layers.
8. References#
- Android 1.0 Release Notes (2008)
- Android 1.1 API Diff Report
- Android Source Code Tags: android-1.0_r1 / android-1.1_r1
- Professional Android Application Development (Wrox, 2009)