Android Studio 中的 JNI 文件夹

2024-01-07

我正在尝试在 Android Studio 中制作 helloy-jni 应用程序,但有例外

06-27 13:17:19.099  12714-12714/com.example.testjni2           E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.ExceptionInInitializerError
    at java.lang.Class.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1319)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
    at android.app.ActivityThread.access$700(ActivityThread.java:154)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5306)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load hello-jni from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.testjni2-1.apk,libraryPath=/data/app-lib/com.example.testjni2-1]: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:365)
    at java.lang.System.loadLibrary(System.java:535)
    at com.example.testjni2.MainActivity.<clinit>(MainActivity.java:9)
    ... 15 more

我的结构项目看起来像这样

我添加了我的 build.gradle 行:

   compile files('libs/armeabi/libhello-jni.so')

但这没有帮助。 我读Gradle http://www.gradle.org/docs/current/userguide/dependency_management.html and Android Gradle 插件 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Introduction,但我没有找到有关使用 jni 文件夹的信息

我在想什么文件依赖关系 http://www.gradle.org/docs/current/userguide/dependency_management.html#sub:file_dependencies,但它不起作用

我的 hello-jni.c 文件包括

jstring  Java_com_example_testjni2_MainActivity_stringFromJNI (JNIEnv *env, jobject thiz){
    return (*env)->NewStringUTF(env, "Hello from JNI !");
  }

我的 MainActivity 文件包括

public class MainActivity extends Activity {
    static {
        System.loadLibrary("hello-jni");
    }
    public native String  stringFromJNI();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String text = stringFromJNI();
        Log.i("MainActivity", text);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

我的 Android.mk 文件包含

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

请告诉我哪里可能出错。

安卓工作室0.1.7 操作系统 - Windows 7 x64


现在有一种比公认的答案更简单的方法。

您所要做的就是创建一个名为的文件夹“jniLibs”在你的/src/main目录(即 /app/src/main/jniLibs)并将 .so 文件放在那里。它看起来像这样:

app
   |
   src
      |
     main
        |
        jniLibs
            |
            armeabi
            |   |
            |   your_lib_compiled_for_armeabi.so
            |
            armeabi-v7a
            |   |
            |   your_lib_compiled_for_v7a.so
            |
            x86
            |   |
            |   your_lib_compiled_for_x86.so

您的 .so 文件现在应该已被获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio 中的 JNI 文件夹 的相关文章

随机推荐

  • 使用基于视图的 NSOutline (Sourcelist) 的奇怪行为

    我的应用程序中有一个 Lion 中的新功能 基于视图的 NSOutlineView 作为侧边栏 SourceList 使用 CoreData NSTreeController Bindings NSOutlineView 和一个对象作为 N
  • 自定义条带结帐的错误处理

    我正在研究自定义条带集成 网关 如果我使用信用卡 借记卡付款 我将从该 url 获得带有令牌 id 的成功 json 响应https api stripe com v1 tokens https api stripe com v1 toke
  • .NET 4 中的 URL 重写?

    我听说 Visual Studio 2010 提供了使用其 URL 路由引擎进行 URL 重写的内置功能 我在 Visual Studio 的早期版本中使用像 intelligencia urlrewrite 这样的插件进行了 URL 重写
  • SVG 粘糊糊的效果在最新版本的 FireFox 上不起作用

    我有一个问题 当使用黑色以外的任何其他颜色时 我的 feGuassian 模糊无法正常工作 在 chrome 上它工作得很好 我还没有在 safari 上测试过 我在 jsFiddle 创建了一个示例 HTML div div class
  • 关于 django form.errors 的问题,获取原始错误消息

    django文档说https docs djangoproject com en dev ref forms api django forms Form errors https docs djangoproject com en dev
  • 从代码隐藏中获取多用户控件中的 GridView

    IpInterfaceUC 用户控制 div style height 205px width 550px margin left 5px div
  • 正则表达式 [A-z] 和 [a-zA-Z] 之间的区别

    我正在使用正则表达式为我只需要字母字符的文本框编写输入验证器 我想知道是否 A z and a zA Z 是否相同或性能方面是否存在差异 我继续阅读 a zA Z 在我的搜索中 没有提及 A z 我正在使用java的String match
  • 在android中制作按钮的按下效果

    我创建了一个android应用程序 它动态创建50个按钮 效果很好 但问题是当我动态地为这些按钮添加一些背景颜色时 按钮的按下效果会丢失 谁能告诉我一些保留按钮点击按下效果的解决方案我的代码如下所示 my Android平台是2 3 3 i
  • 流星 / JS 日期

    所以我试图在流星中制作一个时间表应用程序 创建项目并添加时间条目 为什么 这是我能想到的所有测试应用程序 但是 我更习惯于处理 PHP 在 PHP 中我只会存储一个带有时间长度的日期字段 现在 我想知道在 Meteor 中处理日期的最佳方式
  • ElasticSearch进入“只读”模式,节点无法更改

    晚上我的 ES 集群 由 5 个数据节点 3 个主节点组成 发生了一些事情 我不知道发生了什么 但所有索引和数据都被删除 集群进入 只读 模式 可能被黑客攻击了 When trying to get Kibana running I get
  • python:从html获取图像链接

    来自这样的 html rss 片段 div class div p a href alt src http link to image width a span 我想获取图像源链接 http link to image jpg 我怎样才能在
  • jQuery 中窗口调整大小事件触发两次

    我运行了下面的代码 document ready function var ivar 0 window resize function console log window height window height ivar 每当我调整大小
  • 是removeFromSuperview释放了对象吗?

    我在用removeFromSuperview用于从其超级视图中删除视图 我也在使用release after removeFromSuperview在该对象上 有时它工作正常 但有时会提供错误的访问权限 is removeFromSuper
  • BigCommerce webhook 未触发

    我能够成功为我的 BigCommerce 商店设置 Webhook 但是 我没有收到商店的任何请求 当我创建 webhook 时 我收到了以下响应 这让我认为它工作正常 id 437 client id dagb0rxpdd2o3znkeb
  • I18n 停止工作

    我总是使用这个脚本来编译 django po 并且它总是有效 bin sh django admin py makemessages a django admin py compilemessages 突然它停止工作 并出现以下错误 i18
  • Windows Phone 模拟器需要缺少 Hyper-V

    我是 Windows Phone 8 的初学者 我安装了 Windows Phone 8 SDK 当我启动模拟器时 出现此错误消息 Windows Phone 模拟器需要 Hyper V 您的 PC 缺少 运行 Hyper V 需要以下先决
  • 在我的混合模型上使用 lme4 预测函数时遇到问题

    我在尝试在混合模型上使用 lme4 预测函数时遇到了一些困难 在进行预测时 我希望能够将一些解释变量设置为指定水平 但对其他变量进行平均 以下是一些虚构的数据 它们是我的原始数据集的简化版 无意义版本 a lt data frame TLR
  • 设置自定义对话框的内容描述

    我怎样才能设置contentDescription当我的对话框打开时由辅助服务读取 我目前正在使用具有自定义布局的对话框来显示阻塞的加载屏幕和语音contentDescription是 警报 在这种情况下不合适 谢谢 您可以创建子类Dial
  • 从初始化列表转换为“A”将使用显式构造函数“A::A(int)”

    我正在尝试将旧的 C 03 代码库迁移到 C 11 但我无法理解 gcc 在以下情况下警告我的内容 g std c 03 t cxx g std c 11 t cxx t cxx In function int main t cxx 8 2
  • Android Studio 中的 JNI 文件夹

    我正在尝试在 Android Studio 中制作 helloy jni 应用程序 但有例外 06 27 13 17 19 099 12714 12714 com example testjni2 E AndroidRuntime FATA