应用放到源码编译的引入包问题

在Android源码编译时,遇到引入包的问题。需要在Maven仓库下载对应版本的jar包,例如GreenDao的3.1.0版本。Android.mk文件中的错误包括:忽略依赖包,如android-async-http需要同时引入httpclient-4.5.8.jar;以及未引入greendao-api导致GreenDao相关文件找不到,需重新生成这些文件。

应用放到源码编译的引入包问题

 

我们在AS里面加入的那些包在Android系统里面肯定是没有的,我们首先要在maven仓库里下载对应版本的jar包。下载步骤:

1.翻墙

2.进入一个GreenDao的maven仓库,如:

https://mvnrepository.com/artifact/org.greenrobot/greendao/3.1.0

 

 

 

点击下载就可以了。

 

先粘贴一下我的Android.mk文件:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
#LOCAL_RESOURCE_DIR += frameworks/opt/datetimepicker/res
#
#ifeq ($(TARGET_BUILD_APPS),)
#LOCAL_RESOURCE_DIR += frameworks/support/design/res
#LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
#LOCAL_RESOURCE_DIR += frameworks/support/v7/gridlayout/res
#LOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/res
#else
#LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/design/res
#LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
#LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/res
#LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/recyclerview/res
#endif

LOCAL_SRC_FILES := $(call all-java-files-under, java)

LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := ParentManager
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := true
LOCAL_PROGUARD_ENABLED := full
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags

LOCAL_STATIC_JAVA_LIBRARIES += android-support-design
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview

#third part jars
LOCAL_STATIC_JAVA_LIBRARIES += greenDao
LOCAL_STATIC_JAVA_LIBRARIES += greendao-api
LOCAL_STATIC_JAVA_LIBRARIES += eventBus
LOCAL_STATIC_JAVA_LIBRARIES += zxing
LOCAL_STATIC_JAVA_LIBRARIES += httpClient
LOCAL_STATIC_JAVA_LIBRARIES += android-async-http
LOCAL_STATIC_JAVA_LIBRARIES += gson-2.7

include $(BUILD_PACKAGE)

#build jars
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += greendao-api:libs/greendao-api-3.2.2.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += greenDao:libs/greendao-3.1.0.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += eventBus:libs/eventbus-3.2.0.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += zxing:libs/zxingcore-3.4.0.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += httpClient:libs/httpclient-4.5.8.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += android-async-http:libs/android-async-http-1.4.10.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += gson-2.7:libs/gson-2.7.jar
include $(BUILD_MULTI_PREBUILT)

 

自己写了一个apk放进源码编译,出现了一堆错误。

错误一:

只引入了项目里看得到的jar包,却忘记了jar的依赖包:

比如apk里面我们有引入

implementation 'com.loopj.android:android-async-http:1.4.10'

我们在Android.mk里面不仅需要加入LOCAL_STATIC_JAVA_LIBRARIES += android-async-http

还需要加入httpclient-4.5.8.jar这个jar(注意要根据错误log来下载对应的依赖jar包)

引入implementation 'com.loopj.android:android-async-http:1.4.10'

 

错误二:

由于项目使用了GreenDao,在源码编译时报错:

ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:9: The import cn.chinachip.parentcontrol.model.DaoMaster cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:10: The import cn.chinachip.parentcontrol.model.DaoSession cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:30: DaoSession cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:55: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:55: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:57: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:57: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:58: DaoSession cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:61: DaoSession cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/ControlApplication.java:62: DaoSession cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:12: The import cn.chinachip.parentcontrol.model.AppDao cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:13: The import cn.chinachip.parentcontrol.model.DaoMaster cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:14: The import cn.chinachip.parentcontrol.model.DaoSession cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:36: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:44: DaoMaster cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:48: DaoSession cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/database/DbController.java:56: AppDao cannot be resolved to a type

找不到中间生成的文件DaoMaster ,AppDao等。

拷贝AndroidStudio里生成的这些文件再次编译:

ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:4: The import org.greenrobot.greendao.annotation.Entity cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:5: The import org.greenrobot.greendao.annotation.Id cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:6: The import org.greenrobot.greendao.annotation.NotNull cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:7: The import org.greenrobot.greendao.annotation.Generated cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:9: Entity cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:11: Id cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:14: NotNull cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:21: Generated cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/App.java:22: NotNull cannot be resolved to a type

这个问题是由于没有引入greendao-api的jar包导致的,导入后重新编译,报错如下:

ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoSession.java:46: Note cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoSession.java:46: NoteDao cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoSession.java:58: NoteDao cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoSession.java:59: NoteDao cannot be resolved to a type
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoMaster.java:25: NoteDao cannot be resolved
ERROR: /home/lmzhong/lmzhong-work/android-code7.1/msm8976-LA.BR.1.3.6.c2-01420/packages/apps/ParentManager/java/cn/chinachip/parentcontrol/model/DaoMaster.java:31: NoteDao cannot be resolved

这个报错就是Note实体删除了导致,在Android Studio重新生成这些文件就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值