应用于API 25到21但不在API 19下的应用程序

时间:2017-03-23 13:07:02

标签: android c++ api java-native-interface

我已经编写了一个应用程序,其中Java按下按钮后调用C ++代码。 应用程序按照预期在API 25到21但不在19下运行,麻烦似乎是在C ++代码上。

jclass cls = env->FindClass("<PATH_TO_CLASS_");  
assert(cls != NULL);  
jfieldID info5_ID = env->GetFieldID(cls, "info5", "java/lang/String");  
assert(info5_ID != NULL);

在Android API 25到21上:
info5_ID与NULL不同,app继续

在Android API 19及以下:
info5_ID为NULL,因此断言doest it job ...

是否有解决方法或类似的东西?除了这个帖子Android App crashes on API level 19 but works fine on API above 19之外,我没有找到任何研究结果 但我不确定这是否应该用于我的应用程序。

这是我的manisfest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cpi.testjniapi19">

  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>

  <application
      android:name=".Adi"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme"
      android:vmSafeMode="true">
      <activity
          android:name=".MainActivity"
          android:screenOrientation="portrait">
          <intent-filter>
              <action android:name="android.intent.action.MAIN"/>
              <category   android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>
      </activity>
  </application>

</manifest>

提前致谢,
Clmnt

1 个答案:

答案 0 :(得分:0)

正如Richard Critten指出的那样,将"java/lang/String"更改为"Ljava/lang/String;"已解决了问题 _ /!\ _不要忘记“;”_ /!\ _
荣誉理查德。