I recently try to open up a project developed sometime ago into Android Studio and try to rebuild it and I get whole load Android Pre Dex errors which I am totally stuck how I get rid of them. Tried a lot of stuff such as changing Android API level, cleaning, change jdk version.. all doesn't work.
Any experts out there can enlighten me what is the likely cause of these errors.?
android pre dex errors screenshot
Step 1: Add multidex enabled in default config
defaultConfig {
applicationId "Your package name"
minSdkVersion 16
targetSdkVersion 23
versionCode 5
versionName '1.0.5'
multiDexEnabled true
}
Step 2 : Add this library in your dependencies
compile 'com.android.support:multidex:1.0.0'
Step 3 : Add this line in your MyApplication extends Application java class
MultiDex.install(this);
Step 4: Don't forgot to call MyApplication class in your Application tag of manifest file. Like this
android:name=".MyApplication"
After this 4 steps clean your project and run the application. Surely it will helps you!
Happy Coding!
i already solved it
it happen because you didnt setting the default java in android studio 2.3.3 or android studio 3.0 beta 6
go to file > project structure > SDK location
change the JDK Location to C:\Program Files\Java\jdk1.8.0_131
Related
I want to change the minimum SDK version in Android Studio from API 12 to API 14. I have tried changing it in the manifest file, i.e.,
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
and rebuilding the project, but I still get the Android Studio IDE throwing up some errors. I presume I have to set the min SDK in 'project properties' or something similar so the IDE recognizes the change, but I can't find where this is done in Android Studio.
When you want to update your minSdkVersion in an existing Android project...
Update build.gradle (Module: YourProject) under Gradle Script and
make sure that it is NOT build.gradle (Project: YourProject.app).
An example of build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "com.stackoverflow.answer"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dependencies {
androidTestCompile 'junit:junit:4.12'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Sync gradle button (refresh all gradle projects also works).
or
Rebuild project
After updating the build.gradle's minSdkVersion, you have to click on the button to sync gradle file ("Sync Project with Gradle files"). That will clear the marker.
Updating manifest.xml, for e.g. deleting any references to SDK levels in the manifest file, is NOT necessary anymore in Android Studio.
Update 2022
For Android Studio users:
Right click the App directory and
Choose the "Open Module Settings" (F4) option
Change the "Min SDK Version" in the Default Config tab
NOTE:
You might also want to change;
the "Target SDK Version" in the Default Config tab and
the "Compile SDK Version" in the Properties tab
Click Apply, then OK, and Gradle should automatically be synced
For users of older Android Studio versions:
Right click the App directory and
Choose the "Module Setting" (F4) option
Change the ADK Platform to what you need
Click OK and Gradle should automatically be synced
As now Android Studio is stable, there is an easy way to do it.
Right click on your project file
Select "Open Module Settings"
Go to the "Flavors" tab.
Select the Min SDK Version from the drop down list
PS: Though this question was already answered but Android Studio has changed a little bit by its stable release. So an easy straight forward way will help any new answer seeker landing here.
In android studio you can easily press:
Ctrl + Shift + Alt + S.
If you have a newer version of android studio, then press on app first.
Then, continue with step three as follows.
A window will open with a bunch of options
Go to Flavors and that's actually all you need
You can also change the versionCode of your app there.
In build.gradle change minSdkVersion 13 to minSdkVersion 8 Thats all you need to do. I solved my problem by only doing this.
defaultConfig {
applicationId "com.example.sabrim.sbrtest"
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
According to this answer, you just don't include minsdkversion in the manifest.xml, and the build system will use the values from the build.gradle file and put the information into the final apk.
Because the build system needs this information anyway, this makes sense. You should not need to define this values two times.
You just have to sync the project after changing the build.gradle file, but Android Studio 0.5.2 display a yellow status bar on top of the build.gradle editor window to help you
Also note there at least two build.gradle files: one master and one for the app/module. The one to change is in the app/module, it already includes a property minSdkVersion in a newly generated project.
For the latest Android Studio v2.3.3 (October 11th, 2017) :
1. Click View on menu bar
2. Click Open Module Settings
3. Open Flavors tab
4. Choose Min Sdk version you need
6. Click OK
If you're having troubles specifying the SDK target to Google APIs instead of the base Platform SDK just change the compileSdkVersion 19 to compileSdkVersion "Google Inc.:Google APIs:19"
As well as updating the manifest, update the module's build.gradle file too (it's listed in the project pane just below the manifest - if there's no minSdkVersion key in it, you're looking at the wrong one, as there's a couple). A rebuild and things should be fine...
In Android studio open build.gradle and edit the following section:
defaultConfig {
applicationId "com.demo.myanswer"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
here you can change minSdkVersion from 12 to 14
File>Project Structure>Modules
you can change it from there
When you want to change minimum SDK you should take care of minSdkVersion[About] in module build.garadle
android {
defaultConfig {
minSdkVersion 21
}
}
Changing the minSdkVersion in the manifest is not necessary. If you change it in the gradle build file, as seen below, you accomplish what you need to do.
defaultConfig {
applicationId "com.demo.myanswer"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
To change the minimum SDK version in Android Studio just...
1). Right click on "app" in the "Project" panel
2). Choose the new "Min SDK Version" on the "Default Config" tab
3). Click on "OK" and the project will now resync with the new Gradle settings.
For me what worked was: (right click)project->android tools->clear lint markers. Although for some reason the Manifest reverted to the old (lower) minimum API level, but after I changed it back to the new (higher) API level there was no red error underline and the project now uses the new minimum API level.
Edit: Sorry, I see you were using Android Studio, not Eclipse. But I guess there is a similar 'clear lint markers' in Studio somewhere and it might solve the problem.
Gradle Scripts ->
build.gradle (Module: app) ->
minSdkVersion (Your min sdk version)
I am developing xamarin android app and in this many packages and references are used (Google play services). When I try to build this project I get this error:
java.exe exited with code 2 Trouble writing output: Too many field
references: 81626; max is 65536. You may try using --multi-dex
option
.
You need to enable Mutlidex in your project.
Xamarin.Android supports this since version 5.1:
Multi-dex support can be enabled by using the new $(AndroidEnableMultiDex) MSBuild property, which is also available via Visual Studio and Xamarin Studio.
By enabling multidex , Application will crash on Samsung devices S5,S6,So on.
They have stopped the roll out of the update. So it looks like we are waiting for Samsung to roll out a new OS update with it fixed.
Or find a way to not use multi-dex in your app.
You should add below code to your app gradle file :
defaultConfig {
applicationId 'pkg'
minSdkVersion
targetSdkVersion
versionCode
versionName
// Enable MultiDexing: https://developer.android.com/tools/building/multidex.html
multiDexEnabled true
}
And add this dependency also :
compile 'com.android.support:multidex:1.0.1'
Thanks..!!
I started to learn android using Android Studio 0.8.2 and I started a new project with the minimum API as 15. But in my AndroidManifest.xml, doesn't appear the uses-sdk tag.
Do I have to insert it by myself? Shouldn't the project create it? Or is Android Studio different and is no longer necessary to insert this in manifest, only in the build.gradle?
Thank you in advance :)
The default template in Android Studio is ready to work with gradle.
If you check your project you will find a build.gradle file inside your app module.
Here you can find something like this:
defaultConfig {
applicationId 'xxxx'
minSdkVersion 15 //your minSdk
targetSdkVersion XX //your targetVersion
versionCode 0
versionName '0.1.0'
}
Gradle building the project will override the uses-sdk tag in your Manifest.
Yes, add it manually.
Android studio uses build.gradle to build the project so it doesn't care about the manifest, and that's probably why it doesn't insert it in it. However, it is important to have it in the manifest, for when you publish the app, as Google play uses this for filtering the devices.
I'm following the Google I/O conference and just a week before they announced that Android Studio 0.8 is available for downloading. Before that I used 0.6 and I was developing an application. Now I'm having both 0.6 and 0.8 on my Ubuntu. I added all the update from SDK for Android Watch and TV and all the Material Design stuffs. And today when I opened my project in the 0.8 version, after a few updates of some things, I'm receiving an error
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version L declared in library com.android.support:appcompat-v7:21.0.0-rc1
If someone has any idea what is this all about - share please. I tried to pull my project from my repository in GitHub, but without any result. Thank you.
It looks like you have declared a dependency on version 21 of appcompat-v7 in your build.gradle.
At this time, the preview of the Android L support libraries only works with apps that declare the L preview as their min SDK.
Either revert to a previous version of the support library (I believe the latest is com.android.support:appcompat-v7:19.1.0) or update your project to support a minimum of 'L'.
just try this:
android {
android {
compileSdkVersion 20 //or whatever you want
buildToolsVersion '19.1.0'
defaultConfig {
minSdkVersion 14 //or whatever you want
targetSdkVersion 20 //or whatever you want
}
}
dependencies {
compile 'com.android.support:appcompat-v7:19.+'
}
}
and if you have another module in your project, check manifest files in those modules too.
I had a similar issue like that before. After I updated to 0.8.1, it showed an error below when compiling my previous projects.
"uses-sdk:minSdkVersion 8 cannot be smaller than version L declared in library com.android.support:appcompat-v7:21.0.0-rc1".
This is how I fixed it.
In your project, find build.gradle file in app folder and open it.
At dependencies section, change the value of compile 'com.android.support:appcompat-v7'. For example, in my case, it was compile 'com.android.support:appcompat-v7:+', and I changed it to compile 'com.android.support:appcompat-v7:20.+'. Of course, you could change it to compile 'com.android.support:appcompat-v7:19.+' if you like.
I hope it would help. Let me know if you are still stuck on it.
I had similar problems. Although I'm not sure exactly what caused the problem or which step fixed the issue, I did the following and ultimately got things working again:
I closed down Android Studio
I ran SDK Manager and and checked that everything was up to date. I have the following installed:
Android SDK tools Rev. 23
Android SDK Platform-tools Rev. 20
Android SDK Build-tools Rev. 20
Android L (API 20, L preview)
Android 4.4W (API 20)
Android 4.4.2 (API 19)
I restarted Android Studio and started a new (blank) project to test and ran it -> Success!
I found the process pretty finickity, so your mileage might vary. Let me know how you go.
I had the same error. I found the solution.
dependencies {
compile ('com.android.support:support-v13:20.0.0'){
force = true
}
compile ('com.android.support:support-v4:20.0.0'){
force = true
}
compile ('com.android.support:appcompat-v7:20.0.0'){
force = true
}
}
I think that instead of 20.0.0, you can specify a different version if you use less than 20 targetSdkVersion.
I had the same issue.
I made the following changes to the dependencies section in build.grade file located in the app folder.
'com.android.support:appcompat-v7:20.0.0' to 'com.android.support:appcompat-v7:20.+'
I want to change the targetSdkVersion from 19 to 18 in Android Studio (not Eclipse), but failed.
Android Studio complains the following after I changed the targetSdkVersion, and resync the project with Gradle files:
Execution failed for task ':(project name):processDebugManifest'.
> Manifest merging failed. See console for more info.
From the console I found that it is the library I added to the gradle dependencies using the old targetSdkVersion value.
[(Code Directory)\main\AndroidManifest.xml, (Code Directory)\build\exploded-bundles\(Library Directory).aar\AndroidManifest.xml:2] Main manifest has <uses-sdk android:targetSdkVersion='18'> but library uses targetSdkVersion='19'
I learn that in Android Studio, the targetSdkVersion and minSdkVersion flags are defined in the build.gradle file. The project is created with Android Studio's "New project" wizard, and there is NO tag in my code's AndroidManifest.xml. So the problem should not be the two values out of sync. According to the above message, the targetSdkVersion value in the main manifest is what I want.
So the problem should be in the manifest file of the library. I open the library's AndroidManifest.xml file and found the following line:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
Obviously it isn't correct. The problem is that the file is not for manual modification. I tried changing the targetSdkVersion value, and even tried removing the declaration, but it comes back every time I build the project.
I tried cleaning the project, still no luck.
So my question is: Is there a "right" way to alter the targetSdkVersion in Android Studio which I am not aware of?
Here's how to change the targetSdkVersion and minSdkVersion in Android Studio.
Step 1
Open build.gradle - Path\Your_Application\app\build.gradle.
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
Change the targetSdkVersion and minSdkVersion values to what you desire.
Step 2
In the Android Studio menu, find "Build" (Alt + b in Windows) and choose "Clean project".
Alternatively, click on File > Project Structure > Application > Flavours > Min Sdk Version and press ok on change. You can also change the Target Sdk Version as well. I think this is a neater approach to editing the gradle build file directly.
in build.gradle
Change these values according to current project Updation
in sdk manager
compileSdkVersion 25
buildToolsVersion "25.0.2"
minSdkVersion 15
targetSdkVersion 25
in dependencies replace below code
compile 'com.android.support:appcompat-v7:25.1.0'
and synchronise project