300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > as工程放到源码编译_关于AS高版本SDK编译生成的apk放入低版本android源码中集成编译...

as工程放到源码编译_关于AS高版本SDK编译生成的apk放入低版本android源码中集成编译...

时间:2019-01-11 21:40:46

相关推荐

as工程放到源码编译_关于AS高版本SDK编译生成的apk放入低版本android源码中集成编译...

做dfu功能的时候,遇到的这样一个问题。添加了dfu的依赖之后,会要求编译的sdk为28,我的AS版本默认生成的是27.然而target版本是25.

// The DFU Library is imported automatically from jcenter:

implementation 'no.nordicsemi.android:dfu:1.8.1'

implementation 'com.google.code.gson:gson:2.8.5'

修改sdk minsdk 和targetsdk版本

android {

compileSdkVersion 28

defaultConfig {

applicationId "com.qiyi.newdfulibrary"

minSdkVersion 18

targetSdkVersion 25

versionCode 1

versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

添加合适的支持

implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support:design:28.0.0'

生成apk后,准备放入到

vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8998/system/priv-app

随系统编译,然后就如下错误

AILED: /bin/bash -c "(rm -f out/target/product/msm8998/obj/APPS/controllerota_intermediates/oat/arm64/package.odex ) && (mkdir -p out/target/product/msm8998/obj/APPS/controllerota_intermediates/oat/arm64/ ) && (ANDROID_LOG_TAGS=\"*:e\" out/host/linux-x86/bin/dex2oatd --runtime-arg -Xms64m --runtime-arg -Xmx512m --runtime-arg -classpath --runtime-arg \"&\" --boot-image=out/target/product/msm8998/dex_bootjars/system/framework/boot.art --dex-file=vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8998/system/priv-app/controllerota/controllerota.apk --dex-location=/system/priv-app/controllerota/controllerota.apk --oat-file=out/target/product/msm8998/obj/APPS/controllerota_intermediates/oat/arm64/package.odex --android-root=out/target/product/msm8998/system --instruction-set=arm64 --instruction-set-variant=generic --instruction-set-features=default --include-patch-information --runtime-arg -Xnorelocate --no-generate-debug-info --abort-on-hard-verifier-error --no-inline-from=core-oj.jar --compile-pic )"

dex2oatd F 609 720 art/runtime/:6620] Check failed: vtable_entry != other_entry && !name_comparator.HasSameNameAndSignature( other_entry->GetInterfaceMethodIfProxy(pointer_size)) vtable entries 1047 and 1052 are identical for java.lang.Class in method int android.support.v7.widget.DropDownListView.lookForSelectablePosition(int, boolean) and int android.support.v7.widget.MenuPopupWindow$MenuDropDownListView.lookForSelectablePosition(int, boolean)

dex2oatd F 609 720 art/runtime/:422]Runtime aborting...

Aborting thread:

原因是apk要预置进源码的时候,会对apk进行一个解析,好形成odex文件加速apk的运行,但是基于高版本的sdk开发的apk里面的一些资源是无法被低版本正确的解析的,解决办法就是,在mk文件里面禁止对该apk进行odex的处理。LOCAL_DEX_PREOPT := false

include $(CLEAR_VARS)

LOCAL_MODULE := controllerota

LOCAL_MODULE_OWNER := qcom

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_CLASS := APPS

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_DEX_PREOPT := false

LOCAL_MODULE_SUFFIX := .apk

LOCAL_SRC_FILES := system/priv-app/controllerota/controllerota.apk

LOCAL_PRIVILEGED_MODULE := true

include $(BUILD_PREBUILT)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。