32- ja 64-bittisten .so-tiedostojen sekoittaminen sovellukseen

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

Ensinnäkin tiedän, että sovelluksessa ei sallita .so-tiedoston eri arkkitehtuurien sekoittamista (osa käyttää vain 32: aa, toinen osa käyttää vain 64: ta)

Joten, yritin avata uuden prosessin dynaamisesti lataamaan 64- ja 32-bittisiä tiedostoja, mutta System.load() heittää virheen ja sovellus kaatui! Miten ratkaista tämä ongelma useilla prosesseilla? Tai onko olemassa muuta keinoa ratkaista tämä?

5 Comments
Markus 07/27/2017
Tervetuloa SO! Odota hetki lukemaan ohjesivuja , erityisesti osioita nimeltä "Mitä aiheita voin kysyä täältä?" ja "millaisia ​​kysymyksiä minun pitäisi välttää kysyä?" . Ota myös kiertue ja lue kysymyksiä . Lopuksi oppia luomaan minimaalinen, täydellinen ja todennettavissa oleva esimerkki . Yksityiskohtia virheestä auttaisi paljon.
Alex Cohn 07/27/2017
Se on hieno idea! Mutta millaista lapsiprosessia haluat aloittaa? Palvelu? En usko, että tämä voisi toimia, koska järjestelmä päättää, kytkeydytkö 32-bittiseen tilaan APK: n analyysin perusteella ja JVM asetetaan vastaavasti.
Alex Cohn 07/27/2017
Katso stackoverflow.com/a/31879900/192373 : pm voi pakottaa ABI: n asentamalla sovelluksen.
Carmelo M 07/28/2017
@AlexCohn Kiitos! (Stackoverflow.com/a/31879900/192373) ei toimi, koska haluan, että osa toiminnosta käyttää 32-bittistä .so ja osaa funktio käyttää 64-bittistä .so samassa sovelluksessa.
Carmelo M 07/28/2017
@AlexCohn Onko sinulla muita ideoita? Hallita

1 Answers


Alex Cohn 07/30/2017.

No, yritin. Sen edessä tämä toimii: käytä armeabi jaettuja libs "tavalliseen tapaan" ja suorita arm64-v8a suoritustiedosto Java-ohjelmistosta Runtime.exec () tai C- järjestelmällä () .

Voit asettaa suoritustiedoston varoihin ja purkaa sen manuaalisesti, tai voit huijata ja nimetä uudelleen niin, että se alkaa lib ja päättyy .so ; nyt voit laittaa tämän tiedoston jniLibs/armeabi hakemistoon.

Päinvastainen tapa toimii myös: käynnistää 32-bittinen suoritettava (älä unohda -fPIE ) 64-bittisestä sovelluksesta.

Varmista, että kirjaston hakupolut eivät ole ristiriidassa.

2 comments
Carmelo M 08/04/2017
Se on hieno idea! Projektini ei ole samanlainen kuin videokoodauksen taustaoperaatio, mutta sen on ladattava kolmiulotteinen grafiikka SurfaceViewin kautta vuorovaikutukseen käyttäjän eleiden kanssa. Kuinka käsitellä näitä käyttöliittymän vuorovaikutusta on iso ongelma, toivottavasti voit antaa minulle ideoita, kiitos
Alex Cohn 08/04/2017
Mielestäni et pysty käsittelemään käyttöliittymää tai suorittamaan elävää grafiikkaa interprocess-viestinnän kautta

Related questions

Hot questions

Language

Popular Tags