Kar*_*vam 125 c++ java android android-ndk
我目前正在开展一个项目,我必须使用纯粹的原生ndk.当我尝试从Irrlicht引擎源运行helloworld示例时,它工作正常.然后我尝试在我的项目中使用它,遵循该示例的相同格式.但我得到了:
03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]
Run Code Online (Sandbox Code Playgroud)
在运行我的项目时.
这是我的main.cpp文件:
#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}
Run Code Online (Sandbox Code Playgroud)
#万一
在Android.mk中:
LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json
LOCAL_SRC_FILES := android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Run Code Online (Sandbox Code Playgroud)
我在AndroidManifest.xml中给出了Activity名称:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.irrlicht.example1"
android:versionCode="1"
android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
<activity android:name="android.app.POMActivity"
android:label="HelloWorldMobile1"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:clearTaskOnLaunch="true">
<meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />
Run Code Online (Sandbox Code Playgroud)
我在这做什么错?如果必要,我会发布完整的代码.
Ash*_*bas 80
我尝试了所有可能的选项,但结果为零.最后我找到了对我有帮助的正确解决方案.只需禁用Instant Run Go to File - > Settings - > Build,Execution,Deployment - > Instant Run - >取消选中即时运行复选框.运行你的应用程序一次,这个apk文件正常工作..
mns*_*lim 64
我有类似的问题,这是我的解决方案:
您也可以查看此答案.
Sus*_*hil 41
这似乎是你的问题.清单中活动的相对路径不正确:
<activity android:name="android.app.POMActivity"
Run Code Online (Sandbox Code Playgroud)
用以下内容替换:
<activity android:name=".POMActivity"
Run Code Online (Sandbox Code Playgroud)
要么
<activity android:name="com.irrlicht.example1.POMActivity"
Run Code Online (Sandbox Code Playgroud)
Vla*_*lad 24
删除设备上的应用程序和清理项目对我来说是有效的
Aka*_*iya 23
我应该通过看到来理解这个问题
dex错误
但是花了半天时间才解决这个问题.
我通过遵循android开发者页面的说明解决了这个问题:https:
//developer.android.com/studio/build/multidex.html
首先将其添加到gradle.build文件:
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
然后扩展Application类(或者按照上面链接中的说明使用类声明应用程序类MultiDexApplication
或覆盖AndroidManifest.xml
函数attachBaseContext()
.
这就是全部,它解决了这个问题.
pet*_*ejl 21
当布局中有自定义视图时,也会发生此异常,如下所示:
<com.example.MyView
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
并且您将视图的包名称从"com.example"更改为其他内容,但您也忘记在布局中更改它.
nic*_*ich 16
试试Clean Project&Rebuild Project.
Man*_*ddy 10
对于任何拥有multidex启用的人来说,写这个
在build.gradle中
apply plugin: 'com.android.application'
android {
defaultConfig {
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:multidex:1.0.1'
}
Run Code Online (Sandbox Code Playgroud)
写一个类EnableMultiDex
如下
import android.content.Context;
import android.support.multidex.MultiDexApplication;
public class EnableMultiDex extends MultiDexApplication {
private static EnableMultiDex enableMultiDex;
public static Context context;
public EnableMultiDex(){
enableMultiDex=this;
}
public static EnableMultiDex getEnableMultiDexApp() {
return enableMultiDex;
}
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
Run Code Online (Sandbox Code Playgroud)
并在Application标记中AndroidManifest.xml
写入此className
<application
android:name="YourPakageName.EnableMultiDex"
android:hardwareAccelerated="true"
android:icon="@drawable/wowio_launch_logo"
android:label="@string/app_name"
android:largeHeap="true"
tools:node="replace">
Run Code Online (Sandbox Code Playgroud)
Rom*_*ald 10
如果项目正在编译之前,只需使用以下命令清除缓存:
./gradlew clean
要么
./gradlew cleanBuildCache
或者用于窗户
gradlew cleanBuildCache
https://developer.android.com/studio/build/build-cache.html
就我而言,这个问题是由 Kotlin 引起的。在我现有的代码中,有一个用 Kotlin 编写的类。我构建了应用程序,它安装了,并且一旦第一个活动打开应用程序就崩溃了。在 logcat 中显示了此错误。然后,我从 Kotlin 网站的 app gradle 文件中更新了我的 Kotlin 版本。再次构建应用程序,然后它运行良好。
对于现在遇到此问题的任何人,使用 android studio 4.0+,您只需启用此处提到的 java 8
android {
defaultConfig {
...
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Run Code Online (Sandbox Code Playgroud)
打开“AndroidManifest”文件并检查是否有错误
或
检查您是否声明了该活动名称(当我们复制+粘贴活动类时我们会忘记该名称)。
就我而言,我已将所有出现的“com”替换为“ctrl”+“shift”+“R”命令,这也更改了清单中活动的名称(以 com 开头)。
小智 6
当您使用multidex时,然后尝试使用MultiDexAppication而不是Application扩展您的应用程序类,并覆盖以下方法,这需要Android 5.0以下(因为5.0及以上支持multidex)
@Override
protected void attachBaseContext(Context base)
{
super.attachBaseContext(base);
MultiDex.install(BaseApplication.this);
}
Run Code Online (Sandbox Code Playgroud)
并在依赖项中添加此项
compile 'com.android.support:multidex:1.0.1'
Run Code Online (Sandbox Code Playgroud)
我们不需要具有扩展MultiDexApplication的自定义Application类.相反,我们可以在AndroidManifest.xml上这样做
<application
android:name="android.support.multidex.MultiDexApplication"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Run Code Online (Sandbox Code Playgroud)
以及build.gradle(Module:app)上的这个,
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
...
compile 'com.android.support:multidex:1.0.2'
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
可能的原因之一是 Apps AndroidManifest.xml 文件中的活动路径不正确。使用完整的相对路径在 AndroidManifest.xml 中注册活动,如下所示。
<activity android:name="<full_path>.ActivityName" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
175594 次 |
最近记录: |