继承NativeActivity 找不到启动了类XXXActivity,Didn‘t find class “com.audiokinetic.IntegrationDemo.XXXActivity

背景

在学习NativeActivity 纯C++应用的时候。编译运行wwise库中的IntegrationDemo的时候,需要修改一些代码,使得纯C++d代码也能通过Java的Activity启动

通过继承的方法启动NativeActivity

C++an安卓程序的本质是通过jni调用系统的NativeActivity这个特殊的activity,本质也是Activity。ndk的native_app_glue是帮助我们使用jni启动NativeActivity的框架。
所以只需要创建一个普通的Activity继承NativeActivity,实现onCreate(Bundle savedInstanceState)即可。

public class MainActivity extends NativeActivity {

   @Override
    public void onCreate(Bundle savedInstanceState) {
   		super.onCreate(savedInstanceState); //这句不能少
    }
}

然后在ActivityManifeast.xml中将按启动类设置为MainActivity

<!--activity android:name="android.app.NativeActivity"-->
<activity android:name=".MainActivity"
......>
	......
	<intent-filter>
		<action android:name = "android.intent.action.MAIN"/>
		<category android:name= "android.intent.category.LAUNCHER"/>
	</intent-filter>
</activity>

编译的时候出现找不到类的错误

java.lang.ClassNotFoundException: Didn't find class "com.audiokinetic.IntegrationDemo.MainActivity"

在这里插入图片描述
网上大部分解释是Android的android:name的路径设置错误。
这里的原因并不是这个。

解决

wwise的官方安卓demo中。ActivityManifeast将<application下的一个属性hasCode设置成了false

<!--android:hasCode="false"  改用下面的true-->
<application
android:hasCode="true"
.....>
	<activity android:name=".MainActivity"
	......>
		......
		<intent-filter>
			<action android:name = "android.intent.action.MAIN"/>
			<category android:name= "android.intent.category.LAUNCHER"/>
		</intent-filter>
	</activity>
</application>

关于这个字段的解释是:表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码。(别处搬过来的)

设置成true或者去掉就好了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Griza_J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值