为了解决更大的问题,我创建了一个示例应用程序,我可以在其中测试问题所在。代码与单视图向导生成的代码基本相同。
当我通过appliaction > run
在桌面上启动时,它运行正常。当我通过other > androidInstall
从我的设备运行它时,我得到一个黑屏(我之前也运行过clean
)。所以我发起了adb logcat
并发现了这个错误:
E DalvikLauncher:java.lang.ClassNotFoundException:没找到类 路径上的“com.gluonapplication.GluonApplication”:DexPathList [[zip文件 “/data/app/com.gluonapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.gluonapplication-1/lib/arm, /data/app/com.gluonapplication-1/base.apk!/lib/armeabi,/ vendor / lib, /系统/ lib中]]
这并不奇怪,因为那里没有课程。主要类是main.GluonApplication
(可能包名不好,但它是测试应用程序)。 build.gradle
专门指定mainClassName = 'main.GluonApplication'
。那么为什么Android版本会在其他地方寻找呢?我需要编辑/重新创建清单吗?在以前版本的应用程序可能存在并影响当前版本的地方是否存在某种缓存?
答案 0 :(得分:1)
每当您使用IDE插件创建项目时,都会有一个默认的清单AndroidManifest.xml
,添加到src/android/
文件夹中。
如果您打开它,您将找到分配的包名称,该名称将与主类的包及其全名相匹配。
根据您在日志中找到的内容,这将是您当前的清单:
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gluonapplication"
android:versionCode="1"
android:versionName="1.0">
<supports-screens android:xlargeScreens="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="21"/>
<application android:label="GluonApplication" android:name="android.support.multidex.MultiDexApplication" android:icon="@mipmap/ic_launcher">
<activity android:name="javafxports.android.FXActivity" android:label="GoNative" android:configChanges="orientation|screenSize">
<meta-data android:name="main.class" android:value="com.gluonapplication.GluonApplication"/>
<meta-data android:name="debug.port" android:value="0"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
只需确保包名称与实际名称匹配,否则进行必要的更改。
另请注意,在Android上,您需要至少两个单词和一个有效包名称的点,例如com.gluonapplication
。