android 9 源码编译错误 error: cannot find symbol import android.os.UpdateEngine

今天导入UpdateEngine包,编译的时候报错:

vendor/nxp-opensource/fsl_imx_demo/NaLongUpgrade/app/src/main/java/com/mile8/nalongupgrade/MainActivity.java:9: error: cannot find symbol
import android.os.UpdateEngine;
                 ^
  symbol:   class UpdateEngine
  location: package android.os
vendor/nxp-opensource/fsl_imx_demo/NaLongUpgrade/app/src/main/java/com/mile8/nalongupgrade/MainActivity.java:23: error: cannot find symbol
	private UpdateEngine ue;
	        ^
  symbol:   class UpdateEngine
  location: class MainActivity
2 errors
ninja: build stopped: subcommand failed.
09:41:17 ninja failed with: exit status 1

查度娘,说是  删除Android.mk中的LOCAL_SDK_VERSION := current

 

这样弄后报错:

vendor/nxp-opensource/fsl_imx_demo/NaLongUpgrade/Android.mk: error: NaLongUpgrade: Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS, 
build/make/core/sdk_check.mk:21: error: done.
09:49:19 ckati failed with: exit status 1

#### failed to build some targets (21 seconds) ####

对比源码里面另一个app工程的mk文件,发现将 LOCAL_SDK_VERSION 更改为 LOCAL_PRIVATE_PLATFORM_APIS :

# LOCAL_SDK_VERSION := current
LOCAL_PRIVATE_PLATFORM_APIS := current

 编译通过

 

参考:

https://blog.csdn.net/jsonz/article/details/41117593

### 回答1: 这个错误通常是因为编译器找不到指定的符号,这里的符号是 `sendBroadcast()`。 可能的原因有: 1. 没有 `import android.content.Intent`,因为 `sendBroadcast()` 方法需要 `Intent` 类。 2. `sendBroadcast()` 方法没有在当前类或父类中定义。请确保你在调用 `sendBroadcast()` 方法之前已经声明了该方法,或者你的代码中缺少某些必要的依赖库。 3. 如果你使用了 proguard,请检查它是否正确地保留了 `sendBroadcast()` 方法。 如果以上方法都不能解决你的问题,可以提供更多的上下文和错误信息,以便更好地帮助你解决问题。 ### 回答2: 首先,这个错误"error: cannot find symbol"表示在编译过程中找不到符号。在这种情况下,问题出现在sendBroadcast(intent)这一行。 这个错误通常表示"sendBroadcast"方法无法被识别或找不到。要解决这个问题,可以考虑以下几个方案: 1. 检查是否正确导入了android.content.Context类。sendBroadcast方法是Context类的一个方法,确保导入了正确的类。 2. 检查import语句。请确认是否正确导入了android.content.Intent类。sendBroadcast方法需要一个Intent对象作为参数,如果没有正确导入该类,就会导致找不到符号的错误。 3. 检查intent对象是否正确创建。确保在sendBroadcast方法之前,intent对象已经被正确创建且初始化。 4. 如果intent对象被正确创建和初始化,但仍然出现错误,那么可以尝试清除项目并重新构建。有时候编译器可能会出错,重建项目可以解决此类问题。 如果以上步骤都没有解决问题,可以考虑进一步检查代码中是否存在其他错误或拼写错误,并尝试再次编译和构建项目。如果问题仍然存在,可以查阅相关文档或在开发者社区寻求帮助。 ### 回答3: error: cannot find symbol编译错误,意思是找不到符号。具体到这个错误,是因为代码中使用了sendBroadcast(intent)这个方法,但是编译器找不到这个方法的定义。这个问题有几种可能的原因: 1. 没有正确导入所需的类库:Android中的广播是使用android.content.Context类中的sendBroadcast方法,因此需要确保在代码中正确导入了android.content.Context类。 2. 使用了错误的变量名或者方法名:在代码中可能将变量名或者方法名写错了,导致编译器无法找到正确的方法。要检查代码中sendBroadcast方法所在的类和方法名是否正确。 3. 项目中缺少了对应的依赖项:有时候会遇到项目中缺少了广播相关的依赖项,导致编译器无法找到对应的方法。可以检查项目的Gradle或者Maven配置文件,确保添加了正确的依赖项。 解决这个问题的方法是: 1. 确保正确导入了android.content.Context类。 ```java import android.content.Context; ``` 2. 检查代码中sendBroadcast方法所在的类和方法名是否正确,并且没有拼写错误。 比如,如果我们的代码是在Activity类中使用sendBroadcast方法,那么我们可以这样写: ```java sendBroadcast(intent); ``` 3. 检查项目的Gradle或者Maven配置文件,确保添加了正确的依赖项。 总之,通过检查导入的类库、变量名、方法名和依赖项,可以纠正这个错误并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值