Cordova, Node.js, Phonegap - android

I am running through this tutorial:
http://docs.phonegap.com/en/2.9.0/guide_getting-started_android_index.md.html#Android%20Platform%20Guide
I just created the project within my workspace with:
cordova create hello2 com.example.hello2 "Hello World 2"
cd into the dir
And now:
cordova platform add android
Gives me the following error:
The command `android` failed. Make sure you have the latest Android SDK installed, and the `android` command (inside the tools/ folder) added to your path. Output: /bin/sh: android: command not found
My export path looks like this:
export PATH=${PATH}:/Documents/DevFolder/adt-bundle-mac-x86_64-20130522/sdk/platform-tools:/Documents/DevFolder/adt-bundle-mac-x86_64-20130522/sdk/tools
What's wrong with this path ?
Or what else could cause this error. And, yes I did install the Android SDK.
According to this:
http://developer.android.com/sdk/installing/bundle.html

As stated in the comments, the problem is related to the way the PATH to the android executable was defined. It is necessary to define these paths as absolute.
As for the Object has no method 'tmpDir' error, a quick google search revealed the following remedy: https://groups.google.com/forum/#!msg/phonegap/sKQ3MRrIpNg/dV6WYOTDDf0J

It's an old thread, but thought I'd mention this... You have to open a new terminal window AFTER adding the export path in ~/.bash_profile - then "cordova platform add android" worked. :)

this one worked for me
A - open the file /Users//.bash_profile (for example running from that folder, the command vim .bash_profile... or simply from finder, finding the hidden file and opening it with a text editor)
B - add the following line make sure to adapt it to your ADT folder name and position (in my case I placed the original adt-bundle-mac-x86_64-xxxxx folder into Application and renamed it ADT)
export PATH=/Applications/ADT/sdk/tools:/Applications/ADT/sdk/platform-tools:$PATH
making sure to add :$PATH at the end

Related

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable

I recently tried to import sample Android games I downloaded from Google's developer website. After importing them into Android Studio, I'm getting the following error:
Error: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
What is this? I want to run the sample programs from Android Studio.
Please follow the below steps:
Go to your react-native Project then go to the android directory
Create a file with the following name:
local.properties
Open the file and paste your Android SDK path like below:
For windows users:
sdk.dir=C:\\Users\\UserName\\AppData\\Local\\Android\\sdk
or (for newer versions of Android Studio / IntelliJ IDEA):
sdk.dir=C\:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk
Where USERNAME your PC user name. Also, make sure the folder is sdk or Sdk.
Example:
sdk.dir=C:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk
or:
sdk.dir=C\:\\Users\\USERNAME\\AppData\\Local\\Android\\Sdk
For Mac users:
sdk.dir = /Users/USERNAME/Library/Android/sdk
Where USERNAME is your OSX username.
For Linux (Ubuntu) users:
sdk.dir = /home/USERNAME/Android/Sdk
Where USERNAME is your linux username (Linux paths are case-sensitive: make sure the case of S in Sdk matches)
In case this doesn't work, add ANDROID_HOME variable in "Environment Variables" as C:\Users\USER\AppData\Local\Android\Sdk
The project might be missing a settings.gradle file. Make sure that file exists from the project you are importing. If not add the settings.gradle file with the following :
include ':app'
Save the file and put it at the top level folder in your project.
You have to just copy your local.properties file to the folder where project is stored and it will work like charm. But remember, it must be placed in the root folder where the project is stored.
Please follow bellow points it work's for me:
Go to your Project -> Android
Create a file local.properties
Open the file
Paste your Android SDK path depending on the operating system:
4.a Windows
sdk.dir = C:/Users/USERNAME/AppData/Local/Android/sdk
4.b Linux or MacOS
sdk.dir = /home/USERNAME/Android/sdk
Replace USERNAME with your user name
Check out in your local.properties file
sdk.dir=C\:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk
properly write this format, and also check / slas using for path
This problem is encountered when you try to import an Android Studio project from the ../app/build.gradle file.
Import the project by selecting the ../build.gradle file located in the root directory of your project.
Here is a work around for the problem when you click "Run App" (green arrow) and get the following in the Edit Configuration dialog:
Error: Please select Android SDK
In Android Studio, do:
From the menu, choose File > Settings.
In the settings dialog, go to Appearance & Behavior > System Settings > Android SDK.
Look at the top for Android SDK Location, and click the Edit button
Hit Next, Next, Finish to accept the defaults
This seems to save away the SDK location - even though nothing has changed - into some internal location. I inspected the .idea and .gradle folders but didn't see what Studio did to change a config file - but now I can run the app.
And to summarize the previous fixes - these are normally OK for a repo without build problems:
local.properties file is copied into the root folder by Studio.
The path in the local.properties file has the correct path to the android SDK - in my case it is sdk.dir=C:\\android\\sdk
(note that this path has a different format - Studio should write this file for you based on the Text Entry field in the Android SDK Settings dialog)
settings.gradle file is present in the repo - and references the application folder (typically :app)
I came across the same issue but a little bit different error message is
SDK location not found. Define location with an ANDROID_SDK_ROOT
environment variable or by setting the sdk.dir path in your project's
local properties file at "xxx"
MAC & ReactNative
Add local.properties
Find your Android SDK location
/Users/yourMacUserName/Library/Android/sdk
Create local.properties under rootProject/android/local.properties.
Add sdk path into it
sdk.dir = /Users/yourMacUserName/Library/Android/sdk
This normally works, but if you are working in a team with other team members, then yourMacUserName is different.
OR
Set ANDROID_SDK_ROOT variable
Edit your ~/.zshrc or ~/.bashrc or ...
Add SDK path:
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
Open a new terminal tab or source ~/.zshrc
echo $ANDROID_SDK_ROOT to test the print correct SDK path.
Alternatively, you also can add your path
export PATH=${PATH}:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
to use some useful commands.
Go to your React-native Project -> Android
Create a file local.properties
Open the file
paste your Android SDK path like below
in Windows sdk.dir = C:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk
in macOS sdk.dir = /Users/USERNAME/Library/Android/sdk
in linux sdk.dir = /home/USERNAME/Android/Sdk
Replace USERNAME with your user name
Now, Run the react-native run-android in your terminal
or
Sometimes project might be missing a settings.gradle file.
Make sure that file exists from the project
you are importing.
If not add the settings.gradle file with the following :
include ':app'
Save the file and put it at the top level folder in your project.
If you have this problem when you pull a react-native project, you just need to open the android project with Android Studio. Everything you need will be automatically created.
Open Android Studio
File -> Open
Choose the android folder under your react-native project folder
Wait for AndroidStudio to complete setup
You can now close Android Studio
OR
If you have installed the AndroidStudio command line launcher:
Run this in your react-native root folder
studio android/
Wait for AndroidStudio to complete setup
You can now close Android Studio
In Linux:
If you have already downloaded the android SDK but its not being found.
The problem might be that the file local.properties needs to be inside the same directory as gradle stuff for gradle to find it when building and running adb.
For my react-native project using gradle I needed to put the local.properties file to Myprojectname/android/ folder.
As I had unzipped the SDK to Downloads so I just use that path in the file with a row like this:
sdk.dir=/home/USER/Downloads/android-sdk-linux
I resolved this issue by creating ANDROID_HOME environment variable as follows in windows.
ANDROID_HOME=C:\Users\<user_name>\AppData\Local\Android\sdk
Restart Android Studio it should build project!
If you are trying to run Google android sample code, try to import the entire repository instead of an individual sample.
Here is instructions.html, included with the Google Calendar API sample code.
Import calendar-android-sample project
Select "Import Project..." or File > Import Project...
Select [someDirectory]/google-api-java-client-samples/build.gradle and
click OK.
Note: it will not work if you try to import [someDirectory]/google-api-java-client-samples/calendar-android-sample/build.gradle
Select "Use local gradle distribution" with "Gradle home" of [someDirectory]/gradle-2.2.1 and click OK.
Just Remove .idea folder and import the project again. It's worked for me.
There is not a single reason for this error.
settings.gradle may be missing or the content in it may be wrong.
local.properties may be missing or the sdk path may be wrongly written.
Go to the android folder and create local.properties files and paste your SDK path
In my case I was using linux and putting double quote around the path inside local.properties like
sdk.dir = "/root/Android/Sdk/"
export ANDROID_SDK_ROOT = "/root/Android/Sdk/"
So it should be
sdk.dir = /root/Android/Sdk/
export ANDROID_SDK_ROOT = /root/Android/Sdk/
and .bash_profile
I had this error in flutter so i fixed it by going to android->app->build.gradle
and changing targetSdkVersion from 28 to 29 and compileSdkVersion to 29 from 28 and it worked for me
create a local.properties file in your root directory of your project with the following content
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Oct 24 17:40:53 CEST 2017
sdk.dir=/Users/****/Library/Android/sdk
put these two lines in your .bashrc file and run source ~/.bashrc
export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
For linux I did this.(For the first line)
export ANDROID_HOME=/home/$USER/Android/Sdk
In my case, I had to close Project and open again. It worked fine.
Like This
Close Project
And again Open Project Again
Follow followings steps :
Create a file under 'android' folder with name 'local.properties'
Add this line in file 'local.properties' as
sdk.dir=/Users/bijendrasingh/Library/Android/sdk
Add here your android sdk path.
There can be two different possibilities :
1). Either you SDK location is incorrect in local.properites file.
2). Or the file is missing, this can happen if you have cloned a project, so just create a local.properites file under Gradle Scripts foler, and then set up the sdk path.
Set up the correct sdk path like this :
sdk.dir=YOUR_PATH_TO_THE_SDK
For mac users the path should be:
/Users/USER_NAME/Library/Android/sdk
For windows users the path should be:
c:\Users\USER_NAME\AppData\Local\Android\Sdk
For Mac/Linux users
You need to add ANDROID_HOME to your path, add the following to your .bashrc || .zshrc || .profile file
# change $HOME to the path where you installed android Sdk
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools
Then run
$ source ~/.bashrc || .zshrc || .profile
Environment variables in bash_profile or bashrc?
Difference between .bashrc and .bash_profile
This solution actually works for me..
go to this pc -> properties -> advanced system settings -> environment variables ->
then in system variable create new variable with name ANDROID_SDK_ROOT and value C:\Users{USERNAME(Replace it with your username}\AppData\Local\Android\Sdk
and make sure that if real android mobile using usb debugging is enabled. (very important)
then close cmd and restart it should work.
the best and the easiest way is to create new Android project move "app" folder from non working project to that newly made one and add the needed dependencies in the gradle of your new project and everything will work perfectly )
I got this error after freshly cloning a repository. I expected local.properties to be generated automatically, but it wasn't. I was able to generate it by re-importing the Gradle project.
File > Re-import Gradle Project
If all else fails, copy the local.properties file to the root of the project directory. Simply.
Anyone using Jenkins, might get it useful
You need to define a global variable name ANDROID_HOME with the value of the path to android sdk.
For mac, it is /Users/YOUR_USER_NAME/Library/Android/sdk
I had a situation where I already had the local.properties file set up but I was still getting this error. Turns out, if your project has a submodule, you have to copy the local.properties into the submodule folder as well.

SDK Location not found Android Studio + Gradle

I have seen this same thing posted quite a few times, but whenever I try to import my project to my new work laptop I keep getting this error.
I have pulled the project from git (which his btw running fine on my old laptop).
Then I went to the sdk manager, downloaded all the tools, and all the SDK's available.
In the welcome screen, I went to Configure -> project Defaults -> Project structure.
Android SDK Tab says the path for projects without local.properties will be /Applications/Android Studio.app/sdk
This is correct.
Under SDKs I have all the available SDK's visible.
Project SDK is set to API 18
Yet still I get this error when trying to build my project.
Can anyone tell me where I havent looked yet?
I am running gradle 1.7 when trying to build which is downloaded from services.gradle.org
I had very similar situation (had a project on another machine and cloned it to my laptop and saw the same issue) and I looked in it.
Error message was coming from Sdk.groovy of Android gradle plugin:
https://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/internal/Sdk.groovy
By looking at code, its findLocation needs to set androidSdkDir variable and there are only three ways to do it:
create local.properties file and have either sdk.dir or android.dir line.
have ANDROID_HOME environment variable defined.
System.getProperty("android.home") - I'm not sure how it works, but it seems like a Java thing.
While your Android Studio knows that the SDK is at that place, I doubt that Android Studio is passing that information to gradle and thus we're seeing that error.
I created local.properties file at the project root and put the following line and it compiled the code successfully.
sdk.dir = /Applications/Android Studio.app/sdk/
creating local.properties file in the root directory solved my issue
I somehow lost this file after pulling from GitHub
this is how my local.properties file looks like now:
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Sat Feb 06 11:53:03 EST 2016
sdk.dir=/Users/****/Library/Android/sdk
I found the solution here:
http://xinyustudio.wordpress.com/2014/07/02/gradle-sdk-location-not-found-the-problem-and-solution/
Just create a file local.properties and add a line with sdk.dir=SDK_LOCATION
If none of the answers work for you which happened to me on macbook pro in one of the projects you can always try to run Android Studio with an alias command passing sdk.dir with each run:
alias studio='launchctl setenv ANDROID_HOME '\''/Users/username/Library/Android/sdk'\'' && open -a '\''Android Studio'\'''
To fix this problem, I had to define the ANDROID_HOME environment variable in the Windows OS.
To do this, I went to the System control panel.
I selected "Advanced system settings" in the left column.
On the "Advanced" tab, I selected "Environment Variables" at the bottom.
Here, I did not have an ANDROID_HOME variable defined. For this case, I selected "New..." and:
1) for "Variable name" I typed ANDROID_HOME,
2) for "Variable value", I typed the path to my SDK folder, e.g. "C:\...\AppData\Local\Android\sdk".
I then closed Android Studio and reopened, and everything worked.
Thanks to Dibish (https://stackoverflow.com/users/2244411/dibish) for one of his posts that gave me this idea.
Had the same problem in IntelliJ 12, even though I have ANDROID_HOME env variable it still gives the same error. I ended up creating local.properties file under the root of my project (my project has a main project w/ a few submodules in its own directories). This solved the error.
specifying sdk.dir=<SDK_PATH> in local.properties in root folder solved my problem.
I clone libgdx demo, can't import project. it also reminds like this.
Env:
Eclipse(Android-ADT)
window 7
so I create local.properties file at the project root, like following
sdk.dir = D:/adt-bundle-windows-x86/sdk
I hope this can help others!
Copy and paste the local.properties file from a project you created on your new computer to the folder containing the project from your old computer also works too if you don't want to (or know how to) create a new local.properties file.
I noticed that I get this error when I'm working on a new computer if I try to build from the command line first. However, if I build from Android Studio, it retrieves the SDK and creates the directory automatically. Then when I build from the command line it works.
You have also to ensure you have the correct SDK platform version installed in your environment by using SDK Manager.
If you have cloned a project from GitHub for example, and you've tried the methods mentioned here without success including:
Editing sdk.dir in the local.properties
Trying to set ANDROID_HOME environment variable
Or adding an alias as kasiara mentioned
You should try to see if you are trying to build a directory project that is a part within a bigger project, and so it may cause problems.
So load the entire project, and then run the project directory you'd like.
In my specific case I tried to create a React Native app using the react-native init installation process, when I encountered the discussed problem.
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\Users\***\android\local.properties'.
I add this, because when developing an android app using react native, the 'root directory' to which so many answers refer, is actually the root of the android folder (and not the project's root folder, where App.js resides). This is also made clear by the directory marked in the error message.
To solve it, just add a local.properties file to the android folder, and type:
sdk.dir=C:/Users/{user name}/AppData/Local/Android/Sdk
Be sure to add the local disk's reference ('C:/'), because it did not work otherwise in my case.

android-ndk caused error at building using cygwin

I am follow this link to build their project, I have already prepared the environment(android sdk, android ndk, cygwin) on XP PC.
when I follow their steps, I didn't understand what they meant by this step
It may be helpful to explicitly identify the SDK's location in the shell variables SDK_BASE & NDK_BASE, & to call out which version of each you wish to build with. For instance, add something like this to ~/.bashrc:
export SDK_BASE=~/android/adt-bundle-linux-x86/sdk
export NDK_BASE=~/android/android-ndk-r8d
export SDK_PLATFORM_LEVEL=16
export NDK_PLATFORM_LEVEL=9s
So I skip this step!!
when I continued their steps I face problem when I need to make the C files by type this command
make -C external/
this caused error in try to build these files, and this appeared :
So how can I solve this problem ? and have successful build ?
It can't find your ndk installation! Those steps you skipped are important. For now, just type them into the command line before you build.
The problem with this is you'll lose these definitions when you close the terminal. The solution to this problem is to add those lines to your ~/.bashrc file:
Assuming it doesn't exist, you can create it on the command line with: touch ~/.bashrc
Then open this hidden file in your favourite text editor and add the export statements.

SDK.DIR is missing? android update project?

I get this error when I do
$ ant release
sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var
typing in android update project I get another error saying I must specify the path .... to the project.
Then I try cd into the directory of my project and do
android update -p .
android update -path .
etc and it says -p and -path are not globally recognized.
Could someone just give me the exact syntax?
cd to project directory and execute the following: The word project is part of the command, and is not to be replaced with an actual project name. The documentation does not make this clear and should be improved.
android update project -p .
You can use the command line argument for setting the sdk.dir, e.g:
ant -f xyz/build.xml clean release -Dsdk.dir=/Applications/adt-bundle-mac/sdk/
You can use sdk.dir in projet.properties file to define the sdk home or use an environment variable (more flexible for team work).
export ANDROID_HOME=<the path to your sdks>
You can inject the ANDROID_HOME environment variable into the sdk.dir property using the following ant command.
$ ant debug -Dsdk.dir=$ANDROID_HOME
ANDROID_HOME must be an absolute path such as /Users/jameswald/Development/android-sdk-macosx.
I had the same problem. After flailing around with the command line commands for a few minutes I ended up just editing the local.properties files directly.
You should have a file called local.properties within your
<app-directory>\platforms\android
folder. If you don't have one then you can create it.
Within the file there should be a reference that specifies where ant can find your android sdk. It should look like this:
sdk.dir=C:\\<path-to-sdk>\\sdk
Just update your details to point it to your correct android sdk folder.
The double \ are present in my file. Not sure why but it seems to work. :)
Note: this file also needs to be copied into your CordovaLib folder, which is one folder deeper: <app-directory>\platforms\android\CordovaLib
That should create/fix the local.properties from ant:
android update project --name --target
--path
name parameter is optional
target is the api version
More info here
https://developer.android.com/tools/projects/projects-cmdline.html#UpdatingAProject
android update project -p . might fix your issue. Sometimes once you execute android update project -p . You might end up with a O/P Like this.
Updated local.properties
----------
build.xml: Failed to find version-tag string. File must be updated.
In order to not erase potential customizations, the file will not be automatically regenerated.
If no changes have been made to the file, delete it manually and run the command again.
If you have made customizations to the build process, the file must be manually updated.
It is recommended to:
* Copy current file to a safe location.
* Delete original file.
* Run command again to generate a new file.
* Port customizations to the new file, by looking at the new rules file
located at <SDK>/tools/ant/build.xml
* Update file to contain
version-tag: custom
to prevent file from being rewritten automatically by the SDK tools.
----------
Updated file ./proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
If so try this command android update project -p . -s
the ANDROID_HOME must be set in the right context - just that you have it e.g. on your bashrc does not mean the var is set when you launch by clicking the icon ( bashrc doesn not get executed then - but when checking if the env var is set on the console it is )
you can also put it in the studio.sh:
#!/bin/sh
#
# ---------------------------------------------------------------------
# Android Studio startup script.
# ---------------------------------------------------------------------
#
export ANDROID_HOME=/home/ligi/bin/android-sdk/
message()
{
I had the same problem and it turned out that one of the ant scripts for some reason is referencing hard coded path to C:\ant and as my ant was in C:\apache-ant-{version} it could not find it. After renaming the ant directory everything worked fine.
For reference the file where I observed this issue was
\apache-ant-{version}\bin\ant.bat :line 106
Edit: I am using windows 8
Yeah, none of these solutions worked for me. This did from here:
Setting ANDROID_HOME enviromental variable on Mac OS X
Open the terminal window and enter the following (I hope this is the complete path to sdk):
export ANDROID_HOME=/Applications/ADT/sdk
Once you have this set, you need to add this to the PATH environment variable
export PATH=$PATH:$ANDROID_HOME/bin

New android SDK 17 issue in my app?

Today i was update my android sdk to new android adk-17 .
i am facing some problems in this, that is unable to show AddMob in my app, if i remove addmob in the code able to run the app without any errors otherwise not. what is the solution for this, is this bug in new sdk.
this is the Logcat information
Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView in loader
dalvik.system.PathClassLoader[/data/app/com.veritra.iflipout-1.apk]
Maybe the ADK update has messed-up with your project's build-path.
Try removing the admob JAR and add it again to your libs folder, add it to your Build Path and do a Clean Project.
Anyway it's hard to help you without more details on the error you encounter.
EDIT following poster's comment about not having a libs folder:
You should try this:
Remove all references to the AdMob JAR in your project -> your code should not build without error anymore
Create à libs folder at the root of your project
Copy the AdMob JAR into the libs folder
Make sure this AdMob JAR is in your Build Path (this will allow your code to build wihtout error)
(If still not running OK) Right click your project > Android Tools > Fix Project Properties
The 'problem' here is that the SDK is a lot more strict about the libraries. If you do not check the library as 'exported' in eclipse, it is not added to your APK, leading to this nasty class not found exception. You should mark your libraries as exported.
Project Properties | Java Build Path | Order and Export
when I updated my SDK it was total mess. Well, the only I had to change was the PATH in Environment Variables.
http://developer.android.com/sdk/installing.html :
Adding both tools/ and platform-tools/ to your PATH lets you run command line tools without needing to supply the full path to the tool directories. Depending on your operating system, you can include these directories in your PATH in the following way:
On Windows, right-click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path (under System Variables). Add the full path to the tools/ and platform-tools/ directories to the path.
On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look for a line that sets the PATH environment variable and add the full path to the tools/ and platform-tools/ directories to it. If you don't see a line setting the path, you can add one:
export PATH=${PATH}:/tools:/platform-tools
On a Mac OS X, look in your home directory for .bash_profile and proceed as for Linux. You can create the .bash_profile if you don't already have one.

Categories

Resources