JNI没有找到我的其他活动

时间:2013-05-20 13:03:00

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

我在java + c ++上有一个应用程序。

IDE是 - 带有android插件的visual studio。

我有2个活动:1-nativeActivity,2。对java的活动。

java上的活动是主要的。 在java活动之后我开始使用nativeactivity。在java活动中有一个购买经理。我希望通过本地活动给他打电话。

<activity android:configChanges="orientation|keyboardHidden" android:name="android.app.NativeActivity"
              android:label="@string/app_name" android:theme="@android:style/Theme.Translucent">
  <meta-data android:name="android.app.lib_name" android:value="main" />
</activity>

<activity android:name="BillingActivity"
              android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

在onCreate BillingActivity中我启动了nativeActivity。 在我的原生活动中

    jclass billing = env->FindClass("Lcom/crystalreality/crystaltv/BillingActivity;");

但我有

    jclass billing = env->FindClass("Lcom/crystalreality/crystaltv/BillingActivity;");
    05-20 16:40:55.061: W/System.err(28592): java.lang.NoClassDefFoundError: Lcom/crystalreality/crystaltv/BillingActivity;

2 个答案:

答案 0 :(得分:0)

我怀疑你不需要&#34; L&#34;在你的班级信号的开头(和#34;;&#34;在最后)。

jclass billing = env->FindClass("com/crystalreality/crystaltv/BillingActivity");

你应该只需要L ...;如果你正在寻找一个数组类,请形成sigs。这是我对these lines文档的理解。

如果失败了,你有没有使用任何混淆java方面?

答案 1 :(得分:0)

FindClass的正确用法是这样的:

env->FindClass("com/crystalreality/crystaltv/BillingActivity");