1

我有一个关于 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;
4

2 回答 2

0

我怀疑您不需要在班级签名的开头(和结尾的“;”)使用“L”。

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

你应该只需要 L ...; 如果您正在寻找数组类,请形成 sigs。这是我从这些文档中的理解。

如果做不到这一点,您是否使用过任何混淆 java 端?

于 2013-05-20T13:12:24.287 回答
0

FindClass 的正确用法是这样的:

env->FindClass("com/crystalreality/crystaltv/BillingActivity");
于 2013-05-20T13:14:31.657 回答