![](/img/trans.png)
[英]When building apk in Android Studio, APK size increased by big margin i.e. from 3 mb to 20mb
[英]Specify where a .so is to be extracted from .apk (i.e. destination path) when installing on Android
我有一個.so文件, 需要將其安裝在名為sqldrivers的子目錄中 。
因此, /data/app-lib/org.example.qt.untitled/libqslite.so
將其安裝到/data/app-lib/org.example.qt.untitled/libqslite.so
,我還需要將其安裝到/data/app-lib/org.example.qt.untitled/sqldrivers/libqslite.so
。
我將Eclipse與ADT一起使用,當我想添加一個本機庫時,將其放在libs\\<ARCH>
,該libs\\x86
是模擬器的libs\\x86
。
因此,我嘗試將其放置在C:\\Workspace\\untitled\\libs\\x86\\sqldrivers\\libqslite.so
,但它根本沒有添加到.apk中。
如何指定應從手機上的.apk中提取.so文件的位置?
看來,實現此目的的唯一方法是在首次運行/data/app-lib
將文件從/data/app-lib
復制到其他目錄。
因此,我只是在應用程序的開頭添加了一些代碼,以將.so文件從/data/app-lib/<app>
復制到/data/data/<app>/qt_plugins/sqldrivers
如果尚不存在) 。
File sourceFile = new File(context.getApplicationInfo().nativeLibraryDir + "/libplugins_sqldrivers_libqsqlite.so");
File libPath = new File(context.getApplicationInfo().dataDir + "/qt_plugins");
File destinationDir = new File(libPath + "/sqldrivers");
File destinationFile = new File(destinationDir + "/libqsqlite.so");
if (!destinationFile.exists()) {
destinationDir.mkdirs();
try {
copy(sourceFile, destinationFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.