Hi, .so files integration is perfectly supported when the .so's are put under jniLibs/<abi> of any project or library, or integrated through an .aar dependency.
no hacks should be used anymore (since android plugin 0.7 I guess). integrating .so files from jars this way can indeed lead to duplication issues and other errors. In the final APK, .so files should be under lib/<abi>. main/jniLibs is a proper location for .so files inside the project but absolutely not for .so files inside the APK. Regards, Xavier. On Friday, February 27, 2015 at 7:21:50 AM UTC+1, Jacob G wrote: > > Hi Thomas, > > I also had the same problem, and came up with the same solution as you. I > was wondering how can that be if everyone is saying to put it in src/main. > I came across your thread here, and I guess I feel better someone else also > experienced the same thing. But I'm wondering what is going on that > everyone else does it differently. Maybe they don't notice the dupes? > > On Saturday, April 5, 2014 at 3:51:35 PM UTC-4, Thomas Gravina wrote: >> >> Did anyone of you noticed that this process include the .so files twice >> into the final apk? >> >> I recently switched to Android Studio and started using Gradle to build >> my Android project and I've got a weird behavior. Basically, I have a lib >> in app/src/main/jniLibs, divided in two folders: armeabi and armeabi-7va. >> The problem is that since I use Gradle, the APK file is twice more >> heavier. The reason is that Gradle copy the *.so files twice in the APK at >> two different locations: >> - lib/ >> - main/jniLibs/ >> >> When I used to build using Eclipse, everything was fine, *.so files were >> copied only one time. >> >> Does anyone know if there is a way to avoid this behavior? Is this a bug >> in Gradle or am I doing something wrong? >> >> On Wednesday, June 5, 2013 7:11:30 AM UTC+1, Yonnie Lu wrote: >>> >>> There is a topic we known as: "https://gist.github.com/khernyo/4226923", >>> But i have try this method in gradle plugin 0.4.0+, it doesn't copy the so >>> libs to apk. >>> So I'm confused. But I figured out a new way to hack this before gradle >>> support. >>> The way is: use jar to copy so libs. Is it amazing?right?. Let me show >>> how-to: >>> If you have the following structure: >>> project >>> |---libs >>> |---armeabi/xxx.so >>> |---xxx.jar >>> |---xxx.jar >>> 1.We archive the armeabi folder to zip named:armeabi.zip with the folder >>> in zip like: lib/armeabi/xxx.so >>> 2.Rename armeabi.zip to armeabi.jar and put armeabi.jar into libs folder >>> with the other jars. >>> 3.And when we call >>> dependencies { >>> compile fileTree(dir: 'libs', include: '*.jar') >>> } >>> in our build.gradle file, it will extract the so libs to the apks. >>> >>> As we know, only class files will be packed into classes.dex file and >>> other files will be extracted to the apk as the structure in the jars. >>> So, That's how-to hack. Easy and amazing. Cool,right? >>> >> -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
