Difference between revisions of "Android"
(fixed up for the new jvm situation, openjdk6 isn't in the repos anymore.) |
(change repo download url to reflect change from http://s.android.com/source/downloading.html) |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 30: | Line 30: | ||
$ <path_to_android-sdk>/tools/android | $ <path_to_android-sdk>/tools/android | ||
− | If you get this error 'Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated' you need to go into the options and make sure to check 'Force https:// sources to be fetched using http://' | + | If you get this error 'Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated' you need to go into the options and make sure to check <nowiki>'Force https:// sources to be fetched using http://'</nowiki> |
If the automatic installation errors out, then you must do '''one''' of the following: | If the automatic installation errors out, then you must do '''one''' of the following: | ||
Line 182: | Line 182: | ||
*Additional packages, only required on 64-bit systems: {{Pkg|gcc-multilib}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}} | *Additional packages, only required on 64-bit systems: {{Pkg|gcc-multilib}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}} | ||
− | For the JDK depending on the version of android you can use {Pkg | + | For the JDK depending on the version of android you can use {{Pkg|jdk7-openjdk}}, but to be safe either {{AUR|jdk6}}, if you don't develop on the jvm, or {{AUR|jdk6-compat}}, if you do have a prefered jvm for other tasks. |
And you need to change the default python from version 3 to version 2: | And you need to change the default python from version 3 to version 2: | ||
Line 193: | Line 193: | ||
$ mkdir ~/bin | $ mkdir ~/bin | ||
$ export PATH=~/bin:$PATH | $ export PATH=~/bin:$PATH | ||
− | $ curl | + | $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo |
$ chmod a+x ~/bin/repo | $ chmod a+x ~/bin/repo | ||
Line 243: | Line 243: | ||
=== Better MTP support === | === Better MTP support === | ||
If you have an Android device that doesn't support UMS and you find mtpfs to be extremely slow you can install {{AUR|jmtpfs}} from the AUR. See [[MTP]] for more options. | If you have an Android device that doesn't support UMS and you find mtpfs to be extremely slow you can install {{AUR|jmtpfs}} from the AUR. See [[MTP]] for more options. | ||
+ | |||
+ | == See Also == | ||
+ | * [[Android Notifier]] |
Revision as of 03:49, 4 October 2013
Contents
- 1 Android Development on Arch
- 2 Building Android
- 3 Tips & Tricks
- 4 See Also
Android Development on Arch
There are three parts to set up:
- Android SDK core component,
- Android SDK Platform packages
- Development environment
Install Android SDK core components
Before developing android applications, you need to install at least one Android platform. Install core SDK components from AUR:
Typical installation location is /opt/android-sdk
.
Getting Android SDK Platform packages
And then install the Android SDK Platform packages which can be done either automatically, from the AUR, or manually.
Automatic installation
Automatic installation is done via the Android SDK and device manager, which is accessible by invoking (assuming that the $PATH
variable contains the path to the Android SDK tools
directory):
$ android
or alternatively:
$ <path_to_android-sdk>/tools/android
If you get this error 'Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated' you need to go into the options and make sure to check 'Force https:// sources to be fetched using http://'
If the automatic installation errors out, then you must do one of the following:
- run the android tool with heightened privileges
# android
- set your user account as the owner of the directory. To change the owner ID for all SDK directories, run the following command as root:
# chown -R $USER /opt/android-sdk
- change the group ID instead (recommended for multiple users), first create the group, perhaps called android, and add your user account to it:
# groupadd android # gpasswd -a $USER android
Next, change the directory permissions:
# chgrp -R android /opt/android-sdk # chmod -R g+w /opt/android-sdk # find /opt/android-sdk -type d -exec chmod g+s {} \;
The final command sets the setgid bit on all subdirectories so that any new files created within them will inherit the proper group ID. Then rerun
$ android
For step-by-step automatic installation, see: Installing SDK Components.
Getting from AUR
AUR currently contains multiple packages with Android platforms sometimes duplicating each other and/or having incorrect file permissions set.
Manual installation
For manual installation:
- Download the platform you want to develop on. This site provides online links to several Android SDK components.
- Extract the tarball to
/<path_to_android-sdk>/platforms
.
Now, you should see the platform of your choice installed in the Installed Packages window of the Android SDK and device manager.
Setting up Development Environment
Android Studio is a new (and still experimental!) Android development environment based on IntelliJ IDEA. The more traditional IDE is Eclipse with the ADT plugin and related packages. Alternatively you can use Netbeans for development after installing the plugin as described below.
Android Studio
Android Studio is a new (and still experimental!) Android development environment based on IntelliJ IDEA. Similar to Eclipse with the ADT Plugin, Android Studio provides integrated Android developer tools for development and debugging.
You can download and install it with the android-studioAUR package from the AUR.
Eclipse
Most stuff required for Android development in Eclipse is already packaged in AUR:
Official plugin by Google – Eclipse ADT:
Dependencies:
- eclipse-emfAUR
- eclipse-gefAUR
- eclipse-wtpAUR
- if you get a message about unresolvable dependencies, install Java manually and try again.
- as an alternative, you can install the ADT via eclipse's built in "add new software" command (see instructions on ADT site).
- if you are in real trouble, it is also possible to download Android SDK and use the bundled Eclipse. This usually works without problems.
Enter the path to the Android SDK Location in
Windows -> Preferences -> Android
Netbeans
If you prefer using Netbeans as your IDE and want to develop Android applications, download the nbandroid by going to:
Tools -> Plugins -> Settings
Add the following URL: http://nbandroid.org/release72/updates/updates.xml
Then go to Available Plugins and install the Android and Android Test Runner plugins for your IDE version. Once you have installed go to:
if you have problem with netbeans 7.2 "org.netbeans.modules.gsf.testrunner was needed and not found." Please remove the the Android and Android Test Runner , then change the url of nbandroid to: http://nbandroid.org/release72/updates/updates.xml , update the sources and you just need to install the Android only.
Tools -> Options -> Miscellaneous -> Android
and select the path where the SDK is installed. That's it, now you can create a new Android project and start developing using Netbeans.
Connecting to a real device - Android Debug Bridge (ADB)
To get ADB to connect to a real device or phone under Arch, you must install the udev rules to connect the device to the proper /dev/
entries.
Using existing rules
Install the AUR package android-udevAUR to get a common list of vendor IDs. If ADB recognizes your device (it is visible and accessible in IDE), you are done. Otherwise see instructions below.
Figure Out Your Device Ids
Each Android device has a USB vendor/product ID. An example for HTC Evo is:
vendor id: 0bb4 product id: 0c8d
Plug in your device and execute:
$ lsusb
It should come up something like this:
Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.
Adding udev Rules
Use the rules from Android developer or you can use the following template for your udev rules, just replace [VENDOR ID] and [PRODUCT ID] with yours. Copy these rules into /etc/udev/rules.d/51-android.rules
:
/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0666" SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_adb" SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"
Then, to reload your new udev rules, execute:
# udevadm control --reload-rules
Note: reloading udev rules under systemd should not be required, as any rule changes should be picked up automatically.
Configuring adb
Instead of using udev rules you may create/edit ~/.android/adb_usb.ini which contains list of vendor ids.
$ cat ~/.android/adb_usb.ini 0x27e8
Does It Work?
After you have setup the udev rules, unplug your device and replug it.
After running:
$ adb devices
you should see something like:
List of devices attached HT07VHL00676 device
If you do not have the adb program (usually available in /opt/android-sdk/platform-tools/
), it means you have not installed the platform tools.
If you are getting an empty list (your device isn't there), it may be because you have not enabled USB debugging on your device. You can do that by going to Settings => Applications => Development and enabling USB debugging. On Android 4.2 (Jelly Bean) the Development menu is hidden; to enable it go to Settings => About phone and tap Build number 7 times.
# gpasswd -a username adbusers
If there are still problems such as adb displaying "???????? no permissions" under devices, try restarting the adb server as root.
# adb kill-server # adb start-server
Tools specific to NVIDIA Tegra platform
If you target your application at NVIDIA Tegra platform, you might also want to install tools, samples and documentation provided by NVIDIA. In NVIDIA Developer Zone for Mobile there are two packages - Tegra Android Development Pack, available from AUR as tegra-devpackAUR and Tegra Toolkit, available from AUR as tegra-toolkitAUR.
The tegra-toolkitAUR package provides tools (mostly CPU and GPU optimization related), samples and documentation, while the tegra-devpackAUR provides tools (NVIDIA Debug Manager) related to Eclipse ADT and their documentation.
Tethering
Building Android
To build android, you need to install these packages.
- For all systems: gcc git gnupg flex bison gperf sdl wxgtk squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt
- Additional packages, only required on 64-bit systems: gcc-multilib lib32-zlib lib32-ncurses lib32-readline
For the JDK depending on the version of android you can use jdk7-openjdk, but to be safe either jdk6AUR, if you don't develop on the jvm, or jdk6-compatAUR, if you do have a prefered jvm for other tasks.
And you need to change the default python from version 3 to version 2:
# rm /usr/bin/python # ln -s /usr/bin/python2 /usr/bin/python
Download the repo utility.
$ mkdir ~/bin $ export PATH=~/bin:$PATH $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
Create a directory to build.
$ mkdir ~/android $ cd ~/android
Synchronize the repositories.
$ repo init -u https://android.googlesource.com/platform/manifest (checkout the master) $ repo sync
Wait a lot.
When finished, start building.
$ source build/envsetup.sh $ lunch full-eng $ make -j4
If you run lunch without arguments, it will ask what build you want to create. Use -j with a number between the number of cores and 2 * number of cores.
The build takes a lot of time.
Android will use the /tmp directory heavily. By default the size of the partition the /tmp folder is mounted on is half the size of your RAM. If it fills up, the build will fail. 4GB of RAM or more is recommended.
- Alternatively, you can get rid of the tmpfs from fstab all together.
When finished, run the final image.
$ emulator
Tips & Tricks
During Debugging "Source not found"
Most probably the debugger wants to step into the Java code. As the source code of Android does not come with the Android SDK, this leads to an error. The best solution is to use step filters to not jump into the Java source code. Step filters are not activated by default. To activate them:
Window -> Preferences -> Java -> Debug -> Step Filtering
Consider to select them all. If appropriate you can add the android.* package. See the forum post for more information: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml
Linux distribution on the sdcard
You can install Debian like in this thread. Excellent guide to installing Arch in chroot (in parallel with Android) can be found on archlinuxarm.org forum.
Android SDK on Arch 64
When using the Android SDK and the Eclipse plugin on a 64 bit system, and the 'emulator' always crashes with a segfault, do the following: Provide a localtime file in /usr/share/zoneinfo/localtime e.g.:
# cp /usr/share/zoneinfo/Europe/Berlin /usr/share/zoneinfo/localtime
Better MTP support
If you have an Android device that doesn't support UMS and you find mtpfs to be extremely slow you can install jmtpfsAUR from the AUR. See MTP for more options.