App在Android Studio上运行正常,但是从Play商店下载的应用第一次崩溃时,然后开始正常运行。
我试图解决它,但是没有成功(将minSDK更改为21,启用了Multidex)。
构建Gradle应用程序:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
applicationId "com.--------.app"
minSdkVersion 21 //Change my min Sdk
targetSdkVersion 29
multiDexEnabled true // Enable mutlidex
versionCode 10
versionName "1.4.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
implementation 'com.google.android.gms:play-services-ads:18.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'com.android.support:multidex:1.0.3' //Multi-dex lib
testImplementation 'junit:junit:4.13-beta-3'
androidTestImplementation 'androidx.test:runner:1.3.0-alpha01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha01'
}
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
at android.app.ActivityThread.handleReceiver (ActivityThread.java:3285)
应用程序类:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { //Application Class Here
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base); //OverRide Multidex
MultiDex.install(this);
}
private Button rate,ad,contact; //i don't have Application
//Using custom Class is this
// right way
@Override
protected void onCreate(Bundle savedInstanceState)
//My Code
在执行以下代码后崩溃报告:
[Crash Report After Exe Below Code][1]
Logcat
[Logcat][2]
答案 0 :(得分:1)
在某些情况下,这可能是MultiDex问题。在您的应用程序类中尝试一下。在 App.java 中,该扩展了 Application :
public class App extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在 application 标签的 manifest.xml 中注册 App.java 文件。检查以下代码。
<application
android:name=".App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
</application>
答案 1 :(得分:0)
在您的App课中
更新
使用任何名称创建新的Java文件。 AppClass.java
在新的AppClass.java文件中,扩展了MultiDexApplication。
所以您的课程如下所示。
public class AppClass extends MultiDexApplication {
}
现在覆盖attachBaseContext
方法。
所以最终您的完整课程将如下所示。
public class AppClass extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
现在,您必须在应用程序标记的 AndroidManifest.xml 文件中声明您的AppClass。
<application
----------
----------
----------
android:name=".AppClass"
----------
---------->
</application>