Slik blander du 32 og 64-biters .so filer i en app

Carmelo M 09/15/2017. 1 answers, 84 views
java android android linux android-ndk android-ndk ndk-build

Først vet jeg at i en app ikke tillater blandet bruk av forskjellige arkitekturer av .so-filen (Del kun bruker 32, den andre delen bruker bare 64)

Så, jeg prøvde å åpne en ny prosess for å laste 64 og 32-biters filer så dynamisk, men System.load() kaster feilen og appen krasjet! Hvordan løse dette problemet gjennom flere prosesser? Eller er det noen annen måte å løse dette på?

5 Comments
Markus 07/27/2017
Velkommen til så! Vennligst ta litt tid å lese hjelpesidene , spesielt avsnittene "Hvilke emner kan jeg spørre om her?" og "Hvilke typer spørsmål skal jeg unngå å spørre?" . Ta også turen og les om hvordan du stiller gode spørsmål . Til slutt, lær hvordan du oppretter et minimalt, komplett og verifiserbart eksempel . Detaljer om feil ville hjelpe mye.
Alex Cohn 07/27/2017
Det er en kul ide! Men hva slags barnprosess vil du starte? En tjeneste? Jeg tror ikke dette kan fungere, fordi systemet bestemmer om du skal slå på 32-biters modus basert på analyse av APK, og JVM er oppsett tilsvarende.
Alex Cohn 07/27/2017
Se stackoverflow.com/a/31879900/192373 : pm kan tvinge ABI mens du installerer appen.
Carmelo M 07/28/2017
@AlexCohn Takk! Jeg er enig med deg, en barnprosess (Aktivitet) kan ikke løse dette problemet. [Stackoverflow.com/a/31879900/192373] virker ikke, fordi jeg vil ha en del av funksjonen, bruker 32-biters .so og en del av funksjonen bruker 64-bit .so, i samme app.
Carmelo M 07/28/2017
@AlexCohn Har du andre ideer? Herre

1 Answers


Alex Cohn 07/30/2017.

Vel, jeg prøvde. På forsiden fungerer dette: bruk armeabi shared libs 'på vanlig måte', og kjør en arm64-v8a kjørbar fra Java med Runtime.exec () eller fra C med system () .

Du kan sette kjørbarheten i eiendeler og pakke den ut manuelt, eller du kan jukse og omdøpe den slik at den starter med lib og slutter med .so ; Nå kan du sette denne filen i jniLibs/armeabi katalogen.

Den motsatte måten fungerer også: start 32-biters kjørbar (ikke glem -fPIE ) fra 64-biters app.

Pass på at bibliotekssøkebanene ikke knytter sammen.

2 comments
Carmelo M 08/04/2017
Det er en kul ide !!! Prosjektet mitt ligner ikke video-transcoding bakgrunnsoperasjonen, men trenger å laste tredimensjonal grafikk, gjennom SurfaceView for å samhandle med brukerens bevegelser. Hvordan håndtere disse UI-interaksjonen er et stort problem, jeg håper du kan gi meg noen ideer, takk
Alex Cohn 08/04/2017
Jeg tror ikke du kan håndtere brukergrensesnitt eller utføre levende grafikk gjennom interprosesskommunikasjon

Related questions

Hot questions

Language

Popular Tags