我正在使用android p并编译androidx。在调试/ beta中工作得很好,但是当我发布时,我在运行时得到了一个神秘的崩溃:
2018-06-24 00:21:26.080 11971-11971/?e/loadedapk:无法
实例化appcomponentfactory
java.lang.ClassNotFoundException:在路径:dexpathlist[[zip]上未找到类“androidx.core.app.CoreComponentFactory”
文件
“/data/app/app.itsur.elegantstocks-euvzwddgzplhm0hpa90vwa==/base.apk”],nativelibrarydirectories=[/data/app/app.itsur.elegantstocks-euvzwddgzplhm0hpa90vwa===/lib/x86,
/系统/lib]]
在Dalvik.Stase.BaseDeXCultLooul.FiffCype(BaseDeXCubLoopule.java:126)
在java.lang.classloader.loadClass上(classloader.java:379)
在java.lang.classloader.loadClass上(classloader.java:312)
在Android .App.Load DaPk.CudiaAppF工厂(LoADDAPK.java:226)
在Android .App.Load DaPk.CurtRoopUpDeCelsLoad Server(LoADDAPK.java:731)
在Android .App.Load DaPk.GETCaseLoad(LoADDAPK.java:772)
在Android .App.Load DaPk.GETReales(LoADDAPK.java:994)
在安卓.App.CurrimePult.CurdiaAppEngult(CurrimthPL,Java:2345)
在android.app.activitythread.handlebindapplication上(activitythread.java:5736)
Auto.App.ActuviyTrime.Access 1000美元(ActuviyTrim.java:197)
在安卓.App.ActuviyT线$ H.HuffLeMeSeX(ActuviyTrim.java:1634)
在android.os.handler.DispatchMessage上(handler.java:106)
在android.os.looper.loop上(looper.java:193)
在Addio.App.ActuviyTrime.Mead(ActuviyToel.java:6642)
在java.
在COM.Android .No.OS.RunTimeIn $方法和AdjSaleal.Run(RunTimeIn.java:493)
在com.android.internal.os.zygenetinit.main上(zygenetinit.java:858)
2018-06-24 00:21:26.145 1667-1854/?E/表面:
Ro.SF.LCD U密度必须定义为建筑属性2018-06-24
00:21:26.233 1667-1703/?e/surfaceflinger:ro.sf.lcd_密度必须为
定义为建筑财产2018-06-24 00:21:29.627 1796-1913/?
e/taskpersister:访问recents目录(目录)时发生文件错误
不存在?).2018-06-24 00:21:30.087 11971-11971/?
E/ANDROIDRunTime:致命异常:主要
进程:app.itsury.elegantstocks,PID:11971
参数:指定为非null的参数为null
在app.itsur.elegantstocks.a.b.a(未知来源:2)
在app.itsur.elegantstocks.feature.navigator.b.a$a.a(未知来源:24)
在app.itsur.elegantstocks.feature.navigator.b.a.a(未知来源:13)
在app.itsur.elegantstocks.feature.navigator.b.a.a(未知来源:2)
位于androidx.recyclerview.widget.recyclerview$a.a(未知源:0)
位于androidx.recyclerview.widget.recyclerview$A.B(未知来源:29)
在androidx.recyclerview.widget.recyclerview$p.a(未知来源:39)
在androidx.recyclerview.widget.recyclerview$p.a(未知来源:510)
在androidx.recyclerview.widget.recyclerview$p.a(未知来源:5)
在androidx.recyclerview.widget.recyclerview$p.c(未知来源:1)
在androidx.recyclerview.widget.linearlayoutmanager$c.a(未知
来源:11)
位于androidx.recyclerview.widget.linearlayoutmanager.a(未知源:0)
在androidx.recyclerview.widget.linearlayoutmanager.a(未知来源:44)
在androidx.recyclerview.widget.linearlayoutmanager.c(未知来源:371)
在androidx.recyclerview.widget.recyclerview.o(未知来源:42)
在androidx.recyclerview.widget.recyclerview.q(未知来源:41)
在androidx.recyclerview.widget.recyclerview.onlayout(未知来源:5)
在安卓.view .view .Dead(View,Java:20670)
在android.view.viewgroup.layout上(viewgroup.java:6194)
在Android .WIDGET.FrAMLayayOut.LayOutSt娃(FrAMLayayOut.java:323)
在android.widget.framelayout.onlayout上(framelayout.java:261)
在android.view.view.layout上(view.java:20670)
在android.view.viewgroup.layout上(viewgroup.java:6194)
在androidx.constraintlayout.widget.constraintlayout.onlayout(未知
来源:66)
在安卓.view .view .Dead(View,Java:20670)
在android.view.viewgroup.layout上(viewgroup.java:6194)
在android.widget.framelayout.layoutChildren上(framelayout.java:323)
在Android环境下的小部件。
在安卓.view .view .Dead(View,Java:20670)
在android.view.viewgroup.layout上(viewgroup.java:6194)
在androidx.swiperefreshlayout.widget.swiperefreshlayout.onlayout(未知
来源:60)
在安卓.view .view .Dead(View,Java:20670)
在Android环境下的布局(Java:6194)
在ANDROIDX上。
资料来源:143)
在androidx.coordinatorlayout.widget.coordinatorlayout.a(未知
资料来源:32)
在androidx.coordinatorlayout.widget.coordinatorlayout.onlayout(未知
来源:48)
在android.view.view.layout上(view.java:20670)
在Android环境下的布局(Java:6194)
在Android .WIDGET.FrAMLayayOut.LayOutSt娃(FrAMLayayOut.java:323)
在android.widget.framelayout.onlayout上(framelayout.java:261)
在安卓.view .view .Dead(View,Java:20670)
在android.view.viewgroup.layout上(viewgroup.java:6194)
在Android中.WIDGET .LayStay.StEngStfFrime.(线性布局. Java:1812)
在android.widget.linearlayout.layoutVertical上(linearlayout.java:1656)
在android.widget.linearlayout.onlayout上(linearlayout.java:1565)
在安卓.view .view .Dead(View,Java:20670)
在Android上.View .View Goop.Dead(View GROUP,Java:6194)
在Android .WIDGET.FrAMLayayOut.LayOutSt娃(FrAMLayayOut.java:323)
在Android环境下的小部件。
在安卓.view .view .Dead(View,Java:20670)
在Android上.View .View Goop.Dead(View GROUP,Java:6194)
在Android中.WIDGET .LayStay.StEngStfFrime.(线性布局. Java:1812)
在Android中. WIDGET .线性布局. LayOutStand(线性布局. Java:1656)
在android.widget.linearlayout.onlayout上(linearlayout.java:1565)
在安卓.view .view .Dead(View,Java:20670)
在Android上.View .View Goop.Dead(View GROUP,Java:6194)
在android.widget.framelayout.layoutChildren上(framelayout.java:323)
在Android环境下的小部件。
在COM.Android .No.Orth.DealVIEW .OnDead(DeloVIEW,Java:753)
在Android环境下,视图.布局(视图:Java 20670:)30.087?E/ANDROIDRunTime: AT
android.view.viewgroup.layout(viewgroup.java:6194)
在Android上.View .ViefRoTimpL.PrPrimeDead(ViefRooTimpL.java:2767)
在android.view.viewrootimpl.performTraversals上(viewrootimpl.java:2294)
在Android上.View .ViefRooTimPL。doTrAcess(ViefRooTimPL,Java:1447)
在Android上.View .ViefRooTimPL $ TracValSunnRel.Run(ViefRooTimPL,Java:7130)
在Android .View .CopooReals$CalbEdTrace.Run(编排程序. Java:935)
在安卓.View .编舞. DopLeBACK(编舞. Java:747)
在安卓.View。编舞。DoFrAME(编舞。Java:682)
在Android上.View .CordoRealgs$FrimDeDistPrimeField.Run(编排程序. Java:921)
在安卓.OS.Halder-HooLeCalBe后退(Helt.java:873)
在安卓.OS.Halder-Debug消息(HANDL.java:99)
在安卓.OS.Looper-Loo.(循环器.java:193)
在Addio.App.ActuviyTrime.Mead(ActuviyToel.java:6642)
在java.
在com.android.internal.os.runtimeinit$methodandargscaller.run(runtimeinit.java:493)
在COM.Android .No.OS.ZyGoTyIn.Mault(ZyGoTynIt.java:858)
2018-06-24 00:21:30.137 1796-1880/?E/输入调度程序:通道
5896582年
app.itsour.elegantstocks/app.itsour.elegantstocks.feature.navigator.navigatorActivity
(服务器)'~通道不可恢复地被破坏,将被处理!
2018-06-24 00:21:30.253 5198-9377/?E/EntrySyncManager:无法
确定账户名称:撤销请求2018-06-24 00:21:30.253
5198-9377/?e/NoWror:无法访问来自EngyPvices的数据。
执行异常。
com谷歌。
刷新条目的计划请求。客户端错误代码:3
在COM.谷歌.Un.U.L..O.D.EA(SooCyFr档:85)
在com.google.common.util.concurrent.d.get上(源文件:23)
在COM.谷歌.Un.U.L.R.L.GET(SooCyFr档:2)
在com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cai上(源文件:47)
在com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cah(源文件:176)
在谷歌。Android。Apps.gsa. StutoPuxin。NoSoo.B.A.BH.Run(未知)
资料来源:2)
在谷歌,Android,Apps.Asv.GSA.共享.UTI.Or.R...Run(SooCyFr:4)
在java.util.concurrent.executors$runnableadapter.call上(executors.java:458)
在java.util.concurrent.futuretask.run上运行(futuretask.java:266)
在Java.UTI.Actual.ExtUntuals$RunnabLeAdPult.Cele:(执行器.java:458)
在java.util.concurrent.futuretask.run上运行(futuretask.java:266)
在COM。谷歌。Android。Apps.gsa.共享.U.I.O.M.R.B.G.Run(未知)
资料来源:4)
在com.google.android.apps.gsa.shared.util.concurrent.b.aw.run上(源文件:4)
在com.google.android.apps.gsa.shared.util.concurrent.b.aw.run上(源文件:4)
在Java.UTI.Orth.TycRePoLeExtUnor。RunWork(TythPoLeExcel)。Java:1167)
在java.util.concurrent.threadpoolexecutor$worker.run上(threadpoolexecutor.java:641)
运行(thread.java:764)
在com.google.android.apps.gsa.shared.util.concurrent.b.i.run上(源文件:6)
原因:com.google.android.apps.gsa.sidekick.main.h.n:无法完成刷新条目的计划请求。客户端错误代码:3
在com.google.android.apps.gsa.staticplugins.nowstream.b.a.aq.az(未知
资料来源:4)
在COM.谷歌上.Un.U.L.Qual.Q.AP(SooCyFr档:7)
在谷歌上,常见的。
在COM.谷歌上.Un.U.L.O.B.T.Excel(SooCyFr:3)
在com.google.common.util.concurrent.d.b上(源文件:275)
在com.google.common.util.concurrent.d.addListener上(源文件:135)
在com.google.common.util.concurrent.p.b上(源文件:3)
在com.google.android.apps.gsa.shared.util.concurrent.h.a上(源文件:16)
在com.google.android.apps.gsa.shared.util.concurrent.h.a(源文件:13)
com,谷歌,Android,Apps.gs. StutoPuxin . NoStask.B.A.B.CI(SooCyFr:45)
在com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cah(源文件:176)
在谷歌。Android。Apps.gsa. StutoPuxin。NoSoo.B.A.BH.Run(未知)
资料来源:2)
在谷歌上运行。
在java.util.concurrent.executors$runnableadapter.call上(executors.java:458)
在java.util.concurrent.futuretask.run上运行(futuretask.java:266)
在Java.UTI.Actual.ExtUntuals$RunnabLeAdPult.Cele:(执行器.java:458)
在运行时,运行时为266。
在com.google.android.apps.gsa.shared.util.concurrent.b.g.run(未知
资料来源:4)
在谷歌,Android,Apps.Asv.Gas.Posial.UTI.Or.B.A.R.Run(SooCyFr:4)
在COM.谷歌. Android .App.gs.共享.UTI.Or.B.AW.Run(SoeCyFr:4)
在Java.UTI.Orth.TycRePoLeExtUnor。RunWork(TythPoLeExcel)。Java:1167)
在Java.UTI.Orth.TycRePoLeExtor中$WorkWork.Run(TythPoLeExpCutoor,Java:641)
在Java.Lang.Trime.Run(线程.java:764)
在谷歌,Android,Apvest.GSA.共享.UTI.Or.B.I.Run(SooCyFr:6)
我的毕业档案。
Gradle项目:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext {
androidXVersion = '1.0.0-alpha3'
supportLibraryVersion = '28.0.0-alpha1'
}
buildscript {
ext.kotlin_version = '1.2.50'
repositories {
google()
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-beta01'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects
{
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
应用程序Gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
def versionMajor = 1
def versionMinor = 0
def versionPatch = project.hasProperty('buildNumber') ? project.getProperties().get('buildNumber').toInteger() : 0
android {
compileSdkVersion 28
defaultConfig {
applicationId "app.itsyour.elegantstocks"
minSdkVersion 25
targetSdkVersion 28
// Version
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
versionCode versionMajor * 1000000 * versionMinor * 10000 + versionPatch
resValue "string", "build_number", "Version ${versionName}"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas".toString())
}
}
}
buildTypes {
release {
resValue "string", "app_name", "Elegant Stocks"
signingConfig signingConfigs.release
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro'
}
staging {
resValue "string", "app_name", "Elegant Stocks"
signingConfig signingConfigs.staging
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-staging.pro'
}
beta {
signingConfig signingConfigs.beta
debuggable true
minifyEnabled false
applicationIdSuffix ".beta"
versionNameSuffix "-BETA"
resValue "string", "app_name", "Elegant Stocks Beta"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-beta.pro'
}
debug {
debuggable true
minifyEnabled false
resValue "string", "app_name", "Elegant Stocks Debug"
applicationIdSuffix ".debug"
versionNameSuffix = "-DEBUG"
}
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
testOptions {
unitTests {
includeAndroidResources = true
all {
testLogging {
events "passed", "failed", "skipped"
}
}
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "androidx.appcompat:appcompat:$androidXVersion"
implementation "androidx.fragment:fragment-ktx:$androidXVersion"
implementation "com.google.android.material:material:$androidXVersion"
implementation "androidx.recyclerview:recyclerview:$androidXVersion"
implementation "androidx.core:core-ktx:$androidXVersion"
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
// Dagger 2
implementation 'com.google.dagger:dagger:2.16'
implementation 'com.google.dagger:dagger-android:2.16'
implementation 'com.google.dagger:dagger-android-support:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'
kapt 'com.google.dagger:dagger-android-processor:2.16'
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'
// Stetho
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
// Rx
implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
implementation 'com.jakewharton.rxbinding2:rxbinding-kotlin:2.1.1'
implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7-kotlin:2.1.1'
implementation 'com.jakewharton.rx2:replaying-share:2.0.1'
// Room
implementation "androidx.room:room-runtime:2.0.0-alpha1"
implementation "androidx.room:room-rxjava2:2.0.0-alpha1"
kapt "androidx.room:room-compiler:2.0.0-alpha1"
// Logging
implementation 'com.jakewharton.timber:timber:4.7.0'
// Time
implementation 'com.jakewharton.threetenabp:threetenabp:1.1.0'
// UI
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
implementation 'net.opacapp:multiline-collapsingtoolbar:27.1.1'
implementation 'com.balysv:material-ripple:1.0.2'
// Testing
androidTestImplementation "com.android.support.test:runner:1.0.2"
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
testImplementation 'junit:junit:4.12'
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}"
testImplementation "com.nhaarman:mockito-kotlin-kt1.1:1.5.0"
testImplementation "org.mockito:mockito-core:2.18.3"
testImplementation "org.robolectric:robolectric:3.8"
testImplementation "org.robolectric:shadows-multidex:3.8"
}
前锋:
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn org.codehaus.mojo.animal_sniffer.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**