Android Studio 2.3.3不会从JAR加载类文件

时间:2017-06-27 21:21:41

标签: java android android-studio unity3d jar

我已将jar文件复制到项目的libs文件夹中。通常它会显示其中包含的所有文件。对于这个JAR文件,它不会显示嵌入在其中的类文件,但会显示清单文件。

假设jar是custom-unity-activity.jar,目录结构是com \ custom \ activity \ custom-unity-activity.class。至于Android Studio得到的是“com.custom”,然后不再进一步。编译器也无法解析类文件中定义的符号,因此它肯定不会读取它。

我知道这个jar文件是有效的,因为它已在不同的构建环境下成功使用。

Project screenshot

1 个答案:

答案 0 :(得分:0)

将Unity的项目导入现有的Android项目真的很难。解决方案是以相反的方式做到这一点。

为jar或.arr插件构建Android Studio项目,然后将其放在Unity项目中:<ProjectName>Assets\Plugins\Android

如果您要加载Android Studio项目活动,则必须修改AndroidManifest.xml以让Unity知道,然后将其放在:<ProjectName>Assets\Plugins\Android

下面是XML应该是什么样子。它将指定要加载的活动名称,并且还将告诉Unity允许您使用Android Studio项目中的输入事件,否则Unity将窃取这些事件。下面的清单假设Android Studio活动名称是&#34; MainActivity&#34;。

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

  <uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="19" />

  <supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />

  <application android:icon="@drawable/app_icon" android:label="@string/app_name">

    <activity android:name=".MainActivity"
             android:label="@string/app_name"
             android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="landscape">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    </activity>
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="landscape">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    </activity>

  </application>
</manifest>