【问题标题】:Android Studio 2.3.3 won't load class file from JARAndroid Studio 2.3.3 不会从 JAR 加载类文件
【发布时间】:2017-12-01 02:08:01
【问题描述】:

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

假设 jar 是 custom-unity-activity.jar,目录结构是 com\custom\activity\custom-unity-activity.class。就 Android Studio 而言,它是“com.custom”,然后就不再赘述了。编译器也无法解析类文件中定义的符号,所以它肯定没有读进去。

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

【问题讨论】:

    标签: java android android-studio unity3d jar


    【解决方案1】:

    将 Unity 的项目导入现有的 Android 项目真的很困难。解决方案是相反。

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

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

    以下是 XML 的外观。它会指定要加载的活动名称,还会告诉 Unity 允许您使用 Android Studio 项目中的输入事件,否则,Unity 将窃取这些事件。下面的清单假定 Android Studio 活动名称是“MainActivity”。

    <?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>
    

    【讨论】:

    • 感谢您的努力!我不知道这个问题的根本原因,但作为一种解决方法,我发现通过使用 IntelliJ (2017.1.4) 而不是 Android Studio,它可以加载 JAR 文件并按预期使用它。不理想,但它至少让我工作。 imgur.com/a/OBnWE
    • 你必须使用 Android Studio。这就是 Android 开发的未来。甚至 Eclipse 对于 Android 来说都是死的。至于IntelliJ(2017.1.4),不知道支持多久。
    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2017-04-11
    相关资源
    最近更新 更多