Project

General

Profile

SDK » History » Version 51

Denis 'GNUtoo' Carikli, 01/30/2023 06:17 PM
Add Android SDK versions

1 1 John Smith
h1. SDK
2
3
The [[ReplicantSDK]] page holds a list of the released Replicant SDK builds.
4
5 25 Paul Kocialkowski
h2. Rationale
6 1 John Smith
7 38 dl lud
Up till version 4.2, Replicant provided its own SDK, built from source, since the Android SDK as released by Google is distributed under a non-free license and suggests installing non-free plug-ins such as the Google APIs.
8 29 Paul Kocialkowski
The Replicant SDK contains only free software and will not check for plug-ins or updates from Google.
9 1 John Smith
10 42 Denis 'GNUtoo' Carikli
From Replicant 6.0 onward "there was no longer the need to provide a Replicant SDK":https://blog.replicant.us/2017/04/there-wont-be-a-replicant-6-0-sdk-because-there-is-already-something-better/ because some fully-free GNU/Linux distributions already provide packages for the Android SDK.
11 1 John Smith
12 51 Denis 'GNUtoo' Carikli
| Distribution         | Status                                                                                          | Gradle version  | Android versions   |
13
| Debian  9 (stretch)  | Has android-sdk packages, probably complete[2]                                                  |                 |                    |
14
| Debian 10 (buster)   | Has android-sdk packages, probably complete[3]                                                  |                 |                    |
15
| Debian 11 (bullseye) | Has android-sdk packages, probably complete[4]                                                  |                 |                    |
16
| Parabola             | "Work in progress":https://www.parabola.nu/packages/?q=android-sdk [1] that has stalled in 2018 |                 |                    |
17
| Trisquel 7 (belenos) | Has android-sdk packages, probably complete[1]                                                  |                 |                    |
18
| Trisquel 8 (flidas)  | Has android-sdk packages, probably complete[1]                                                  |                 |                    |
19
| Trisquel 9 (etiona)  | Has android-sdk packages, probably complete[1]                                                  |                 |                    |
20
| Trisquel 10 (nabia)  | Has android-sdk packages, probably complete[1]                                                  | 4.4.1           | 6.0 (API Level 23) |
21 50 Denis 'GNUtoo' Carikli
22 39 dl lud
23 42 Denis 'GNUtoo' Carikli
There is also the "Android Rebuilds":https://android-rebuilds.beuc.net/ project that provides a free Android SDK, built from the Android source code. So it probably works on most of the the GNU/Linux distributions that exist, however, at the time of writing, it is still relied on Google's prebuit toolchain (which is free software) to build the SDK.
24 40 dl lud
25 42 Denis 'GNUtoo' Carikli
fn1. The packages are based based on "android-sdk-meta":https://salsa.debian.org/android-tools-team/android-sdk-meta by the Debian project.
26 49 Denis 'GNUtoo' Carikli
27
fn2. https://packages.debian.org/stretch/android-sdk
28
29
fn3. https://packages.debian.org/buster/android-sdk
30
31
fn4. https://packages.debian.org/bullseye/android-sdk
32 42 Denis 'GNUtoo' Carikli
33
h2. Installation of the Replicant SDK
34 25 Paul Kocialkowski
35 1 John Smith
After downloading the Replicant SDK from the [[ReplicantSDK]] page, it should work the same as the Android SDK as provided by Google except that the Replicant SDK already contains a built and ready to use emulator image. 
36
Please refer to: http://developer.android.com/sdk/installing/index.html for further assistance. 
37
38 25 Paul Kocialkowski
h3. Dependencies
39
40 29 Paul Kocialkowski
h4. Required Packages
41
42
The Replicant SDK requires the following packages:
43 1 John Smith
* SDL
44 29 Paul Kocialkowski
* OpenJDK 6
45 31 Paul Kocialkowski
* Ant
46 1 John Smith
47
In some unlikely cases, creating a "JAVA_HOME" environment variable and pointing it to your JDK's true install location (not the "bin" directory but one level upward) may prove necessary.
48
49 29 Paul Kocialkowski
h5. Additional requirements for amd64
50 1 John Smith
51
Note that the Replicant SDK is built for x86 platforms and you may need compatibility libraries such as @ia32-libs@.
52 29 Paul Kocialkowski
53
h4. Command line installation
54
55
h5. Trisquel/Ubuntu/Debian
56
57
Required packages:
58 1 John Smith
<pre>
59 31 Paul Kocialkowski
apt-get install libsdl1.2debian openjdk-6-jdk ant
60 29 Paul Kocialkowski
</pre>
61
62
Additional requirements for amd64:
63 25 Paul Kocialkowski
<pre>
64
apt-get install ia32-libs
65
</pre>
66 1 John Smith
67 33 Beuc Beuc
68
h2. Rebuilding the SDK from sources
69
70
See [[SDKBuild]].
71
72
73 25 Paul Kocialkowski
h2. Usage guides
74 2 John Smith
75 25 Paul Kocialkowski
h3. Using Eclipse
76 1 John Smith
77 25 Paul Kocialkowski
You may want to install Eclipse to work on Android Java applications. Note that this is not strictly necessary as all the required tools are already present on the SDK package. 
78 1 John Smith
79 25 Paul Kocialkowski
h4.  Installing the "Android Development Tools" plugin for Eclipse
80 1 John Smith
81 30 James Adams
The following instructions work with Eclipse 3.7.2 (Indigo) as installed via Apt under Trisquel Toutatis GNU/Linux.
82
<pre>
83
sudo aptitude install eclipse
84
</pre>
85 1 John Smith
86 30 James Adams
Once you have Eclipse installed and running properly, you may want to install the Android Development Tools plugin.
87 1 John Smith
88 32 Paul Kocialkowski
* The Replicant 4.0 SDK requires ADT version 16 while the Replicant 4.2 SDK requires ADT version 20. You will need to download it from Google's archives and then manually install it in Eclipse:
89 1 John Smith
90
http://dl.google.com/android/ADT-16.0.0.zip
91 32 Paul Kocialkowski
http://dl.google.com/android/ADT-20.0.0.zip
92 1 John Smith
93 30 James Adams
* in Eclipse 3.7
94 1 John Smith
95
- select "Window" > "Preferences" > "Install/Update" > "Available Software Sites"
96
- click the "Add" button
97 32 Paul Kocialkowski
- name your software site something recognizable, e.g. "ADT"
98
- click "Archive" and select the ADT zip file
99 1 John Smith
100 30 James Adams
* in Eclipse 3.7
101 1 John Smith
102
- select "Help" > "Install New Software"
103 32 Paul Kocialkowski
- select the "ADT"/ software site from the dropdown menu
104 1 John Smith
- select the "Developer Tools" software package
105 2 John Smith
- verify that the "Android DDMS" and "Android Development Tools" sub-packages were selected
106
- click the "Next" to install Android Developer Tools
107 25 Paul Kocialkowski
108 1 John Smith
* restart Eclipse
109
110 9 John Smith
h4. Pointing "Android Development Tools" to the SDK directory
111 11 John Smith
112 2 John Smith
When you have installed ADT and restarted Eclipse, select the "Window" menu. You should see a menu entry named "Android SDK and AVD Manager". Then select "Preferences" from the "Window" menu. A menu item named "Android" should be available on the left panel.
113 12 John Smith
114 34 Beuc Beuc
Once the "Android" menu item is available in the "Window" > "Preferences" dialog, select it. In the main panel, click the "Browse" button for the "SDK Location" field, and point it to the directory where you unzipped your Replicant 4.2 SDK. Then click "Apply" or "OK".
115 12 John Smith
116 34 Beuc Beuc
Next time you enter this dialog, a line saying "Android 4.2.2 / Android Open Source Project / Platform: 4.2.2 / API level: 17" should be present in the list of SDK targets.
117 25 Paul Kocialkowski
118 13 John Smith
h3. Writing a "Hello World" app in Eclipse
119
120
h4. Creating an Android Virtual Device
121
122
To run your app in an emulator, you need to create an Android Virtual Device. In Eclipse, choose "Window" > "Android SDK and AVD Manager" > "Virtual Devices" > "New" and fill in the properties of the virtual device as follows:
123 1 John Smith
124 13 John Smith
- Name: something descriptive like "AVD_for_Nexus_S"
125 34 Beuc Beuc
- Screen resolution of your physical device, e.g. "WVGA800" for Nexus S
126
- Target: choose "Android 4.2.2 - API level 17" from the dropdown menu
127 13 John Smith
- SD Card: specify the size of an emulated SD card, alternatively browse for an existing SD card image
128 1 John Smith
- leave other values at defaults and click "Create AVD"
129 14 John Smith
- if your disk is slow and you specified a large SD card image for creation, it may take a few seconds to complete
130 17 John Smith
131 14 John Smith
h4. Creating a project
132
133 34 Beuc Beuc
In Eclipse, choose "File" > "New" > "Project". In the tree of possible project types, a branch named "Android" should exist. Open it, select the project type "Android Application Project" and click "Next".
134 1 John Smith
135 34 Beuc Beuc
Enter a friendly name for your application, e.g. "Hello World", then a name for your project, e.g. "hello". Enter its package name, which can be either public (e.g. "com.example.hello") or private (e.g. "hello.test").
136 15 John Smith
137 34 Beuc Beuc
For "Configure", select "Create project in workspace" and use default location. The project will be created in your local Eclipse workspace directory, in a subdirectory corresponding to the project name. Leave the minimum SDK version as-is.
138 16 John Smith
139 34 Beuc Beuc
If you want the first piece of your application's user interface to be auto-created, leave the "Create Activity" checkbox checked and enter someting like "MainActivity" for the name of the "Activity" class to create.
140 1 John Smith
141 34 Beuc Beuc
Finally click "Finish" and your project should appear in Eclipse's left-hand projects tree.
142
143 17 John Smith
h4. Adding some code and resources into a project
144
145
To have your application's MainActivity class do something, consider adding some code. For example, you might want your application to have a button which closes it. In this sample, we specify the design of user interface elements in a separate XML resource file, so don't be surprised when you don't see anything related to their design here:
146
147
<pre>package hello.test;
148
149
import android.app.Activity;
150
import android.os.Bundle;
151
import android.view.View;
152
import android.widget.Button;
153
154
public class MainActivity extends Activity {
155
156
    @Override
157
    public void onCreate(Bundle savedInstanceState) {
158
    	
159
        super.onCreate(savedInstanceState);
160
        setContentView(R.layout.main);
161
        
162
        Button buttonFinish = (Button) findViewById(R.id.buttonFinish);
163 1 John Smith
        buttonFinish.setOnClickListener(new View.OnClickListener() {
164 17 John Smith
			@Override
165
			public void onClick(View v) {
166
				finish();
167
			}
168
		});
169
    }
170
}</pre>
171
172 34 Beuc Beuc
You may notice how the constructor of MainActivity calls @setContentView(R.layout.main)@. In this statement, @R@ is a special resource class, pointing to resources hosted in the @res@ directory of your project. The @layout@ class limits the choice to layout resources hosted under the @res/layout@ while @main@ is the name of a layout resource file @main.xml@ located there.
173 17 John Smith
174
We need to create this resource file now. I would recommend having it be like this:
175
176
<pre><?xml version="1.0" encoding="utf-8"?>
177
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
178
    android:orientation="vertical"
179
    android:layout_width="fill_parent"
180
    android:layout_height="fill_parent"
181
    >
182
<TextView
183
    android:id="@+id/textInfo"
184
    android:layout_width="fill_parent" 
185
    android:layout_height="wrap_content" 
186
    android:text="Click button to close app."
187
    />
188
<Button android:id="@+id/buttonFinish"
189
    android:layout_width="wrap_content"
190 18 John Smith
    android:layout_height="wrap_content"
191 17 John Smith
    android:text="Close" />
192 1 John Smith
</LinearLayout>
193 18 John Smith
</pre>
194 19 John Smith
195 20 John Smith
Together, it makes sense. The "LinearLayout" element directs the application to fill the screen with its window ("fill_parent" for width and height). The "TextView" element displays a text field expanding to cover window width, but limits itself to content height ("wrap_content"). The "Button" element is a button named "buttonFinish", big enough to accommodate its content. Code obtains a handle to it by calling "Button buttonFinish = (Button) findViewById(R.id.buttonFinish);"), and creates an event listener for its OnClick event. This event listener calls "finish()" to close the app.
196
197
h4. Running the app on an Android Virtual Device
198
199 21 John Smith
Once you've coded your app, choose "Run" > "Run" in Eclipse. A dialog named "Android Device Chooser" will open, asking you to choose a device for it. Select the "Launch a new Android Virtual Device" checkbox and the virtual device you previously made, should become available for selection (select it and click "OK"). The virtual device will start booting up and will eventually run your app. Beware, on slow computers (e.g. an old model of Asus EEE PC) this can take minutes.
200
201
h4. Running the app on a real Replicant device
202 22 John Smith
203
1. Declare your app as debuggable. In the left-hand sidebar of Eclipse, your project's resource tree should contain a file resource named "AndroidManifest.xml". Right-click it and choose "Open With". Proceed by choosing either "Android Manifest Editor" or "Text Editor". If you preferred the manifest editor GUI, select the tab "Application" at its bottom. On the "Application" tab, set the field "Debuggable" to "true". If you preferred the text editor, append the property "android:debuggable="true" to the "<application>" element.
204
205 23 John Smith
2. Enable USB debugging on your device, for example by choosing "Menu" > "Settings" > "Applications" > "Development" and checking the "USB Debugging" checkbox.
206
207 35 Wolfgang Wiedmeyer
3. Set up [[ADB]] on your PC.
208 24 John Smith
209 37 Wolfgang Wiedmeyer
Do the verification by issuing "adb devices" on command line. Make your your ADB (Android Debug Bridge) is included in your @$PATH@ variable. If it lists your device and its numeric ID, all should be fine. If it lists @?????????@ for the ID and says @No permissions@, you might need to restart the ADB server (issue @adb kill-server; adb start-server@).
210 24 John Smith
211 23 John Smith
4. Run the app. Without a customized run configuration, Eclipse should display the "Android Device Chooser" dialog, letting you choose. 
212
213 1 John Smith
5. Optionally, configure automatic deployment: if you want to automatically deploy to devices when they're attached, create a run configuration for your app, proceeding to select "Deployment Target Selection Mode: Automatic" in the "Target" tab.