1

私はJava + C ++のアプリケーションを持っています。

IDE は - Android プラグインを使用したビジュアル スタジオです。

私は2つのアクティビティを持っています:1-nativeActivity、2-Javaのアクティビティ。

Javaでの活動がメインです。Javaアクティビティの後、ネイティブアクティビティを開始します。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

FindClass の正しい使い方は次のようになります。

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

クラス sig の先頭 (および末尾の ";") に "L" は必要ないと思います。

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

L... だけが必要です。配列クラスを探している場合は、sigs を形成します。それは、これらの一連のドキュメントからの私の理解です。

それができない場合、Java 側で難読化を使用しましたか?

于 2013-05-20T13:12:24.287 に答える