簡體   English   中英

指定在Android上安裝時從.apk中提取.so的位置(即目標路徑)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM