我在我的一个应用程序中遇到问题,我有以下代码加载应用程序所需的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未经测试
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。