13/04/2024
At udvikle mobile applikationer kan ofte virke som en kompleks opgave, især når man sigter mod cross-platform kompatibilitet og høj ydeevne, som det ofte er tilfældet med lydapplikationer. Men hvad nu hvis der var et framework, der gjorde denne proces markant lettere, selv for Android? Svaret er JUCE. Hvis du har overvejet at skrive en Android-app, der udnytter JUCE-biblioteker, er du kommet til det rette sted. Denne artikel vil guide dig gennem processen, besvare dine spørgsmål og give dig værdifulde råd fra start til slut.

Mange udviklere spørger, om det overhovedet er muligt at bygge en JUCE-app til Android. Svaret er et rungende ja! JUCE er designet til at være cross-platform, hvilket betyder, at du kan skrive din kode én gang og implementere den på tværs af forskellige operativsystemer, herunder Android, iOS, macOS, Windows og Linux. Dette er en enorm fordel, især for udviklere af lydaffineret software som audio-plugins eller standalone-applikationer.
Det er også vigtigt at bemærke, at du ikke er bundet til et specifikt operativsystem for at udvikle JUCE Android-apps. Selvom du måske har oplevet udfordringer med menuer på ældre Ubuntu-systemer som 11.04, er JUCE-udvikling for Android fuldt understøttet på både Mac OS X og Windows. Dette giver en stor fleksibilitet i dit udviklingsmiljø. De fleste foretrækker at arbejde på Mac eller Windows på grund af deres robuste værktøjsunderstøttelse og generelle stabilitet for mobiludvikling.
- Hvad er JUCE, og hvordan fungerer det?
- Forberedelse: Opsætning af Dit Udviklingsmiljø
- Download og Konfiguration af JUCE
- Oprettelse af Dit Første Android Projekt med JUCE
- Kør Din App: Forstå JUCE's Arkitektur på Android
- Tips og Råd til JUCE Android Udvikling
- Hvad er Nyt i JUCE 7?
- Ofte Stillede Spørgsmål
Hvad er JUCE, og hvordan fungerer det?
JUCE står for 'Jules' Utility Class Extensions' og er et omfattende C++-framework, der har etableret sig som en af de førende platforme til udvikling af moderne og højtydende lydapplikationer og audio-plugins til digitale lydarbejdsstationer (DAW'er). Dens styrke ligger i dens evne til at abstrahere kompleksiteten af operativsystem-specifikke API'er, hvilket giver udviklere mulighed for at fokusere på applikationens kernefunktionalitet uden at skulle skrive platformsspecifik kode for hver eneste detalje.
Frameworket er designet med moduler i tankerne, der dækker alt fra grafik og GUI (Graphical User Interface) til filhåndtering, netværk og selvfølgelig audio-behandling. Dette modulære design gør det nemt at inkludere præcis de funktioner, din app har brug for, og udelade resten, hvilket resulterer i slanke og effektive applikationer. JUCE's cross-platform natur er ikke bare en bekvemmelighed; den er en kernestyrke, der tillader en enkelt kodebase at nå et bredt publikum på tværs af forskellige enheder og operativsystemer.
For at bygge et Android-projekt med JUCE er det eneste grundlæggende krav, at du har Android Studio installeret og korrekt konfigureret. Android Studio er Googles officielle IDE (Integrated Development Environment) for Android-udvikling og leverer de nødvendige værktøjer og SDK'er (Software Development Kits) til at kompilere, fejlfinde og implementere Android-apps.
Forberedelse: Opsætning af Dit Udviklingsmiljø
Før du kan begynde at bygge din JUCE Android-app, skal du sikre dig, at dit udviklingsmiljø er korrekt indstillet. Dette involverer installation af nogle essentielle komponenter via Android Studio.
1. Download NDK og CMake
Den første vigtige skridt er at installere Native Development Kit (NDK) og CMake i Android Studio. NDK er et værktøjssæt, der giver dig mulighed for at implementere dele af din app ved hjælp af native kode (som C og C++) frem for Java eller Kotlin. Dette er afgørende for JUCE, da det er et C++-framework. CMake er et open-source, cross-platform familie af værktøjer designet til at bygge, teste og pakke software. Det bruges af Android Studio til at kompilere dine C++-kilder.
Sådan installerer du dem:
- Åbn Android Studio.
- Gå til Tools → SDK Manager.
- I vinduet 'SDK Manager' skal du navigere til Appearance & Behavior → System Settings → Android SDK.
- Vælg fanen SDK Tools.
- Sørg for at afkrydse NDK (Side by side) og CMake.
- Klik på OK og start downloaden.
Den officielle JUCE-tutorial har tidligere foreslået at downloade LLDB, som er en debugger for native kode. Men fortvivl ikke, hvis du ikke finder den på SDK Tools-listen – med nyere versioner af Android Studio er LLDB ofte allerede installeret som en del af standardinstallationen af Android SDK, så du behøver sandsynligvis ikke at bekymre dig om det.
Download og Konfiguration af JUCE
Med Android Studio og de nødvendige SDK-værktøjer på plads, er det tid til at få fat i JUCE-frameworket selv.

2. Download JUCE og indstil globale stier
Du kan downloade den gratis version af JUCE fra den officielle hjemmeside. Downloadet er relativt lille og inkluderer Projucer, JUCE's brugerdefinerede compiler og projektgenerator. Projucer er det værktøj, du vil bruge til at oprette og konfigurere dine JUCE-projekter, herunder Android-apps.
Første gang du åbner Projucer, skal JUCE vide den præcise placering af din Android SDK. Dette er afgørende for, at Projucer kan generere de korrekte Android-projektfiler.
- Åbn Projucer-appen.
- Gå til File → Global Paths.
- Indtast SDK-placeringen:
- For Windows OS, ligger SDK'en typisk inde i
C:\Users\{dit navn}\AppData\Local\Android\SDK - For Mac OS/Linux:
/Users/{dit navn}/Library/Android/sdk(Mac) eller/home/{dit navn}/Android/Sdk(Linux)
- For Windows OS, ligger SDK'en typisk inde i
Sørg for, at stien er nøjagtig, da en forkert sti vil forhindre Projucer i at generere et gyldigt Android-projekt.
Oprettelse af Dit Første Android Projekt med JUCE
Nu er du klar til at oprette dit første Android-projekt ved hjælp af Projucer.
3. Opret et nyt projekt
Projucer gør det nemt at starte et nyt projekt med de korrekte indstillinger for din valgte platform.
- Kør Projucer-appen.
- Gå til File → New Project.
- Vælg Audio (hvis din app har lydfokus, hvilket de fleste JUCE-apps har), indtast et tilpasset projektnavn, vælg Android som 'Exporter' og klik derefter på Create Project.
Dette vil åbne et nyt vindue, der præsenterer projektets indstillinger. Fra venstre panel skal du vælge Android og (valgfrit) vælge Minimum- og Target SDK-versioner. Det er vigtigt at bemærke, at 29 var den maksimale SDK, der blev understøttet af den seneste JUCE-udgivelse i september 2021. Forsøg ikke at indtaste 30 eller derover som target SDK'er, da opbygningen sandsynligvis vil fejle. Kontroller altid den seneste JUCE-dokumentation for de nyeste understøttede SDK-versioner.
Den grønne Android-ikon i Projucer vil forsøge at køre det nye projekt i Android Studio. Men hvis du forsøger at køre appen lige nu, vil byggeriet sandsynligvis fejle. For at køre din app korrekt skal du følge trinene i næste afsnit.
Kør Din App: Forstå JUCE's Arkitektur på Android
Efter at have oprettet dit nye projekt med Projucer, er det tid til at åbne det i Android Studio og få det til at køre.
3. Kør appen
Når du har oprettet det nye projekt, skal du afslutte Projucer, køre Android Studio og derefter gå til File → Open og vælge placeringen af dit nye projekt. Projekttræet skal ligne en standard Android-projektstruktur, men med en vigtig forskel: den native C++-kode. Kernen af din JUCE-app bor inde i tre primære filer:
Main.cppMainComponent.hMainComponent.cpp
MainComponent er en klasse, der udvider JUCE-kerneklassen AudioAppComponent. Denne klasse er ansvarlig for at håndtere både UI/brugerinput og lydbehandling på en separat tråd. Især vil lydbehandlingen blive styret af metoden getNextAudioBlock, som du vil udfylde med din egen lydlogik. Det anbefales stærkt at læse og følge de officielle JUCE-tutorials for mere detaljerede oplysninger om, hvordan du implementerer lydbehandling.
Hvis du nu kører appen, vil byggeriet sandsynligvis lykkes, og du vil se din første JUCE Android-app. Det, du ser, er ikke et standard XML-layout, som du måske er vant til fra traditionel Android-udvikling. I stedet er dette et native C++-layout, som håndteres direkte inde i MainComponent.cpp. JUCE tegner alle UI-elementer direkte ved hjælp af sin egen grafikmotor, hvilket giver en ensartet brugergrænseflade på tværs af alle understøttede platforme.

Brug af standard XML-layout (avanceret)
Hvis du absolut ønsker at bruge standard XML-layout i din JUCE Android-app, er det muligt, men det kræver yderligere trin og introducerer en vis kompleksitet. Problemet er, at Java/Kotlin- og native C++-koden bliver fuldstændig afkoblet, og du skal bruge JNI (Java Native Interface) til at forbinde disse to verdener. JNI er et framework, der tillader Java-kode at kalde native applikationer og biblioteker skrevet i andre sprog som C, C++ og assembler.
Sådan gør du, hvis du vil benytte XML-layout:
- Deaktiver den native UI fra
Main.cpp: Find konstruktoren forMainWindow-klassen og skiftsetVisible(true);tilsetVisible(false);. - Opret en ny hoved-Java/Kotlin-aktivitet i Android Studio.
- I
AndroidManifest.xmlskal du placere intent-filteret inde i den nye aktivitetstag:<activity android:theme="@style/Theme.AppCompat" android:name=".MainActivity" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - Inden for den nye aktivitetstag, husk at indstille Android-temaet:
android:theme="@style/Theme.AppCompat". - Kør appen igen.
Selvom dette giver dig mulighed for at bruge XML-layouts, vil kommunikation mellem din JUCE C++-kerne og Java/Kotlin UI være en udfordring. Information om, hvordan man opnår dette resultat effektivt, selv i JUCE-forummet, er sjælden og spredt. For de fleste JUCE-applikationer, især dem med fokus på lyd, er det mere ligetil og effektivt at holde sig til JUCE's native C++ UI-system. Det giver en ensartet oplevelse på tværs af platforme og undgår kompleksiteten ved JNI.
Tips og Råd til JUCE Android Udvikling
Her er nogle yderligere råd, der kan hjælpe dig på din JUCE Android-udviklingsrejse:
- Start simpelt: Fokuser på at få en grundlæggende JUCE-app til at køre på Android, før du dykker ned i kompleks lydbehandling eller brugergrænseflader.
- Brug Projucer flittigt: Projucer er dit primære værktøj til projektkonfiguration. Forstå, hvordan du justerer indstillinger som SDK-versioner, modulstier og kompilatorflag.
- Fejlfinding: Brug Android Studios indbyggede fejlfindingsværktøjer. Logcat er uvurderlig til at se fejlmeddelelser og debug-output fra din native C++-kode.
- JUCE Forum: JUCE har et meget aktivt og hjælpsomt fællesskab på deres officielle forum. Hvis du støder på problemer, er chancerne gode, at nogen allerede har spurgt om det samme, eller at du kan få hurtig hjælp der.
- Holde dig opdateret: JUCE-frameworket udvikler sig konstant. Sørg for at downloade de seneste versioner og læs udgivelsesnoterne for at holde dig informeret om ændringer og nye funktioner, især vedrørende Android-understøttelse.
- Performance: Husk at Android-enheder kan variere meget i ydeevne. Optimer din lydbehandling og grafik for at sikre en jævn oplevelse, selv på mindre kraftfulde enheder. Brug JUCE's indbyggede performance-værktøjer til at identificere flaskehalse.
Hvad er Nyt i JUCE 7?
JUCE-frameworket er i konstant udvikling, og hver ny version bringer forbedringer og nye funktioner. Med JUCE 7 blev en særlig spændende opdatering introduceret for dem, der bygger lyd-plugins og plugin-værter: understøttelse af Audio Random Access (ARA) SDK. ARA er et kraftfuldt API, der udvider VST3- og Audio Unit-grænsefladerne.
Dette giver plugins mulighed for at læse lydprøver fra en DAW uden for de normale realtids-lydtidsbegrænsninger. Det muliggør udvikling af plugins som Celemony's Melodyne, hvor plugins kan fungere mere som sample-editorer. Den dynamiske udveksling af information som tempo og toneart giver en rig platform for at bygge meget mere avancerede lydeffekter. Mens dette primært er relevant for audio-plugins, understreger det JUCE's engagement i at understøtte avancerede lydapplikationer på tværs af alle platforme, herunder Android, hvis din app fungerer som en form for lydvært eller -redigeringsværktøj.
Ofte Stillede Spørgsmål
Kan en JUCE-app skrives til Android?
Ja, absolut! JUCE er et cross-platform C++-framework, der fuldt ud understøtter udvikling af applikationer til Android.
Hvilke operativsystemer kan jeg bruge til at bygge JUCE Android-apps?
Du kan bygge JUCE Android-apps på Mac OS X, Windows og Linux-systemer. Selvom der kan være specifikke opsætningsudfordringer på ældre Linux-versioner, er frameworket generelt kompatibelt.
Er det muligt at bruge standard XML-layouts i en JUCE Android-app?
Ja, det er teknisk muligt at bruge standard XML-layouts, men det er en mere kompleks tilgang. Det kræver, at du deaktiverer JUCE's native C++ UI og bruger JNI (Java Native Interface) til at kommunikere mellem din Java/Kotlin UI og JUCE's C++-kerne. For de fleste JUCE-applikationer anbefales det at holde sig til JUCE's indbyggede UI-system for enkelhedens skyld.
Hvad er Projucer?
Projucer er JUCE's brugerdefinerede udviklingsværktøj. Det fungerer som en projektgenerator og en konfigurationseditor, der lader dig oprette nye JUCE-projekter, tilføje moduler, konfigurere eksportører (f.eks. til Android Studio) og indstille globale stier som din Android SDK-placering.
Hvad er NDK og CMake?
NDK (Native Development Kit) er et værktøjssæt fra Google, der giver Android-udviklere mulighed for at implementere dele af deres apps ved hjælp af native kode (f.eks. C++). CMake er et cross-platform open-source værktøj, der bruges til at administrere byggeprocessen af software, herunder C++-projekter til Android. Begge er essentielle for at kompilere JUCE C++-kode til Android-platformen.
Med denne guide og JUCE's kraftfulde funktioner er du nu udstyret til at begynde din rejse ind i verden af Android-appudvikling med et robust og ydeevneorienteret C++-framework. Lykke til med kodningen!
Hvis du vil læse andre artikler, der ligner Byg Android Apps med JUCE: Din Komplette Guide, kan du besøge kategorien Mobilapps.
