When using Android studio to open the Android project exported from unity, due to the access to several SDKs, this problem occurs when compiling the project: “cannot fit requested classes in a single DEX file (# methods: 72633 > 65536) “and then I read other materials on the Internet, but I didn’t solve this problem. Finally, I read the following document, document link: https://developer.android.com/studio/build/multidex 。
as for the reason for this problem, the document says: “when your application and its referenced library contain more than 65536 methods, you will encounter a build error”, that is, you have received the 64K reference limit of Android. What is the 64K reference limit?Documentation: Android application (APK) files contain executable bytecode files in the form of Dalvik executable (DEX) files, which contain the compiled code used to run the application. The Dalvik executable specification limits the total number of methods that can be referenced in a single DEX file to 65536, including Android framework methods, library methods, and methods in your own code. In the field of computer science, the term K stands for 1024 (2 ^ 10). Since 65536 is equal to 64 x 1024, this restriction is called “64K reference restriction”. Well, the reason for the problem is probably clear, that is, it has been solved. In fact, there are two solutions given by the document
the first method: if minsdkversion is set to 21 or higher, multidex will be enabled by default, and the support library for multidex is not required<
the second method: if minsdkversion is set to 20 or lower, you must use the multidex support library and modify the application project
first, modify the module level build.gradle file to enable multidex, and add the multidex library as a dependency
first
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
Then customize an application
import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;
import android.support.multidex.MultiDexApplication;
public class App extends Application{
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
finally calls App in mainfest and recompiles it to OK. In fact, the second method is useless, and the problem is still there, so I tried the first method, and set minsdkversion to 21, and the problem was solved…
in this paper, we used the second method to solve the problem
Similar Posts:
- [Solved] Eclipse Error: Access restriction: The type ‘BASE64Decoder’ is not API
- The solution of base64decoder prompt error under eclipse
- JAVA8 Access restriction: The type ‘Application’ is not API (restriction on required lib
- [Solved] com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- Android about LIBS, jnilibs library basic instructions and conflict resolution
- [Solved] Caused by: java.lang.ClassNotFoundException: Didn’t find class “…”on path: D…
- Steps of MyEclipse / eclipse importing sun.misc.base64encoder jar package
- Could not find com.android.tools.build:gradle:3.3.0.
- AS Import Project Error: Plugin with id ‘com.android.application’ not found.
- [Solved] Android Studio Error: Could not initialize class com.android.sdklib.repository.AndroidSdkHandler