android – JNI loading:警告:不要硬编码使用Context.getFilesDir().getPath()代替

前端之家收集整理的这篇文章主要介绍了android – JNI loading:警告:不要硬编码使用Context.getFilesDir().getPath()代替前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的一个应用程序中遇到问题,我有以下代码加载应用程序所需的lib(JNI):
static {
    // load the JNI library
    Log.i("JNI","loading JNI library...");
    System.load("/data/data/com.mypackage.appname/lib/libxxxxxx.so");
    Log.i("JNI","JNI library loaded!");
}

所以我得到警告:“请注意硬编码使用Context.getFilesDir().getPath()而不是”这是完全正确的(它不会在每个设备上都是可移植的).问题是,因为我使用静态,所以我无法调用Context.getFilesDir().getPath().

你有什么想法我可以继续这样做吗?

解决方法

您的警告绝对清楚,请尝试以下方式:

制作以下课程:

public class MyApplication extends Application {
    private static Context c;

    @Override
    public void onCreate(){
        super.onCreate();

        this.c = getApplicationContext();
    }

    public static Context getAppContext() {
        return this.c;
    }
}

在你的android清单中声明上面的类:

<application android:name="com.xyz.MyApplication"></application>

然后

static {
    // load the JNI library
    Log.i("JNI","loading JNI library...");

    System.load(MyApplication.getAppContext().getFilesDir().getParentFile().getPath() + "/lib/libxxxxxx.so");

    Log.i("JNI","JNI library loaded!");
}

P.S未经测试

猜你在找的Android相关文章