Compare commits

...

386 Commits

Author SHA1 Message Date
6f29991829 Updated translations 2014-04-08 12:38:39 +00:00
a414b10ce8 Long press to start/stop router (prevents accidental presses) 2014-04-08 01:12:52 +00:00
030fc60445 Updated i2ptunnel.config from upstream 2014-04-08 00:47:52 +00:00
9d215353e8 Updated release notes 2014-04-08 00:27:29 +00:00
f0a2166ae0 Correct Android forum URL 2014-04-08 00:27:17 +00:00
af097474de Padding 2014-04-08 00:25:43 +00:00
5a1fc32da4 All logging is conditional 2014-04-07 23:53:52 +00:00
7218b79643 Hide Help page until it is finished 2014-04-07 22:48:40 +00:00
ccd5ae45df Removed old translations that have no default string 2014-04-07 22:47:47 +00:00
3584890277 HTTP client tunnel bug disappeared...? 2014-04-07 22:27:47 +00:00
4e17010f59 New translations for nb 2014-04-07 21:22:50 +00:00
aa8009cb70 Updated translations 2014-04-07 21:22:03 +00:00
30d1816c43 Updated translations 2014-03-31 21:25:04 +00:00
02c25ba174 Updated translations 2014-03-16 21:50:14 +00:00
8f8bbcb19f Show "router not ready" message on graph settings page 2014-03-16 10:50:00 +00:00
696ae2bfc0 Prevent graph settings being wiped just after router start 2014-03-15 21:33:31 +00:00
0ea468ea71 Updated TODO 2014-03-15 12:37:40 +00:00
a2d9adb071 Implement required API 19 method override 2014-03-09 09:36:36 +00:00
b8cc64d4ea Updated translations 2014-03-07 21:48:14 +00:00
6e3e99c62f Fixed unzipping resources 2014-03-04 03:28:05 +00:00
84a63cc911 Updated TODO 2014-03-04 03:14:43 +00:00
b8c3b7e3df merge of '1af98386e3efe227cfa78be17a8c4a7785aeea8a'
and '87e720357989c67de7752f3616a85c09b5975eda'
2014-03-04 03:07:32 +00:00
04e190d2d0 Updated translations 2014-03-04 03:07:23 +00:00
ce2a762db2 Temporarily enable inbuilt browser until an alternative is ready 2014-03-04 03:00:13 +00:00
76014f2081 Move hardcoded strings to strings.xml 2014-03-03 22:01:26 +00:00
6d570646f1 Build addressbook.jar instead of addressbook.war (no Jetty dependency) 2014-03-03 03:50:23 +00:00
104c17cb9c Dropped unnecessary drawables 2014-03-01 21:32:49 +00:00
0860ee83b0 propagate from branch 'i2p.android.base' (head 76695da8c3e4ec8e9a3034baa1d60babbef279ac)
to branch 'i2p.android.base.fragments' (head 912c186827c29b8237045712fb25b7500a994fb3)
2014-03-01 21:29:51 +00:00
zzz
707c0e9aa8 url updates 2014-03-01 16:19:02 +00:00
163bc2ce58 only build router once 2014-02-27 02:58:59 +00:00
cec1f8fe52 propagate from branch 'i2p.android.base' (head 13ee72756c9d5407dafed769cda7c7dd5bd66cce)
to branch 'i2p.android.base.fragments' (head 29d48eb27592b749718622a683371d10f07431b2)
2014-02-27 01:57:16 +00:00
97f52f8139 remove res/raw/license_fatcowicons_txt in the clean target 2014-02-27 01:45:00 +00:00
0094cc5637 Only build the router.....when building (ticket #1214) 2014-02-27 01:31:52 +00:00
01c994e7b2 fix tag 2014-02-27 01:30:07 +00:00
b60ae00fd7 19 isn't a valid target anymore; it's now android-19 2014-02-26 23:50:28 +00:00
2340500083 Updated Irc2P servers 2014-02-24 01:14:11 +00:00
zzz
a91261f5ca JNI Build:
- Update JNI build script to use GCC 4.6, required for
   NDK r9b and higher (ticket #1202)
 - Add more checks in build script, to fail quicker on problems
 - Move default NDK build location up one directory level
 - Fix setting JAVA_HOME
 - Fixes for running script in the directory

 I did not replace the checked-in 4.4.3 libjbigi.so with
 the new 4.6 version, as there's no need.
 The 4.6 version will be tested by nextloop in the F-Droid build.
2014-02-23 16:40:47 +00:00
a145729353 Updated .mtn-ignore 2014-02-21 06:32:00 +00:00
0270444a94 Added missing drawables 2014-02-21 06:12:11 +00:00
01e22f4fb5 Updated TODO 2014-02-21 00:14:21 +00:00
2e892841cb Display text from initial news when router is first started 2014-02-21 00:14:07 +00:00
e271dc90ae Removed License button from VersionDialog 2014-02-21 00:13:03 +00:00
77ced0bd1f Revert to RouterLaunch.main(null) (upstream fixed) 2014-02-20 23:06:42 +00:00
ac67533ef2 Moved classes around 2014-02-20 21:42:25 +00:00
305c834aa1 Updated TODO 2014-02-20 11:18:02 +00:00
cbb2973b36 Linkify .i2p URLs 2014-02-20 10:35:22 +00:00
f360ab4d5d Updated RouterService with changes to RouterLaunch.main() 2014-02-20 06:38:51 +00:00
296d21d1d0 Added notifications for clients; notify on news update 2014-02-20 06:36:57 +00:00
a5dd751227 Register shutdown hook in NewsFetcher 2014-02-19 07:16:01 +00:00
d47bdf85d2 New translations 2014-02-07 04:30:04 +00:00
c2a33541b3 Updated translations 2014-02-07 04:28:55 +00:00
3e46d98481 Use the tunnel type ImageView to show tunnel status 2014-01-27 06:18:11 +00:00
124b1499b4 Show list of running tunnels 2014-01-27 06:02:12 +00:00
2d8529e691 Show full router stats as advanced option 2014-01-27 03:37:57 +00:00
4a135023b9 Layout id renaming 2014-01-27 02:51:48 +00:00
e9fbe8c2ef Removed website and FAQ links from nav drawer, added website link to about 2014-01-27 02:31:10 +00:00
228d0204fc Updated TODO 2014-01-26 06:47:32 +00:00
0ebecd9b64 Changed navbar first-use mechanics to match Android design pattern 2014-01-26 06:38:34 +00:00
c062a0f803 Missing change in layout-land 2014-01-26 05:35:46 +00:00
4f24517de9 Hide status ScrollView if router not running 2014-01-26 05:12:45 +00:00
d8636ff563 Added About dialog 2014-01-26 04:59:16 +00:00
4e57f78931 Disable WebActivity from receiving URL Intents 2014-01-26 00:19:17 +00:00
ccbbc3c368 Added link from Log Activity to Logging settings
TODO: Fix link for Preference headers
2014-01-25 20:21:11 +00:00
b9374b5ead Manually set state to WAITING 2014-01-22 15:18:14 +00:00
ceaff935d6 New status image for "no internet" 2014-01-21 07:00:01 +00:00
255702b6bb Updated TODO 2014-01-21 06:52:31 +00:00
2e68aa900b Change to RI tab when viewing RI from LS 2014-01-17 14:57:47 +00:00
67eddba621 Display current default log level in settings 2014-01-17 00:17:54 +00:00
29fb1f0689 Added missing file 2014-01-16 23:56:59 +00:00
de605a1d5b Removed unused import 2014-01-16 23:48:31 +00:00
41b49b7bc8 Call onRouterBind() of detail fragment in two-pane mode 2014-01-16 23:47:49 +00:00
c691a11c3d Added scrolling to RI and LS detail fragments 2014-01-16 19:29:02 +00:00
2f6b1189ae Hide edit action in I2PTunnel 2014-01-16 19:10:33 +00:00
a7a328238b Added TODO list 2014-01-16 18:15:46 +00:00
c9c31ccb76 Stubbed out code for log-level overrides 2014-01-16 18:05:01 +00:00
8457f279f2 Moved debug log entries to Util.d() 2014-01-16 17:40:14 +00:00
fbf353858e Added settings page for logging, config option for default log level 2014-01-15 17:45:40 +00:00
99ef07d1fc Added action to manually reload subscriptions 2014-01-15 02:40:20 +00:00
a5f5e97e37 Use new ClientApp interface to start/stop BOB 2014-01-15 02:04:36 +00:00
165bcc1c9d Removed temp changes 2014-01-11 23:41:02 +00:00
45efd6670f Adjusted labels 2014-01-11 23:40:07 +00:00
b601722b31 Removed temp changes 2014-01-11 23:39:48 +00:00
14e1a2dca1 Notify user if router not running when opening graph settings 2014-01-11 22:40:10 +00:00
d2385166cb Fixed race between router binding and onCreateOptionsMenu() 2014-01-11 22:30:12 +00:00
ed17d59896 Fix WebActivity handling of indirect Intents 2014-01-11 22:06:38 +00:00
55cfd455ca Use indirect Intents to open URLs 2014-01-11 22:06:09 +00:00
f207cf3116 Removed unneeded import 2014-01-11 21:07:42 +00:00
5825d1d2a5 Fetch router state in onResume() 2014-01-11 21:07:22 +00:00
zzz
077f9902a9 update to API 19 2014-01-11 17:36:45 +00:00
d77cbde3b3 Updated target API to 19 2014-01-05 06:00:57 +00:00
62ff63665f Fixed check for state on shutdown 2014-01-04 07:34:02 +00:00
1377aceb18 Use images derived from I2P logo for status 2014-01-04 07:31:59 +00:00
c7617ba856 Ensure state image is correct when router has shut down 2013-12-30 00:08:29 +00:00
08c6018483 Added State.ACTIVE to indicate when router is ready for use 2013-12-30 00:03:08 +00:00
f9f283409d Fixed out-by-one error in logs 2013-12-29 23:34:04 +00:00
4ef42cb462 Scrolling for log entries 2013-12-29 23:30:04 +00:00
65428dda8e Fix IRouterState Service connection leak properly 2013-12-29 23:29:49 +00:00
6311ab4b67 Comment to explain dual-pane criterion for preference headers 2013-12-29 19:22:31 +00:00
0c20a45207 Don't update filter list if content not loaded 2013-12-29 19:18:48 +00:00
6712148010 Fixed potential leak of IRouterState Service connector 2013-12-29 19:07:09 +00:00
07e6e293bc AIDL interface for getting router status, used for MainFragment status images
Other apps can use this interface by copying the AIDL files into their source
tree.
2013-12-29 18:04:39 +00:00
2dd1655e1e Type argument changes caused by i2p.i2p cleanup 2013-12-18 05:26:58 +00:00
97037fe1d8 New translations 2013-12-06 12:20:31 +00:00
d79f797558 Reorganized source files by section instead of by type 2013-12-06 07:56:09 +00:00
42649e02ea Replaced logo with status images, combined start and stop buttons 2013-12-06 02:20:32 +00:00
c6aeb79944 Created some status indication images for the main page based on I2P logo dots 2013-12-06 02:16:48 +00:00
fb66ec62d6 Improved IRC tunnel names/descs 2013-12-05 00:49:50 +00:00
15f1e18da1 Added Nameless IRC to default tunnels 2013-12-05 00:47:32 +00:00
15caf8a97c Reorder main fragment 2013-12-05 00:36:38 +00:00
44989a42f2 Remove bigText when replacing status 2013-11-25 20:29:44 +00:00
3867eb6fda Fixed positional substitution 2013-11-25 20:24:43 +00:00
0755e79b1a Status bar: Show status details as bigText, mirror router status in title 2013-11-25 20:23:31 +00:00
3a1e43b322 Use NotificationCompat.Builder 2013-11-25 11:33:39 +00:00
6a2d494921 Show full Log entry in a detail page 2013-11-19 11:39:55 +00:00
be14d65899 Renamed Log listitem layout, limit list to max 3 lines 2013-11-19 10:50:58 +00:00
c42dc725d6 Migrated LogFragment to use loader 2013-11-19 02:34:58 +00:00
83ab1d09ae Don't crash if RI or LS lookup returns null
Todo: determine why some lookups of OBEPs can be null, and handle the null case
in the UI.
2013-11-18 06:29:07 +00:00
af30dc8e24 Fixed addressbook crash 2013-11-18 06:10:35 +00:00
0268ce13ad Missing change to strings 2013-11-17 20:11:31 +00:00
5b897bc993 Show number of search results in addressbook 2013-11-17 20:09:16 +00:00
1fbf6b1b72 State that File Manager is needed 2013-11-17 12:13:40 +00:00
8095eed241 Added wizard page to read B64 from text file 2013-11-17 12:05:59 +00:00
8916c123ef Hide actions when router not running 2013-11-17 10:40:48 +00:00
b742dd8ee8 Use callback for TunnelListFragment 2013-11-17 10:27:05 +00:00
b02b446e46 Fixed addressbook crash when router not running 2013-11-17 06:26:32 +00:00
01b07fed5b Simplified callback system 2013-11-17 06:19:50 +00:00
2fa205daec Router-down fixes 2013-11-17 05:58:32 +00:00
3644d738ee Cleanups 2013-11-16 22:29:21 +00:00
c044c4de4d Use new callbacks for NetDbDetailFragment 2013-11-16 22:18:04 +00:00
c705527113 Handle corner case where onRouterBind() not called but RouterContext available 2013-11-16 22:13:39 +00:00
8b79af434e Use new callbacks for NetDB 2013-11-16 22:07:32 +00:00
2c8e9d62be Use new callbacks in AddressbookFragment 2013-11-16 21:57:33 +00:00
9832779a50 New callback system to make getRouterContext() reliable 2013-11-16 21:56:10 +00:00
9f535a3260 Save data from add wizard in private book
This does nothing. getRouterContext() is always null when onActivityResult() is
called. Todo: implement callback that fires when the Router has bound and the
Fragment has an Activity.
2013-11-16 10:10:22 +00:00
0beaec366f Use ns.getEntries() to get both name and Dest, and for filtering 2013-11-15 20:30:57 +00:00
8c288ad559 Basic add-to-private-book wizard, does nothing 2013-11-15 10:04:49 +00:00
df5d5ad38e Abstracted most of TunnelWizardActivity 2013-11-13 09:55:53 +00:00
8b1648c37b Only allow adding to private book 2013-11-13 07:57:58 +00:00
cea42e9ec4 Enable privatehosts.txt 2013-11-12 09:54:36 +00:00
64c44838a8 Hide list when loading, remove Toast notification from onLoadFinished()
Addressbook Loader works (from previous commit). Todo: put name count
in list header.
2013-11-12 05:35:08 +00:00
76f9259ee7 Filter addressbook in the Loader 2013-11-12 02:42:46 +00:00
d437f45132 Use TreeSet to sort Addressbook names 2013-11-12 02:33:19 +00:00
fc618ad9e5 Disabled country lookup, no GeoIP file 2013-11-12 02:20:39 +00:00
15275680e8 First pass at migrating Addressbook to use Loaders
Broken, addresses do not load into mAdapter after a tab change.
2013-11-12 01:10:29 +00:00
7848a81110 Added tabs to Addressbook 2013-11-12 01:01:34 +00:00
207f9837d0 Don't duplicate RouterContextProvider interface 2013-11-12 00:42:14 +00:00
cda09ea4f5 Suppress "unchecked" warnings 2013-11-11 21:41:26 +00:00
2a15994a76 Load real stats into NetDb ViewPager
getRouterContext() returns null in onActivityCreated(), there is a race
condition to fix somewhere, use refresh action to load.
2013-11-11 20:23:07 +00:00
e954953130 Reconnect to existing loader when screen rotated 2013-11-11 19:57:58 +00:00
8b51c26a6b Expanded NetDB detail pages to match /netdb 2013-11-11 10:02:52 +00:00
d40f806be6 Use Util.e() 2013-11-11 04:06:04 +00:00
bf5b29da76 Fixed NetDB detail filling 2013-11-11 04:03:08 +00:00
18c4276ba0 Fixed id 2013-11-11 04:01:39 +00:00
a4107e974a First pass at NetDB details, runs but View is not filled 2013-11-11 03:26:32 +00:00
8dd35f6c0f New translations 2013-11-11 03:23:40 +00:00
5a4be4ae86 Added missing file 2013-11-11 03:17:12 +00:00
9527725760 Process RI/LS in NetDbEntry, use DatabaseEntry when possible 2013-11-11 03:15:34 +00:00
b6a8fc02f5 Removed unused import 2013-11-11 01:25:21 +00:00
7794a7db5b Use manual action to refresh NetDB list instead of timer 2013-11-11 01:22:52 +00:00
c03debf332 Implemented Entry/Loader/Adapter for NetDbListFragment 2013-11-10 22:30:52 +00:00
fbc56d4eb9 Only use ViewPager for NetDb stats 2013-11-09 12:25:03 +00:00
2a050b3ca1 Updated AndroidManifest for renamed class 2013-11-09 12:20:28 +00:00
48c8d84d2f Fixed new version dialog text 2013-11-08 20:56:52 +00:00
b6d6258e95 Renamed Rate graph code 2013-11-08 19:41:17 +00:00
47215495ed add patch from ticket #1103, consistency fixes, remove some unneeded bashisms, set proper JAVA_HOME on OSX 2013-11-01 02:01:15 +00:00
9e45f1998b remove executable bit 2013-11-01 01:59:40 +00:00
788445f6ce New translations 2013-10-15 19:52:39 +00:00
a057e4a512 Show dialog if graphs are not ready 2013-09-28 13:36:31 +00:00
7a09670097 Removed unused import 2013-09-28 12:15:58 +00:00
c92d881a51 Dynamically fetch current list of graphs 2013-09-28 12:11:30 +00:00
8c2ba03880 Added settings for which graphs to plot
The onPause() method in SettingsFragment was removed as it is unnecessary. The
parent SettingsActivity onPause() is sufficient to save config changes.
2013-09-28 11:34:54 +00:00
9c9f871667 Fixed some warnings 2013-09-28 02:39:41 +00:00
7f9758197d Missing changes from previous commit 2013-09-28 02:18:11 +00:00
f6d1c093e4 Migrated SettingsActivity to preference headers 2013-09-28 02:17:35 +00:00
5e045bc23b Show current value in exploratory tunnel settings menu
TODO: Refresh summary when a setting is changed.
2013-09-26 21:23:30 +00:00
f667a81c6d Stop TunnelDetailFragment crashing if mTunnel is null
TODO: determine why mTunnel is not being set.
2013-09-25 03:52:27 +00:00
a13a405b49 Created white itoopie SVG, exported new notification icons 2013-09-25 03:38:36 +00:00
383ece497f Pulled in (and cleaned) SVG from i2p.itoopie, exported cleaner launcher icons 2013-09-25 02:16:30 +00:00
075c7c09d7 First draft of NetDB page: nav drawer w/ ViewPager, tabbed categories 2013-09-20 05:28:18 +00:00
7cec48e55f Combined error log and log views into a drop-down list 2013-09-08 06:48:58 +00:00
7ddd3c69c8 Save and restore selected rate graph 2013-09-07 13:49:16 +00:00
9d965a5504 Removed hard-coded title from graph (drop-down is more informative) 2013-09-07 13:44:55 +00:00
abd4a99654 Moved hard-coded list of graphs from nav drawer to actionbar drop-down 2013-09-07 13:42:27 +00:00
92c734624d Save and restore selected tunnel tab 2013-09-07 13:15:40 +00:00
81d0441d2b Implemented stat graphing
StatSummarizer and SummaryListener are based on the same-named classes from the
routerconsole. Data is stored in memory using an AndroidPlot SimpleXYSeries.
Only the last 30 points are currently stored.
2013-09-07 08:07:15 +00:00
9c7b2142cf AndroidPlot library version 0.6.0 from http://androidplot.com/download/
License: Apache 2.0
2013-09-07 08:05:33 +00:00
3da41888b7 Don't delete libs/ 2013-09-07 07:58:16 +00:00
bf47b901b7 Restored reload action (needed to update webpage if cached), fixed back nav 2013-09-06 00:53:03 +00:00
54a446ebdb Fixed Addressbook domain opening in left column of two-pane mode 2013-09-05 23:45:55 +00:00
0eb0c67616 Moved remaining links on main page to nav drawer
A WebActivity has been added back to encapsulate the web browser functionality,
allow the nav drawer items to be launched and enable other fixes.
2013-09-05 23:43:44 +00:00
409d823dec propagate from branch 'i2p.android.base' (head 673745663d325fbda1918746084110decd77634e)
to branch 'i2p.android.base.fragments' (head 9a651bea924de2d108bd743e4cb20958d281a4ff)
2013-09-05 23:02:46 +00:00
0208e58a3b Fixed previous commit
Refreshing is now disabled in PeersFragment and WebFragment, but both of them
will eventually be removed.
2013-09-05 12:25:32 +00:00
6d18e50a3a Removed start/stop and reload buttons from main menu 2013-09-05 11:48:08 +00:00
c748610280 Added PeersActivity; moved peers link to nav drawer for now 2013-09-05 11:43:41 +00:00
7768c624f9 New I2PFragmentBase so Fragments can access RouterContext, migration changes
All page logic is in the Fragments. Activities don't need the convenience
methods.
2013-09-05 06:07:34 +00:00
72ed6bd170 Migrated nav drawer code into I2PActivityBase 2013-09-05 03:54:09 +00:00
3d5b9938fd Migrated I2PFragmentBase back to I2PActivityBase
zzz and sponge pointed out that the router needs to be managed by whatever
Activity happens to be active (in case an automatic start is required). This
commit reverses the initial migration of I2PActivityBase to a Fragment (code is
broken now).
2013-09-05 03:39:15 +00:00
03b5927447 Updated refresh icon, removed old icons 2013-08-28 06:47:01 +00:00
b7a6b4acd5 Manifest change missing from previous commit 2013-08-28 06:02:51 +00:00
e27e1e55bd Implemented an Addressbook picker for Destination in tunnel wizard 2013-08-28 05:26:24 +00:00
0b0511dbce Added verification of Destination in tunnel wizard 2013-08-28 03:14:30 +00:00
02c370a04a Added input validation support to SingleTextFieldPage 2013-08-28 02:48:05 +00:00
4810c9e990 Implemented starting and stopping tunnels 2013-08-28 00:42:29 +00:00
cc801de79d More indent changes 2013-08-27 23:58:58 +00:00
93fd4f7e0c Fixed indent 2013-08-27 23:56:45 +00:00
abd9908a21 Moved tunnel list help handler to correct class, removed unused imports 2013-08-27 23:54:34 +00:00
52d278134c Added help link to tunnel list overflow menu 2013-08-27 23:51:57 +00:00
c60e4f6b3e Set up action buttons for starting and stopping tunnels 2013-08-27 23:47:18 +00:00
5b7452ff90 Fixed two-pane tunnel deletion 2013-08-27 11:12:47 +00:00
014fc9b79b Added edit and delete actions to tunnel detail fragment, implemented deletion 2013-08-27 10:11:01 +00:00
9ca0ce3192 Moved TunnelWizardModel parameter descriptions into resources 2013-08-27 04:01:20 +00:00
99d720c685 Implemented tunnel creation backend
The methods in TunnelConfig and TunnelUtil are taken almost verbatim from
IndexBean (modified to be static in TunnelUtil). The tunnel creation wizard
works now, and the new tunnel will start if auto start is enabled.
2013-08-27 03:53:07 +00:00
c46ba4f24b Moved tunnel wizard model key strings into resource, dismiss submit dialog 2013-08-27 03:36:27 +00:00
522178598b Pass tunnel wizard data back to TunnelListFragment 2013-08-26 11:50:12 +00:00
5b6658531e Readability, documentation of TunnelWizardModel 2013-08-26 08:59:36 +00:00
333455b738 Bugfixes 2013-08-26 08:21:05 +00:00
5ebdeedb2b Another required parameter 2013-08-26 06:44:13 +00:00
0af8d2145f Set more tunnel parameters as required 2013-08-26 04:26:55 +00:00
5ac6d51289 Added support to SingleTextFieldPage for setting a default string 2013-08-26 04:18:02 +00:00
238ab91092 Implement full tunnel wizard model 2013-08-26 02:32:44 +00:00
0af8ed90f7 Added NotEqual and EqualAny, removed show-on-null assumption 2013-08-26 02:31:08 +00:00
c761287a8a Added support for complex branching with Conditionals 2013-08-26 01:23:00 +00:00
a77674603a Restore checked status 2013-08-26 01:07:21 +00:00
9a2382d886 PagerAdapter -> MyPagerAdapter 2013-08-26 01:04:03 +00:00
0d58d81bce Added OnClickListener to tunnel wizard dialog, does nothing yet 2013-08-25 13:15:28 +00:00
1e4300cb83 Stretch or shrink the StepPagerStrip to fit the width by default
This is better for smaller devices. Larger devices will be customized later.
2013-08-25 13:14:20 +00:00
28b0950990 Added SimpleTextFieldPages for the main tunnel parameters needed 2013-08-25 13:13:10 +00:00
536102658a TextField* -> SingleTextField* for accuracy 2013-08-25 12:49:46 +00:00
6754f6b5b1 Tweaks to text field page, added a single boolean page for auto start option 2013-08-25 06:26:12 +00:00
06d1903184 Dummy tunnel creation wizard - most structure in place, does nothing 2013-08-25 01:39:37 +00:00
4d13e8adfd Added a TextFieldPage to WizardPager 2013-08-25 01:12:59 +00:00
145b249394 Added WizardPager code from https://github.com/romannurik/android-wizardpager 2013-08-25 01:06:06 +00:00
a00c08bb49 Moved I2PTunnel code into separate package 2013-08-24 06:26:51 +00:00
449627be3d Started expansion of I2PTunnel detail Fragment
Most of the getters in TunnelEntry are almost verbatim from
net.i2p.i2ptunnel.web.IndexBean and net.i2p.i2ptunnel.web.EditBean
2013-08-24 04:30:55 +00:00
27be4aacb2 Adjusted weighting of two-pane layout, set AddressbookActivity to use it 2013-08-22 22:12:41 +00:00
f4f849182d Added detail page for tunnels and a two-pane layout for large screens
There are a lot of changes here:
- The main_content FrameLayout is now main_fragment (more logical name).
- TunnelEntry now stores a Context instead of a TunnelEntryLoader (so
  it can be instantiated inside the detail Fragment).
- The activity_navdrawer layout is now an alias to a one-pane or two-pane
  layout depending on screen size.
- Subclasses of I2PActivityBase can now override canUseTwoPanes() to enable
  and use the two-pane layout (for devices that support it).
2013-08-22 14:52:00 +00:00
32d8a7112c Added missing I2PTunnel status stars 2013-08-22 14:37:45 +00:00
4dbfff292b Missing AndroidManifest update, prep code for help content 2013-08-22 01:48:50 +00:00
228d27d82b Moved licenses and release notes into menu of new HelpActivity 2013-08-22 01:46:42 +00:00
9d0858ad17 Override method for when nav drawer opens/closes to hide/show action bar items 2013-08-22 01:05:55 +00:00
480dacb7f2 Fixed warnings in SeekBarPreferences 2013-08-21 11:39:42 +00:00
84edc743f5 Fixed SeekBarPreferences to check resource strings 2013-08-21 11:34:31 +00:00
b7dfc45b1e Prep for I2PTunnel details fragment 2013-08-21 11:03:39 +00:00
bd0ebc8852 Removed Addressbook from menu (it is in the nav drawer) 2013-08-21 10:14:35 +00:00
8c0e2228a5 Communicate between Fragments via the container Activity, not directly 2013-08-21 09:57:14 +00:00
4dafc3e5af Import VersionDialog, not just the listener 2013-08-21 09:54:08 +00:00
291294435a Removed unused imports 2013-08-21 09:53:13 +00:00
99588c3cb1 Filled tunnel row layout with tunnel data 2013-08-19 00:15:00 +00:00
f7904e0c7e Added TunnelEntry to format TunnelController data, expanded tunnel row layout 2013-08-18 14:27:17 +00:00
ae2fa4dce7 Fill I2PTunnel list with a Loader
Until changes to the list of TunnelControllers can be monitored, the Loader
refreshes the view every 10 seconds.
2013-08-18 12:46:13 +00:00
bdbc777a52 Added TunnelControllerAdapter, filled tunnel lists with names
Router must be started and client tunnels built before loading the I2PTunnel
Activity, or it hangs when switching tabs.
2013-08-18 00:13:05 +00:00
320e8d5153 Added client and server tabs 2013-08-17 11:53:12 +00:00
c53b98d2b9 Changed LicenseFragment to a ListFragment 2013-08-17 11:21:54 +00:00
e1236d2824 Replaced list header with Toast in Addressbook 2013-08-17 09:37:29 +00:00
d7ac916eeb Changed AddressbookFragment to a ListFragment
Previous commit was not broken, a clean build fixed the problem.
2013-08-17 05:41:42 +00:00
5b9203f77d File framework for I2PTunnel interface
Broken: cannot find net.i2p.i2ptunnel.I2PTunnel
(but it can when launching the router)
2013-08-16 21:19:08 +00:00
9757d6e396 Added missing search icon for action bar 2013-08-16 21:17:21 +00:00
c2ff90af91 Fixed activity parents 2013-08-14 05:12:31 +00:00
c1e8719d0e Fixed bug in manifests 2013-08-14 04:46:04 +00:00
56198bf771 Moved logs and error logs into nav drawer 2013-08-14 04:40:19 +00:00
73286f43f6 Moved licenses button into nav drawer
Temporary; will eventually be in an about menu in settings
2013-08-14 04:22:58 +00:00
cd3157038c Fragmented LicenseActivity, turned TextResourceFragment into a DialogFragment 2013-08-14 04:11:37 +00:00
9359c7a726 Implemented Addressbook filtering via SearchView in action bar 2013-08-14 01:47:10 +00:00
058f41ec73 Set up SearchView in Addressbook action bar in preparation for searching
The navigation drawer has been (mostly) migrated to link to Activities instead
of Fragments. Only Activities can be searched via the inbuild Android search
function, which uses Intents.
2013-08-13 13:54:39 +00:00
e4c9095626 merge of '73d2724826ecdabe3e124af9e485c44fe7188117'
and '977f74485a75e34e7488c13e06849f6dfb5d2d2a'
2013-08-12 01:44:37 +00:00
dd90ea9874 Put full strings in android:dialogMessage for SeekBarPreference
The SeekBarPreference class needs fixing to follow resource references.
2013-08-12 01:44:31 +00:00
zzz
53c7770e4e - Handle 4-digit core version
- Set API in version string to min version
2013-08-11 14:50:01 +00:00
21274f0335 Added es translation 2013-08-11 13:58:21 +00:00
4ccf3e713d tr-rTR -> tr to support other regions as well 2013-08-11 13:58:05 +00:00
2ef4d71cdb Renamed navigation drawer layout 2013-08-10 10:20:31 +00:00
c2bc999847 Turned navigation drawer code into base activity to subclass 2013-08-10 10:17:41 +00:00
d3f37a21a5 Show navigation drawer on first run 2013-08-10 09:16:19 +00:00
658d2a68e2 Removed unused imports 2013-08-10 05:43:41 +00:00
490148cb5b Migrated old Dialog to DialogFragment 2013-08-10 05:38:28 +00:00
430d56b681 Set choice mode for navigation drawer
This should have enabled the current navigation drawer entry to be highlighted
by the call to setItemChecked() in selectItem(), but it still doesn't work.
2013-08-10 03:43:34 +00:00
405bb3317e Show some menu items in action bar 2013-08-10 03:40:13 +00:00
bbb41c9c54 Use dp instead of px, added content description for logo 2013-08-10 03:29:58 +00:00
5c9c438e28 Moved Addressbook button to navigation drawer 2013-08-10 01:40:22 +00:00
27239cf09d Renamed menu1.xml 2013-08-10 01:26:12 +00:00
b853c3af39 Only call onBackPressed for I2PFragmentBase subclasses 2013-08-10 01:20:59 +00:00
48f84f1a1b Added tr_TR translations 2013-08-10 01:19:45 +00:00
eb4ae2c66d Set minimum percentage, add language code mapping for tr_TR 2013-08-10 01:06:37 +00:00
17be8fb3f7 Load WebFragment properly from AddressbookFragment 2013-08-10 00:50:10 +00:00
bf5accb121 Converted AddressbookActivity to Fragment 2013-08-10 00:44:55 +00:00
4749e470b5 Fixed static reference 2013-08-09 23:35:32 +00:00
0553815777 Removed unused imports 2013-08-09 23:30:58 +00:00
57d81fb14d Migrated home buttons to use Fragment transactions 2013-08-09 23:30:37 +00:00
ee97af6e4f Fix labels in navigation drawer 2013-08-09 12:31:45 +00:00
6397a93cac Enable app icon for navigation drawer opening 2013-08-09 11:59:16 +00:00
03465185f9 Moved Fragments to net.i2p.android.router.fragment
Side-effect: some constant strings are now public
2013-08-09 11:52:33 +00:00
ddd9a195e6 Removed "I2P Home" from action bar (linked in navigation drawer) 2013-08-09 11:14:11 +00:00
664985461a Initial migration to navigation drawer and Fragment
- Migrated I2PActivityBase and subclasses to Fragment
- Added new MainActivity with navigation drawer to handle Fragments
- Added MainFragment to navigation drawer

Code compiles, installs and runs. Known bugs created:
- Some buttons now fail (can't use an Intent with a Fragment)
  -> Migrate usage of Intents to Fragment transactions
- New install/upgrade dialogs are commented out
  -> Migrate old Dialogs to DialogFragments
2013-08-09 11:11:37 +00:00
6d340dc056 Added Transifex config 2013-08-09 06:22:47 +00:00
f312b7c6f1 Extracted more strings 2013-08-09 03:24:15 +00:00
a42bd73de3 Comment out add button in AddressbookActivity 2013-08-08 14:24:59 +00:00
4424392bdc Comment out add button until it does something 2013-08-08 14:17:11 +00:00
bfe71213f8 Extracted more strings 2013-08-08 14:07:34 +00:00
cd2a12c8ed Use dp instead of px, removed invalid property (for LinearLayout) 2013-08-08 13:45:50 +00:00
4ca2ed756f Updated README.txt 2013-08-08 13:30:54 +00:00
a4abfd8fb8 Updated support library path to match README.txt 2013-08-08 13:30:41 +00:00
9d754c29ae Moved ic_content_new.png to proper folder 2013-08-08 13:05:17 +00:00
0101e63bce Updated .mtn-ignore 2013-08-08 03:33:40 +00:00
75fe8bfbe0 Removed another old import 2013-08-08 03:23:16 +00:00
806f6edbf1 Removed old import 2013-08-08 03:07:16 +00:00
767ff4f3d2 Merged methods 2013-08-08 02:55:52 +00:00
07fafb03b6 Added ActionBar to Addressbook, placeholder add action 2013-08-08 02:52:02 +00:00
e98f86b29a Updated .mtn-ignore 2013-08-08 02:33:07 +00:00
18bc4f141d Setup for ActionBar using appcompat support library
The path in project.properties will require local overriding. I tried directly
referencing the SDK with ${sdk.dir} but the build fails with an absolute path
to a library.
2013-08-07 13:07:49 +00:00
a3792bad7a Set target SDK to 18 2013-08-07 12:37:34 +00:00
745bd3fa94 Set target SDK to 18 2013-08-07 12:00:15 +00:00
97692a4635 Use color style instead of explicit color 2013-08-07 03:35:06 +00:00
3fe7575dab Removed FrameLayout 2013-08-06 05:41:23 +00:00
a7fc5090f3 Simplified settings layout, pulled strings into resource file 2013-08-05 14:41:08 +00:00
6154f64120 Set text resource color to stop color-change on touch 2013-08-05 12:52:13 +00:00
0e5ca23732 Fixed bug in main.xml 2013-08-04 04:34:17 +00:00
c47e7dab31 Added Eclipse project files
To satisfy dependencies, import the following other projects from i2p.i2p into
the same Eclipse workspace as i2p.android.base:
i2p_sdk       - core/java/
i2p_router    - router/java/
i2ptunnel     - apps/i2ptunnel/java/
BOB           - apps/BOB/
addressbook   - apps/addressbook/
jetty         - apps/jetty/
ministreaming - apps/ministreaming/java/
2013-08-04 04:33:56 +00:00
zzz
472fa6d49e - Adjust default configs, esp. ones on the settings page
- Update release notes
- Lower log levels
- Spelling fixes on settings page
2013-07-30 19:52:25 +00:00
60ece9d4d2 fix honeycomb notification annoyance 2012-12-14 02:07:22 +00:00
afd656c6b4 Fixes to peers webviewer 2012-10-04 16:46:03 +00:00
78e250a207 Small stats cleanup 2012-09-20 02:15:32 +00:00
134db2ecd3 Allow _fast_ quit v.s. graceful when user hits stop and then back button. 2012-09-11 13:10:11 +00:00
53caad9f2a Fix state recognition on restart. 2012-09-11 12:44:00 +00:00
742df967e2 Clean up poorly formed code (lint), fix close on rotate. 2012-09-11 09:14:46 +00:00
5d0c5c30eb Fix stale notification icon + refactoring 2012-09-11 06:32:53 +00:00
cb9924a0bf (Security fix) Fully kill the app and remove it from memory if not running. 2012-09-11 02:32:44 +00:00
3ceed9a6b3 Remove checks for properties, as-per zzz 2012-09-10 21:14:47 +00:00
c3d95a608d fix numaric typo 2012-09-06 13:00:31 +00:00
1b004a628e Fix bad router config for ports. This really belongs in the core... 2012-09-05 06:09:03 +00:00
b080bd387a If no participating tunnles, blank that status line out. 2012-09-04 12:19:24 +00:00
7a429674a7 Add missing colon 2012-09-04 06:52:12 +00:00
45a1511cab Add 10pixel border, adjust scrollbars 2012-09-04 06:46:28 +00:00
6c7be97ed5 FatCowIcons license was not copied from i2p.i2p, so I added it to custom_rules.xml
(for copying on build) and changed LicenseActivity to show it.
2012-09-03 22:58:10 +00:00
3244509cab Added icons to the UI. Used fatcow icons since the license is allready in place.
Screenshots could be found at: http://meeh.i2p/android/ui/2/
2012-09-03 22:19:08 +00:00
43a20d18c5 last adjustment to i2ptunnel config 2012-08-31 13:57:26 +00:00
e2332543ec Fix kytv's irc server settings, oops 2012-08-31 04:26:05 +00:00
4d68da45b4 Seperate out kytv's irc server 2012-08-31 04:17:24 +00:00
084ed85467 no more bouncy castle, wrapper.log fix 2012-08-28 13:17:46 +00:00
1d060fd419 Revert UPnP now that it was fixed. 2012-08-18 00:00:03 +00:00
a95ca82a3e Make service foreground, so droid does not stop us 2012-08-17 22:42:00 +00:00
c13101d535 More sensable defaults, especially dangerous 1 hop tunnels. 2012-08-13 00:07:15 +00:00
7dc7697c14 fix mysterious file name, force routerjars 2012-08-12 22:50:39 +00:00
91fb0a2248 Adding res/menu/activity_addressbook_settings.xml 2012-08-12 19:40:32 +00:00
2663cc7d57 Forgot a resource file. 2012-08-12 18:48:52 +00:00
f9fce317d3 Added support for ndk building in osx. (Hope i did't breake it.. worked on osx 10.8 / ubuntu 12.04)
Also did some changes in AddressbookSettingsActivity; changed the way subscriptions.txt is readed and removed tabs. also changed some handlings in save function.
2012-08-12 16:29:25 +00:00
f87a3eb03c Cleaned up a bug I made making it unavailable on ubntu and most surely other linux distros.
I've think I have fixed it, but it would be perfect if someone with good shell skills could check.
2012-08-12 14:41:20 +00:00
zzz
36a0f2c678 - Enable SSL reseed
- Update README.txt and release notes
- Add irc.killyourtv.i2p to IRC list
- Use new buildI2PTunnelJar target
- LogWriter cleanup
2012-08-12 11:25:06 +00:00
f8fe3f082a Added support for building jni in osx. Also forgot to add new source files from last commit. 2012-08-12 04:02:24 +00:00
6e130185de Added AddressbookSettingsActivity, and a link via settings. It's now possible to update subscriptions.txt on android. 2012-08-12 03:55:13 +00:00
006fc1dc51 Moving i2plogo to top and fixed a typo. 2012-08-11 21:05:21 +00:00
87836ddab6 Some UI changes to the main activity.
* Rearanged views
* Bigger buttons
* Removed wallpaper
* Added topic labels
2012-08-11 20:49:12 +00:00
ff7154b525 oops, forgot to add arrays.xml 2012-08-11 15:59:11 +00:00
7a829236b9 Add data usage stat 2012-08-08 03:31:41 +00:00
d3edd31155 test commit 2012-08-04 12:57:08 +00:00
455726f05a merge of '28e40eada54b4ffaffbdedb720514e9c75bde890'
and 'ed5a9580c190b1f53ebc6c46fe936b6c80114779'
2012-08-03 03:55:49 +00:00
5dc9d729f4 Fix buildnumber js, add more settings 2012-08-03 03:53:20 +00:00
6d42b93de4 merge of 'a6013429f41dd5ea107ee5e56da100592f7ede0c'
and 'eddaa1f2aaa94d303db9952dc8a04e7f10a19bf3'
2012-08-03 02:38:24 +00:00
39b54c41ab Remove duplicate Debug, move wrapper.log delete to a better place. 2012-08-03 02:37:40 +00:00
f8920298ee merge of 'b8271f21729bb5732b5383ee78febb68bde639af'
and 'c300165977b04a83f75252de61018f9122d0b2fc'
2012-08-03 01:08:33 +00:00
cc3b37c4c0 change install location to auto 2012-08-03 01:08:21 +00:00
0cdd5a5d88 merge of '382962c8f01043a3d3b75c95bf3d469b5aabc799'
and 'bc7602f413292ff3e11f3c9dbeb513075f10af14'
2012-08-03 00:58:00 +00:00
b61bc8f5ef move manifest files, change install location to auto, additional ant file tweaks 2012-08-03 00:57:44 +00:00
2a6a2ef7a7 merge of '96f925faf1d190d7b7d71c043d3b73853cc7a9f7'
and 'a081d5b6c58932415d009872ca843b36587fc455'
2012-08-01 14:59:49 +00:00
245f69f2d3 Fix build problems for the routerjars libs stuff... Should build fine now. 2012-08-01 14:59:29 +00:00
4c43b6f5d5 merge of 'cd63013f274d56bce70efcc4b1f0004411f9013a'
and 'eea8516ab4cd7b29f403d17fff0272a38d3cba7c'
2012-08-01 13:37:50 +00:00
28230c914d finish sync 2012-08-01 13:36:30 +00:00
f7e1acdb68 merge of '6a29ded18e13ec9d52d9af1abc2cbc21d2cc80d0'
and '8b6ea99d1c37c57f25c94df8231ae4a6e765db8c'
2012-08-01 13:32:13 +00:00
995cd7f327 javascript all the buildnumber stuff, new target incrementBuild, use when i2p.i2p source has not changed, but android source has changed. 2012-08-01 13:29:14 +00:00
zzz
1e024c22da fixup after merge 2012-07-31 23:11:22 +00:00
zzz
4e853a753f merge of '099d95534fe893da4acef3a0b5ab0ea8d74b2d79'
and 'aec2af21d2c3fe9b04ec51cb63fa8ef1188a3eb6'
2012-07-31 23:07:18 +00:00
01547e9a20 Add missing file 2012-07-31 20:01:59 +00:00
zzz
09b2af14fd merge of '9bda005612c09e3581b62178a01594526384c36b'
and 'f5cf8336fa20e64d9ff7dc28776621fb88ccef5c'
2012-07-31 19:52:23 +00:00
f5d06470e4 incrementBuild target, be sure to execute it manually from ant to increment build number 2012-07-31 19:42:49 +00:00
c9abfa80f0 Make SeekBar away from edges and away from value view 2012-07-29 21:36:16 +00:00
f34ef46dbf Make SeekBar width expand in a way that actually makes sense for the value range 2012-07-29 21:18:16 +00:00
0c30296888 Huge refactor, fixes, settings, put jbigi.so back in too. 2012-07-28 00:34:05 +00:00
3fd373ad8c less transparent icons, they were too dark, and difficult to see 2012-07-25 14:03:15 +00:00
41091dce25 BOB 2012-07-24 19:21:17 +00:00
0fbaeb0ea4 Don't ask for signing passphrase on the lib build 2012-07-24 05:59:45 +00:00
19791a5965 builds fine now 2012-07-24 05:25:49 +00:00
9d4c0aa839 Reorganize router to own sub-project to avoid build errors 2012-07-24 05:16:21 +00:00
0b12a952cb update README.txt 2012-07-23 23:47:16 +00:00
a95aa6e89b Janitorial work, imports and some warnings 2012-07-23 09:33:42 +00:00
f13c772509 install certificates 2012-07-22 02:17:04 +00:00
0f28c4d807 archive certificates 2012-07-21 19:54:08 +00:00
a649d434c7 Finish fixing ant issues, needs work yet. 2012-07-15 08:42:47 +00:00
23c5710d42 Move to newer ASDK and ant, does not compile 2012-06-30 16:31:56 +00:00
314 changed files with 124350 additions and 2619 deletions

14
.classpath Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2p_sdk"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2p_router"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2ptunnel"/>
<classpathentry combineaccessrules="false" kind="src" path="/BOB"/>
<classpathentry combineaccessrules="false" kind="src" path="/addressbook"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -22,3 +22,21 @@ _jsp\.java$
~$
/build/
/classes/
# Android-specific ignores
^bin
^gen
^routerjars/bin
^routerjars/gen
^routerjars/lib
AndroidManifest.xml
lint.xml
local.properties
# I2P-specific ignores
^res/raw/blocklist_txt
^res/raw/certificates_zip
^res/raw/hosts_txt
^res/raw/license_
^scripts/build.number
^scripts/version.properties

33
.project Normal file
View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>I2P_Android</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

11
.tx/config Normal file
View File

@ -0,0 +1,11 @@
[main]
host = https://www.transifex.com
lang_map = pt_BR: pt-rBR, ru_RU: ru, sv_SE: sv, tr_TR: tr, zh_CN: zh
[I2P.android]
file_filter = res/values-<lang>/strings.xml
source_file = res/values/strings.xml
source_lang = en
type = ANDROID
minimum_perc = 50

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.router"
android.versionCode="4720640"
android.versionName="0.9.1-0_b1-API8"
android:installLocation="preferExternal"
>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-sdk android:minSdkVersion="8" />
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie" >
<service android:name=".service.RouterService"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie" />
<provider android:name=".provider.CacheProvider"
android:authorities="net.i2p.android.router" />
<activity android:name=".activity.MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie"
android.theme="@android:style/Theme.NoTitleBar"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.NewsActivity"
android:label="I2P News"
android:configChanges="orientation|keyboardHidden"
android.theme="@android:style/Theme.NoTitleBar" >
</activity>
<activity android:name=".activity.TextResourceActivity"
android:label="I2P Information"
android.theme="@android:style/Theme.NoTitleBar" >
</activity>
<activity android:name=".activity.LicenseActivity"
android:label="I2P License Information"
android.theme="@android:style/Theme.NoTitleBar" >
</activity>
<activity android:name=".activity.WebActivity"
android:label="I2P Web Browser"
android:configChanges="orientation|keyboardHidden"
android.theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="*.i2p" android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".activity.SettingsActivity"
android:label="I2P Settings"
android.theme="@android:style/Theme.NoTitleBar"
android:launchMode="singleTop" >
</activity>
<activity android:name=".activity.AddressbookActivity"
android:label="I2P Address Book"
android.theme="@android:style/Theme.NoTitleBar"
android:launchMode="singleTop" >
</activity>
<activity android:name=".activity.LogActivity"
android:label="I2P Logs"
android.theme="@android:style/Theme.NoTitleBar" >
</activity>
<activity android:name=".activity.PeersActivity"
android:label="I2P Peers and Transport Status"
android:configChanges="orientation|keyboardHidden"
android.theme="@android:style/Theme.NoTitleBar"
android:launchMode="singleTop" >
</activity>
</application>
</manifest>

119
AndroidManifest.xml.in Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.router"
android:versionCode="0"
android:versionName="0.0.0-0_b0-API8"
android:installLocation="auto"
>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application android:label="@string/app_name"
android:theme="@style/Theme.AppCompat"
android:icon="@drawable/ic_launcher_itoopie" >
<service android:name=".service.RouterService"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie" />
<provider android:name=".provider.CacheProvider"
android:authorities="net.i2p.android.router" />
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NewsActivity"
android:label="I2P News"
android:configChanges="orientation|keyboardHidden" >
</activity>
<activity android:name=".HelpActivity"
android:label="Help"
android:parentActivityName=".MainActivity" >
</activity>
<activity android:name=".LicenseActivity"
android:label="I2P License Information"
android:parentActivityName=".HelpActivity" >
</activity>
<activity android:name=".web.WebActivity"
android:label="I2P Web Browser"
android:configChanges="orientation|keyboardHidden" >
<!-- Disabled, this browser is not very secure
Temporarily enabled until an alternative browser is ready -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="*.i2p" android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".SettingsActivity"
android:label="I2P Settings"
android:parentActivityName=".MainActivity" >
</activity>
<activity android:name=".addressbook.AddressbookSettingsActivity"
android:label="I2P Addressbook Settings"
android:parentActivityName=".addressbook.AddressbookActivity"
android:launchMode="singleTop" >
</activity>
<activity android:name=".addressbook.AddressbookActivity"
android:label="Addressbook"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_addressbook"/>
</activity>
<activity android:name=".addressbook.AddressbookAddWizardActivity"
android:label="Add new Destination"
android:parentActivityName=".addressbook.AddressbookActivity" >
</activity>
<activity android:name="net.i2p.android.i2ptunnel.TunnelListActivity"
android:label="I2PTunnel"
android:launchMode="singleTop" >
</activity>
<activity android:name="net.i2p.android.i2ptunnel.TunnelDetailActivity"
android:label="I2PTunnel"
android:parentActivityName="net.i2p.android.i2ptunnel.TunnelListActivity" >
</activity>
<activity android:name="net.i2p.android.i2ptunnel.TunnelWizardActivity"
android:label="Tunnel Creation Wizard"
android:parentActivityName="net.i2p.android.i2ptunnel.TunnelListActivity" >
</activity>
<activity android:name=".log.LogActivity"
android:label="I2P Logs"
android:parentActivityName=".MainActivity" >
</activity>
<activity android:name=".log.LogDetailActivity"
android:label="Log Entry"
android:parentActivityName=".log.LogActivity" >
</activity>
<activity android:name=".stats.RateGraphActivity"
android:label="Rate Graph"
android:parentActivityName=".MainActivity" >
</activity>
<activity android:name=".stats.PeersActivity"
android:label="I2P Peers and Transport Status"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTop" >
</activity>
<activity android:name=".netdb.NetDbActivity"
android:label="NetDB"
android:parentActivityName=".MainActivity" >
</activity>
<activity android:name=".netdb.NetDbDetailActivity"
android:label="NetDB Detail"
android:parentActivityName=".netdb.NetDbActivity" >
</activity>
</application>
</manifest>

View File

@ -1,73 +1,114 @@
These instructions are for a recent Android SDK (1.6 or later).
These instructions were last updated for SDK Tools Version 11 with
SDK Platform-tools Version 5, June 2011.
These instructions are for a recent Android SDK (Rev 20 or better) on Linux.
Windows building is not currently supported.
These instructions were last updated for SDK Tools Version 20 with
SDK Platform-tools Version 12 from updates.
The i2p source must be installed in ../i2p.i2p,
or else add i2psrc=/path/to/source in the local.properties file.
=====================
#Download the SDK from http://developer.android.com/sdk/index.html
#Unzip the android SDK in ../
#So then the android tools will be in ../android-sdk-linux_86/tools/
Dependencies:
- Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher
- Apache Ant 1.8.0 or higher
- I2P source in ../i2p.i2p
- Android SDK (tested with Rev 22.3 and platform-tools version 19)
=====================
Instructions:
# Download the SDK from http://developer.android.com/sdk/index.html
# Unzip the android SDK in ../
# So then the android tools will be in ../android-sdk-linux/tools/
#
# Run the GUI updater, which you must do to get an SDK Platform:
../android-sdk-linux_86/tools/android &
../android-sdk-linux/tools/android &
# now go to the available packages tab, check the box and click refresh,
# and download an SDK Platform
# Since I2P is configured to run on 1.1 or higher
# (API 2) download that one. Otherwise you must change the
# target in default.properties from android-2 to andriod-x
# Since I2P is targeted at 4.4 (API 19)
# download at least that one. Otherwise you must change the
# target in project.properties from android-19 to andriod-x
# where x is the API version.
# I2P is configured to run on 2.2 (API 8) or higher using the
# Android Support Library, so download that as well
# (it's under "Extras").
# update the compatibility project
../android-sdk-linux/tools/android update lib-project -p ../android-sdk-linux/extras/android/support/v7/appcompat -t android-19
# To run the debugger (ddms) you also need to download the
# "Android SDK Platform-Tools" package from the GUI updater.
# create a file local.properties with the following line (without the leading # of course):
# sdk.dir=/path/to/your/android-sdk-linux_86
# The old property was sdk-location=/path/to/your/android-sdk-linux_86
# but it changed in more recent tools.
# create a file local.properties with the following line (without the leading # of course),
# do NOT use a relative path
# sdk.dir=/path/to/your/android-sdk-linux
# Copy this file to the routerjars/ directory, it is needed in both places.
# If your SDK is not in ../android-sdk-linux/ then you must
# override the location of the Android Support Library. Add
# the following line to local.properties
# do NOT use an absolute path
# android.library.reference.2=path/to/your/android-sdk-linux/extras/android/support/v7/appcompat
# Don't add it to the local.properties in the routerjars/ directory.
# DO NOT create a new project or anything. It's all set up right here for you.
# Create the android 2.2 (API 8) virtual device
# Create the android 4.4 (API 19) virtual device
# (don't make a custom hardware profile)
../android-sdk-linux_86/tools/android create avd --name i2p --target 8
../android-sdk-linux/tools/android create avd --name i2p --target android-19
#then run the emulator:
# then run the emulator:
# This may take a LONG time the first time (half an hour or more)...
# Run the debugger to ensure it is making progress
# -no-boot-anim for faster boot
# -dns-server 8.8.8.8 if the router can't reseed
#../android-sdk-linux_86/tools/emulator -avd i2p -no-boot-anim -dns-server 8.8.8.8 &
../android-sdk-linux_86/tools/emulator -avd i2p &
# -no-boot-anim for faster boot
# -dns-server 8.8.8.8 if the router can't reseed
# ../android-sdk-linux/tools/emulator -avd i2p -no-boot-anim -dns-server 8.8.8.8 &
../android-sdk-linux/tools/emulator -avd i2p &
# or to talk to a real phone in debug mode:
# or to talk to a real device in debug mode:
# You have to do this if you get a permission error -
# Stop ddms, unplug the phone, do the following,
# then plug in the phone, then start ddms
# Stop ddms, unplug the device, do the following,
# then plug in the device, then start ddms
adb kill-server
sudo adb start-server
adb devices
#then wait a couple minutes until the emulator is up
#then install the I2P app
ant install
# then wait a couple minutes until the emulator or device is up
# compile and install for a release
ant release
ant installr
#then run the debugger
../android-sdk-linux_86/tools/ddms &
# or compile and install for a debug version
ant debug
ant installd
#to rebuild and reinstall to emulator or phone:
ant reinstall
# then run the debugger
../android-sdk-linux/tools/ddms &
# Now click on the I2P icon on your phone!
# to rebuild and reinstall to emulator or device:
ant clean
# then do which ever from the above compile and install choices.
# to uninstall
ant uninstall
# or use your device's menu.
# Other ant tagets are available, just type
ant
# Anyway, with I2P installed, click on the I2P icon on your device and enjoy!
#other helpful commands
../android-sdk-linux_86/platform-tools/adb shell
../android-sdk-linux_86/platform-tools/adb pull /some/file/on/emulator some-local-dir/
../android-sdk-linux/platform-tools/adb shell
../android-sdk-linux/platform-tools/adb pull /some/file/on/emulator some-local-dir/
# copy the Dev Tools app from the emulator to your phone
# copy the Dev Tools app from the emulator to your device
adb -e pull /system/app/Development.apk ./Development.apk
adb -d install Development.apk

36
TODO Normal file
View File

@ -0,0 +1,36 @@
# Required for release
- Display release notes directly on new router version
- Text content
- Move help content from release notes to help page
- Rewrite release notes to be release-specific
- Fill out help page
- Fix release notes UI, either make back button use clear or add buttons
- NetDB tablet view fixes
- Refresh detail fragment when changing tab
- Move list to correct item when changing tab
- Create nav history when viewing RI from LS
- Include GeoIP db for country info
- Maybe change router-off mechanic for various pages? Enable as they become available?
- Check default configs in res/raw/ against upstream defaults
# Short-term
- Expose log level overrides
- Improve graphs
- Show time on bottom axis
- Show fixed x range, not only available data
- Think about pan/zoom
- How to persist data across restarts?
- I2PTunnel
- Show all messages somewhere
- Improve detail page, expose advanced settings
- Add edit page
# Long-term
- Remote router support
- Implement a "router wrapper" that can represent a local or remote router
- Implement/use client APIs to talk to remote router
- I2CP
- I2PControl

116
art/itoopie-512.svg Normal file
View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
height="512"
width="512"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="itoopie-512.svg"
inkscape:export-xdpi="16.875"
inkscape:export-ydpi="16.875">
<defs
id="defs661" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="719"
id="namedview659"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1"
inkscape:cx="185.67866"
inkscape:cy="266.66758"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<metadata
id="metadata4321">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<path
id="path6"
d="M153,239c-9.59,3.52-17.87,11.09-26.09,17l-40.91,28.2c-6.471,4.6-19.02,10.92-15.397,20.8,2.682,7.31,11.925,12.87,17.397,18.04,16.94,16,42.13,32.1,51.54,53.96,2.26,5.25-3.5,15.19-4.25,21-1.64,12.6-1.11,27.89,2.92,40,2.26,6.82,5.84,14.12,9.93,20,2.2,3.16,6.64,7.85,6.22,12-1.12,11.2-27.13,23.77-11.32,35.35,4.63,3.39,10.55,2.65,15.96,2.65h34c17.51,0,35.54,1.26,53-0.06,4.08-0.3,7.16-3.88,11-3.98,4.19-0.1,8.42,2.98,13,3.04,18.31,0.22,36.68-2,55-2l40-1c4.66-0.01,12.53,0.5,16.12-3.03,8.06-7.94-1.26-18.06-7.12-23.25-2-1.77-6.69-5-6.22-8.13,0.92-6.16,11.38-15.09,14.16-21.59,6.81-15.9,4.83-37.87,0.06-54,6.31-3.31,5.85-7.34,9.01-12.83,3.71-6.45,9.15-10.02,9.89-18.17,0.52-5.81-2.98-11.38-1.57-17,4.16-16.71,10.39-33.74,16.01-50,2.52-7.28,7.54-16.06,5.15-24-2.94-9.76-16.29-18.22-22.78-25.84-6.17-7.26-14.72-20.05-24.71-21.16,11.99-21.64,23.36-44.57,23.98-70,0.62-25.17-3.64-49.18-14.61-72-27.64-57.494-96.02-87.19-157.37-72.764-21.55,5.067-40.77,16.12-58,29.648-15.33,12.037-26.71,28.931-35.51,46.116-11.04,21.55-12.6,45.31-12.49,69,0.11,22.92,8.73,45.5,20.23,64.98,4,6.78,10.19,12.12,13.77,19.02z"
fill="#010101" />
<path
id="path14"
d="M180,329l18,8c9.24-17.53,14.78-38.36,21.56-57,2.31-6.35,3.57-17.15,9.57-21.24,4.73-3.22,14.51-0.44,19.87,0.07,10.84,1.03,23.37,0.68,34-1.72,52.22-11.77,89.71-57.83,91.96-111.11,3.11-73.764-69.66-132.42-140.96-116.98-43.93,9.507-76.57,43.459-88.57,85.985-10.53,37.33,1.89,78.48,27.37,106.83,6.71,7.46,14.87,14.11,23.29,19.57,3.73,2.42,9.79,4.83,10.96,9.62,1.32,5.42-4.33,13.76-5.85,18.98-5.82,19.96-16.4,38.78-21.2,59z"
fill="#ffff01" />
<path
id="path88"
d="M299,75.518c-52.42,11.12-36.2,92.762,16,81.662,52.67-11.2,36.32-92.76-16-81.662z"
fill="#010101" />
<path
id="path96"
d="M203,78.432c-41.94,5.523-52.25,62.648-12,79.888,7.45,3.19,18.11,2.68,26,1.47,48.64-7.5,34.78-87.781-14-81.358z"
fill="#010101" />
<path
id="path158"
d="M283,134c3-3.96,5.42-9.52,10.18-11.66,15.75-7.07,24.49,8.35,22.82,21.66,38.8-11.2,14.11-71.907-22-53.85-4.34,2.168-8.17,5.944-10.96,9.85-3.18,4.48-5.24,9.49-5.71,15-0.59,6.86,2.59,13.13,5.67,19z"
fill="#FFF" />
<path
id="path186"
d="M196,147c-1.86-8.13-2.94-15.07,3.38-21.79,10.5-11.16,28.74-3.58,30.62,10.79,9.52-9.43,5.95-29.23-3.17-37.74-12.58-11.724-31.99-10.389-42.89,2.76-3.76,4.52-5.37,9.22-6.17,14.98-0.77,5.56,0.25,11.88,2.58,17,3.12,6.83,8.9,11.17,15.65,14z"
fill="#FFF" />
<path
id="path658"
d="M237,270c-8.48,15.92-15.41,36.57-20.08,54-1.36,5.06-6.23,11.67-4.89,17,3.2,12.76,17.13,22.54,28.97,25.62,22.34,5.83,48.15,7.53,70-1.07,3.88-1.53,9.74-2.89,11.97-6.74,2.07-3.57,0.82-8.86,1.2-12.81,0.99-10.2,6.53-18.52,16.83-21,0.01-9.11,1.67-18.72,8.46-25.47,3.91-3.89,10.2-6.15,14.14-1.19,9.75,12.3-3.7,27.68,12.4,36.66,13.76-29.42,26.34-75.12-15-88.74-5.23-1.73-11.36-4.63-17-4.08-10.25,1.01-22.68,14.27-32.42,18.73-22.23,10.18-50.54,14.88-74.58,9.09z"
fill="#ff013d" />
<path
id="path702"
d="M137,338c3.18-4.17,6.58-7.19,11-10-1.97-3.92-6.68-6.5-7.46-11-1.64-9.41,12.19-20.93,20.46-21.82,4.38-0.48,12.3,5.08,15.49,2.99,2.51-1.64,3.42-6.55,4.51-9.17,3.1-7.51,12.87-25.96,7.97-33.72-5.8-9.2-26.8,3.73-32.97,7.22-13.64,7.73-26.48,17.21-39,26.63-3.86,2.9-12.34,8.01-13.48,13-1.24,5.43,2.89,10.17,6.2,13.83,7.67,8.5,17.17,16.64,27.28,22.04z"
fill="#ff013d" />
<path
id="path980"
d="M343,338l1,1-1-1z"
fill="#926a61" />
<path
id="path982"
d="M344.04,338.74c-8.51,3.44-8.51,27.18-1.48,32.23,3.87,2.78,17.29-0.65,21.44-2.32,23.49-9.46-4.63-36.1-19.96-29.91z"
fill="#fbb5a7" />
<path
id="path1006"
d="M201,365c-6.76-9.02-21.93-17.44-33-19.53-4.52-0.85-12.18-1.71-14.24,3.59-2.56,6.57,3.94,13.06,9.24,15.61,11.8,5.69,25.9,4.17,38,0.33z"
fill="#fbb5a7" />
<path
id="path1110"
d="M357,385c-17.01,3.2-27.07,2.97-31-16-11.91,1.56-23.62,7.8-36,9.57-4.1,0.59-11.08-0.98-14.3,2.03-5.1,4.77-5.44,14.02-5.74,20.4-0.22,4.66-2.39,9.33-1.6,14,1.72,10.26,13.38,21.18,19.74,29,4.59,5.66,10.59,14.3,17.9,16.49,8.24,2.46,16.55-4.65,23-8.83,9.21-5.99,19.98-13.42,24.98-23.66,2.33-4.78,0.91-11.82,1.04-17,0.21-8.7,1.98-17.26,1.98-26z"
fill="#95bb95" />
<path
id="path1138"
d="M157,384c0,13.94-0.51,25.95,5.22,39,4.77,10.86,10.96,21.1,18.95,30,6.92,7.7,14.83,8.96,24.83,9,17.21,0.08,33.73-6.21,42.48-22,11.07-19.97,3.58-55.02-21.52-61.31-7.81-1.95-23.68,6.35-31.96,8.1-13.65,2.89-24.79-0.54-38-2.79z"
fill="#9fc79f" />
<path
id="path1198"
d="M365,406c-0.86,6.78,1.35,18.22-1.49,24.2-7.25,15.25-24.45,25.44-38.51,33.66-6.58,3.84-13.19,7.73-21,5.03-16.77-5.8-20.94-25.76-35-33.89,0,8.86,0.3,16.69,3.74,25,17.58,42.43,71.5,11.84,89.46-14,7.43-10.69,13.35-29.47,2.8-40m-208,3l1,1-1-1z"
fill="#576e57" />
<path
id="path1222"
d="M155,432c2.63,10.96,11.11,20.8,17.28,30.04,2.17,3.23,4.52,8.56,8.1,10.4,4.57,2.35,11.58,2.11,16.62,2.72,15.31,1.83,33.26,2.59,48-2.5,5.63-1.95,11.75-4.02,14.68-9.66,2.98-5.74-0.56-14.03-1.68-20-5.56,5.92-9.39,12.43-16,17.54-14.23,10.98-43.14,17.76-59,6.03-12.43-9.19-17.42-24.31-28-34.57m11,0l1,1-1-1m113,0l1,1-1-1z"
fill="#576e57" />
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

132
art/itoopie-white-512.svg Normal file
View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
height="512"
width="512"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="itoopie-white-512.svg"
inkscape:export-xdpi="8.4375"
inkscape:export-ydpi="8.4375">
<defs
id="defs661" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="719"
id="namedview659"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1.4142136"
inkscape:cx="137.71425"
inkscape:cy="184.35799"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<metadata
id="metadata4321">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g3042"
style="fill:#ffffff">
<path
sodipodi:nodetypes="cccccssccc"
style="fill:#ffffff"
inkscape:connector-curvature="0"
d="m 269.51027,463.35455 c -15.30293,7.3383 -16.75232,9.62416 -35.48219,9.7875 -18.0352,-0.48628 -44.4921,-1.71026 -52.17332,-10.84871 -14.84797,-18.35292 -17.30834,-7.98026 -17.72834,-3.83026 -1.12,11.2 -27.13,23.77 -11.32,35.35 4.63,3.39 10.55,2.65 15.96,2.65 l 34,0 c 17.51,0 35.54,1.26 53,-0.06 4.08,-0.3 6.15805,-3.88 9.99805,-3.98 0.39189,-9.24282 0.78712,-8.70426 3.7458,-29.06853 z"
id="path6" />
<path
style="fill:#ffffff"
id="path14"
d="m 267.11017,14.994328 c -7.7324,-0.0069 -15.54531,0.81125 -23.34375,2.5 -43.93,9.507 -76.5625,43.44275 -88.5625,85.968752 -10.53,37.33 1.895,78.49375 27.375,106.84375 6.71,7.46 14.86125,14.1025 23.28125,19.5625 3.73,2.42 9.79875,4.835 10.96875,9.625 1.32,5.42 -4.355,13.74875 -5.875,18.96875 -5.82,19.96 -16.3875,38.78 -21.1875,59 l 18,8 c 9.24,-17.53 14.7825,-38.36 21.5625,-57 2.31,-6.35 3.5625,-17.16 9.5625,-21.25 4.73,-3.22 14.515,-0.41625 19.875,0.0937 10.84,1.03 23.37,0.68125 34,-1.71875 52.22,-11.76995 89.71875,-57.84495 91.96875,-111.12495 C 387.50501,68.767016 330.074,15.050289 267.11017,14.994328 z m 51.03125,47.9375 c 44.71373,-0.143005 56.00313,72.218752 6.625,82.718752 -52.2,11.1 -68.42,-70.536252 -16,-81.656252 3.27,-0.693625 6.39408,-1.052966 9.375,-1.0625 z m -100.90625,3.625 c 45.11524,-1.123505 56.65125,74.421872 9.53125,81.687502 -7.89,1.21 -18.55,1.72125 -26,-1.46875 -40.25,-17.24 -29.94,-74.352002 12,-79.875002 1.52437,-0.200719 3.01342,-0.307508 4.46875,-0.34375 z"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 292.76642,122.46308 c 3,-3.96 5.42,-9.52 10.18,-11.66 15.75,-7.07 24.49,8.35 22.82,21.66 38.8,-11.2 14.11,-71.907002 -22,-53.850002 -4.34,2.168 -8.17,5.944 -10.96,9.85 -3.18,4.48 -5.24,9.49 -5.71,15.000002 -0.59,6.86 2.59,13.13 5.67,19 z"
id="path158"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 205.76642,135.46308 c -1.86,-8.13 -2.94,-15.07 3.38,-21.79 10.5,-11.16 28.74,-3.58 30.62,10.79 9.52,-9.43 5.95,-29.230002 -3.17,-37.740002 -12.58,-11.724 -31.99,-10.389 -42.89,2.76 -3.76,4.52 -5.37,9.22 -6.17,14.980002 -0.77,5.56 0.25,11.88 2.58,17 3.12,6.83 8.9,11.17 15.65,14 z"
id="path186"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 246.76642,258.46308 c -8.48,15.92 -15.41,36.57 -20.08,54 -1.36,5.06 -6.23,11.67 -4.89,17 3.2,12.76 17.13,22.54 28.97,25.62 22.34,5.83 48.15,7.53 70,-1.07 3.88,-1.53 9.74,-2.89 11.97,-6.74 2.07,-3.57 0.82,-8.86 1.2,-12.81 0.99,-10.2 6.53,-18.52 16.83,-21 0.01,-9.11 1.67,-18.72 8.46,-25.47 3.91,-3.89 10.2,-6.15 14.14,-1.19 9.75,12.3 -3.7,27.68 12.4,36.66 13.76,-29.42 26.34,-75.12 -15,-88.74 -5.23,-1.73 -11.36,-4.63 -17,-4.08 -10.25,1.01 -22.68,14.27 -32.42,18.73 -22.23,10.18 -50.54,14.88 -74.58,9.09 z"
id="path658"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 146.76642,326.46308 c 3.18,-4.17 6.58,-7.19 11,-10 -1.97,-3.92 -6.68,-6.5 -7.46,-11 -1.64,-9.41 12.19,-20.93 20.46,-21.82 4.38,-0.48 12.3,5.08 15.49,2.99 2.51,-1.64 3.42,-6.55 4.51,-9.17 3.1,-7.51 12.87,-25.96 7.97,-33.72 -5.8,-9.2 -26.8,3.73 -32.97,7.22 -13.64,7.73 -26.48,17.21 -39,26.63 -3.86,2.9 -12.34,8.01 -13.48,13 -1.24,5.43 2.89,10.17 6.2,13.83 7.67,8.5 17.17,16.64 27.28,22.04 z"
id="path702"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 352.76642,326.46308 1,1 -1,-1 z"
id="path980"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 353.80642,327.20308 c -8.51,3.44 -8.51,27.18 -1.48,32.23 3.87,2.78 17.29,-0.65 21.44,-2.32 23.49,-9.46 -4.63,-36.1 -19.96,-29.91 z"
id="path982"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 210.76642,353.46308 c -6.76,-9.02 -21.93,-17.44 -33,-19.53 -4.52,-0.85 -12.18,-1.71 -14.24,3.59 -2.56,6.57 3.94,13.06 9.24,15.61 11.8,5.69 25.9,4.17 38,0.33 z"
id="path1006"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 366.76642,373.46308 c -17.01,3.2 -27.07,2.97 -31,-16 -11.91,1.56 -23.62,7.8 -36,9.57 -4.1,0.59 -11.08,-0.98 -14.3,2.03 -5.1,4.77 -5.44,14.02 -5.74,20.4 -0.22,4.66 -2.39,9.33 -1.6,14 1.72,10.26 13.38,21.18 19.74,29 4.59,5.66 10.59,14.3 17.9,16.49 8.24,2.46 16.55,-4.65 23,-8.83 9.21,-5.99 19.98,-13.42 24.98,-23.66 2.33,-4.78 0.91,-11.82 1.04,-17 0.21,-8.7 1.98,-17.26 1.98,-26 z"
id="path1110"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 166.76642,372.46308 c 0,13.94 -0.51,25.95 5.22,39 4.77,10.86 10.96,21.1 18.95,30 6.92,7.7 14.83,8.96 24.83,9 17.21,0.08 33.73,-6.21 42.48,-22 11.07,-19.97 3.58,-55.02 -21.52,-61.31 -7.81,-1.95 -23.68,6.35 -31.96,8.1 -13.65,2.89 -24.79,-0.54 -38,-2.79 z"
id="path1138"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 374.76642,394.46308 c -0.86,6.78 1.35,18.22 -1.49,24.2 -7.25,15.25 -24.45,25.44 -38.51,33.66 -6.58,3.84 -13.19,7.73 -21,5.03 -16.77,-5.8 -20.94,-25.76 -35,-33.89 0,8.86 0.3,16.69 3.74,25 17.58,42.43 71.5,11.84 89.46,-14 7.43,-10.69 13.35,-29.47 2.8,-40 m -208,3 1,1 -1,-1 z"
id="path1198"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 164.76642,420.46308 c 2.63,10.96 11.11,20.8 17.28,30.04 2.17,3.23 4.52,8.56 8.1,10.4 4.57,2.35 11.58,2.11 16.62,2.72 15.31,1.83 33.26,2.59 48,-2.5 5.63,-1.95 11.75,-4.02 14.68,-9.66 2.98,-5.74 -0.56,-14.03 -1.68,-20 -5.56,5.92 -9.39,12.43 -16,17.54 -14.23,10.98 -43.14,17.76 -59,6.03 -12.43,-9.19 -17.42,-24.31 -28,-34.57 m 11,0 1,1 -1,-1 m 113,0 1,1 -1,-1 z"
id="path1222"
inkscape:connector-curvature="0" />
<path
id="path3026"
d="m 278.35292,463.71009 c -3.2194,13.63977 -2.83178,10.63387 -5.35379,28.59447 3.70248,1.1188 2.18729,3.09852 6.76729,3.15852 18.31,0.22 36.68,-2 55,-2 l 40,-1 c 4.66,-0.01 12.53,0.5 16.12,-3.03 8.06,-7.94 -1.26,-18.06 -7.12,-23.25 -2,-1.77 -6.69,-5 -6.22,-8.13 1.09974,-9.03578 -1.60893,-15.80295 -13.03557,-0.88889 -8.80009,6.59847 -11.40617,7.99716 -26.32376,13.38008 -9.52026,2.77856 -24.99871,5.64892 -35.63945,3.81206 -18.02388,-2.48398 -18.05064,-7.63298 -24.19472,-10.64624 z"
inkscape:connector-curvature="0"
style="fill:#ffffff"
sodipodi:nodetypes="cccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 235 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 250 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 250 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 250 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 250 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 235 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 253 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 235 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 235 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 236 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 237 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 238 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 248 KiB

411
build.xml
View File

@ -1,376 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Portions copied and modified from Android SDK
- Copyright (c) 2005-2008, The Android Open Source Project
- Apache 2.0 license
- See licenses/LICENSE-Apache2.0.txt
-->
<project name="I2PAndroid" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contain the path to the SDK. It should *NOT* be checked in in Version
Control Systems. -->
<property file="local.properties"/>
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The build.properties file can be created by you and is never touched
by the 'android' tool. This is the place to change some of the default property values
used by the Ant rules.
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
application-package
the name of your application package as defined in the manifest. Used by the
'uninstall' rule.
source-folder
the name of the source folder. Default is 'src'.
out-folder
the name of the output folder. Default is 'bin'.
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
Properties related to the SDK location or the project target should be updated
using the 'android' tool with the 'update' action.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
This file is an integral part of the build system for your application and
should be checked in in Version Control Systems.
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="build.properties"/>
<!-- set the old name to the new name -->
<property name="sdk-location" value="${sdk.dir}" />
<property file="ant.properties" />
<!-- The default.properties file is created and updated by the 'android' tool, as well
as ADT.
This file is an integral part of the build system for your application and
should be checked in in Version Control Systems. -->
<property file="default.properties"/>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
<!-- Custom Android task to deal with the project target, and import the proper rules.
This requires ant 1.6.0 or above. -->
<path id="android.antlibs">
<pathelement path="${sdk-location}/tools/lib/anttasks.jar" />
<pathelement path="${sdk-location}/tools/lib/sdklib.jar" />
<pathelement path="${sdk-location}/tools/lib/androidprefs.jar" />
<pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" />
<pathelement path="${sdk-location}/tools/lib/jarutils.jar" />
</path>
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
<taskdef name="setup"
classname="com.android.ant.SetupTask"
classpathref="android.antlibs"/>
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- Execute the Android Setup task that will setup some properties specific to the target,
and import the rules files.
To customize the rules, copy/paste them below the task, and disable import by setting
the import attribute to false:
<setup import="false" />
This will ensure that the properties are setup correctly but that your customized
targets are used.
-->
<setup import="true" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
unless="sdk.dir"
/>
<!--
================================================================================
New I2P rules
================================================================================
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- overrides of those in main_rules.xml -->
<!-- Import the actual build file.
<target name="-pre-build" depends="findI2PSource, copy-i2p-resources, incrementBuild" >
<!-- aapt messes up when resources are added or deleted, just build every time -->
<delete dir="${gen.absolute.dir}/net" verbose="${verbose}" />
<!-- screw it, do the classes too, until I add the depend class -->
<delete dir="${out.absolute.dir}/classes/net" verbose="${verbose}" />
</target>
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
<target name="-pre-compile" depends="buildrouter" />
<target name="-post-compile" depends="hackcleanup, jbigi" />
<!-- new rules -->
<target name="findI2PSource" >
<!-- override with i2psrc=path/to/source in local.properties -->
<property name="i2psrc" value="../i2p.i2p" />
<property name="i2pbase" location="${i2psrc}" />
<available file="${i2psrc}" property="i2p.present" />
<fail message="I2P source directory ${i2psrc} was not found. Install it there or set i2psrc=/path/to/source in local.properties" >
<condition>
<not>
<isset property="i2p.present" />
</not>
</condition>
</fail>
<echo message="Using I2P source at ${i2pbase}" />
</target>
<target name="buildrouter" depends="findI2PSource, -dirs" >
<!-- build router and core -->
<ant dir="${i2pbase}" >
<target name="buildRouter" />
<target name="buildI2PTunnel" />
<target name="buildAddressbook" />
</ant>
<!-- router -->
<copy file="${i2pbase}/build/router.jar" todir="${jar.libs.dir}" />
<!-- core -->
<!-- org.bouncycastle.crypto already in android
but we need a little trickery because our HMac is incompatible...
and the libs aren't in the SDK to compile against??? -->
<jar destfile="${jar.libs.dir}/crypto.jar" >
<zipfileset src="${i2pbase}/build/i2p.jar" >
<include name="org/bouncycastle/crypto/Digest.class" />
<include name="org/bouncycastle/crypto/Mac.class" />
<include name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
<include name="org/bouncycastle/crypto/digests/MD5Digest.class" />
</zipfileset >
</jar>
<!-- lots of unneeded stuff could be deleted here -->
<jar destfile="${jar.libs.dir}/i2p.jar" >
<zipfileset src="${i2pbase}/build/i2p.jar" >
<exclude name="net/i2p/util/LogWriter.class" />
<exclude name="net/i2p/util/SecureDirectory.class" />
<exclude name="net/i2p/util/SecureFile.class" />
<exclude name="net/i2p/util/SecureFileOutputStream.class" />
<exclude name="org/bouncycastle/crypto/Digest.class" />
<exclude name="org/bouncycastle/crypto/Mac.class" />
<exclude name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
<exclude name="org/bouncycastle/crypto/digests/MD5Digest.class" />
</zipfileset >
</jar>
<!-- i2ptunnel -->
<copy file="${i2pbase}/apps/ministreaming/java/build/mstreaming.jar" todir="${jar.libs.dir}" />
<copy file="${i2pbase}/apps/streaming/java/build/streaming.jar" todir="${jar.libs.dir}" />
<jar destfile="${jar.libs.dir}/i2ptunnel.jar" >
<zipfileset src="${i2pbase}/apps/i2ptunnel/java/build/i2ptunnel.jar" >
<exclude name="net/i2p/i2ptunnel/I2PTunnelGUI.class" />
</zipfileset >
</jar>
<!-- addressbook - make a jar, it's a war in the i2p distro -->
<jar destfile="${jar.libs.dir}/addressbook.jar"
basedir="${i2pbase}/apps/addressbook/build"
excludes="net/i2p/addressbook/Servlet.class" />
</target>
<!-- some resources -->
<target name="copy-i2p-resources" depends="findI2PSource, -dirs" >
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/outbound.png" todir="res/drawable/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/inbound.png" todir="res/drawable/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/images/header.png" todir="res/drawable/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/console.css" tofile="res/raw/console_css" />
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />
<copy file="${i2pbase}/licenses/LICENSE-ElGamalDSA.txt" tofile="res/raw/license_elgamaldsa_txt" />
<copy file="${i2pbase}/licenses/LICENSE-SHA256.txt" tofile="res/raw/license_sha256_txt" />
<copy file="${i2pbase}/licenses/LICENSE-BSD.txt" tofile="res/raw/license_bsd_txt" />
<copy file="${i2pbase}/licenses/LICENSE-SNTP.txt" tofile="res/raw/license_sntp_txt" />
<copy file="${i2pbase}/licenses/LICENSE-LGPLv2.1.txt" tofile="res/raw/license_lgplv2_1_txt" />
<copy file="${i2pbase}/licenses/LICENSE-InstallCert.txt" tofile="res/raw/license_installcert_txt" />
<copy file="${i2pbase}/licenses/LICENSE-BlockFile.txt" tofile="res/raw/license_blockfile_txt" />
<copy file="${i2pbase}/licenses/LICENSE-GPLv2.txt" tofile="res/raw/license_gplv2_txt" />
<copy file="${i2pbase}/licenses/LICENSE-GPLv3.txt" tofile="res/raw/license_gplv3_txt" />
<copy file="${i2pbase}/licenses/LICENSE-LGPLv3.txt" tofile="res/raw/license_lgplv3_txt" />
<copy file="${i2pbase}/licenses/LICENSE-Addressbook.txt" tofile="res/raw/license_addressbook_txt" />
</target>
<target name="hackcleanup">
<delete file="${jar.libs.dir}/crypto.jar" />
</target>
<target name="jbigi" depends="findI2PSource" >
<exec executable="sh" osfamily="unix" failonerror="true">
<arg value="-c" />
<arg value="jni/build.sh ${i2pbase}" />
</exec>
<copy file="jni/libjbigi.so" todir="${native.libs.dir}/armeabi" />
</target>
<target name="incrementBuild" depends="findI2PSource" >
<buildnumber file="scripts/build.number" />
<exec executable="sh" osfamily="unix" failonerror="true">
<arg value="-c" />
<arg value="scripts/setversion.sh ${i2pbase}" />
</exec>
<!-- this loads my.version.code and my.version.name -->
<property file="scripts/version.properties" />
</target>
<!-- install now does both -->
<target name="reinstall" depends="install" />
<target name="distclean" depends="clean">
<delete dir="${jar.libs.dir}" verbose="${verbose}" />
<delete file="res/drawable/i2plogo.png" verbose="${verbose}"/>
<delete file="res/drawable/outbound.png" verbose="${verbose}"/>
<delete file="res/drawable/inbound.png" verbose="${verbose}"/>
<delete file="res/drawable/header.png" verbose="${verbose}"/>
<delete file="res/raw/console_css" verbose="${verbose}"/>
<delete file="res/raw/blocklist_txt" verbose="${verbose}" />
<delete file="res/raw/hosts_txt" verbose="${verbose}" />
<delete file="res/raw/license_app_txt" />
<delete file="res/raw/license_apache20_txt" />
<delete file="res/raw/license_elgamaldsa_txt" />
<delete file="res/raw/license_sha256_txt" />
<delete file="res/raw/license_bsd_txt" />
<delete file="res/raw/license_sntp_txt" />
<delete file="res/raw/license_lgplv2_1_txt" />
<delete file="res/raw/license_installcert_txt" />
<delete file="res/raw/license_blockfile_txt" />
<delete file="res/raw/license_gplv2_txt" />
<delete file="res/raw/license_gplv3_txt" />
<delete file="res/raw/license_lgplv3_txt" />
<delete dir="jni/build/" verbose="${verbose}" />
<delete file="scripts/build.number" verbose="${verbose}" />
<delete file="scripts/version.properties" verbose="${verbose}" />
</target>
<!-- just to make it easier -->
<target name="create-signing-keys" >
<echo message="key store is ${key.store}" />
<echo message="key store password is ${key.store.password}" />
<echo message="key alias is ${key.alias}" />
<input message="Enter common name for new key (your name): " addproperty="release.cn" />
<fail message="You must enter a name" >
<condition>
<equals arg1="${release.cn}" arg2="" />
</condition>
</fail>
<input message="Enter password for new key (6 characters minimum): " addproperty="release.password" />
<fail message="You must enter a password" >
<condition>
<equals arg1="${release.password}" arg2="" />
</condition>
</fail>
<echo message="Generating keys, this may take a while..." />
<exec executable="keytool" inputstring="${release.password}${line.separator}${release.password}${line.separator}" osfamily="unix" failonerror="true">
<arg value="-genkey" />
<arg value="-v" />
<arg value="-alias" />
<arg value="${key.alias}" />
<arg value="-keystore" />
<arg value="${key.store}" />
<arg value="-validity" />
<arg value="10000" />
<arg value="-keyalg" />
<arg value="RSA" />
<arg value="-keysize" />
<arg value="4096" />
<arg value="-storepass" />
<arg value="${key.store.password}" />
<arg value="-dname" />
<arg value="cn=${release.cn}, ou=Apps, o=I2P, c=DE" />
</exec>
<echo message="Created keys:" />
<exec executable="keytool" inputstring="android${line.separator}" osfamily="unix" failonerror="true">
<arg value="-list" />
<arg value="-v" />
<arg value="-alias" />
<arg value="${key.alias}" />
<arg value="-keystore" />
<arg value="${key.store}" />
</exec>
<echo message="BACK UP your key store file ${key.store} and your password!" />
</target>
<target name="verifyKeystore" >
<available file="${key.store}" property="keystore.present" />
<fail message="You must first create a keystore and keys with 'ant create-signing-keys'" >
<condition>
<not>
<isset property="keystore.present" />
</not>
</condition>
</fail>
</target>
<target name="verifyWorkspace" >
<echo message="Everything is checked in, right? Let's be sure:" />
<exec executable="mtn" failonerror="true">
<arg value="st" />
</exec>
<echo message="If there are any modified files above, stop now!" />
<echo message="(except AndroidManifest.xml)" />
</target>
<target name="verify" depends="verifyKeystore, verifyWorkspace, release" >
<exec executable="jarsigner" osfamily="unix" failonerror="true">
<arg value="-verify" />
<arg value="-verbose" />
<arg value="-certs" />
<arg value="${out.release.file}" />
</exec>
<echo message="" />
<echo message="Release file is ${out.release.file}" />
<echo message="Android version name: ${my.version.name}" />
<echo message="Android version code: ${my.version.code}" />
<echo message="File size:" />
<exec executable="ls" failonerror="true">
<arg value="-l" />
<arg value="${out.release.file}" />
</exec>
<echo message="SHA256 sum:" />
<exec executable="sha256sum" failonerror="true">
<arg value="${out.release.file}" />
</exec>
<echo message="Don't forget to mtn ci AndroidManifest.xml" />
<echo message="Don't forget to mtn tag w: android-${my.version.name}" />
<copy file="${out.release.file}" tofile="I2PAndroid-${my.version.name}.apk" />
<echo message="Release file copied to I2PAndroid-${my.version.name}.apk" />
</target>
<!--
================================================================================
From here down copied from SDK tools/ant/main_rules.xml from Tools version 11
and then modified
================================================================================
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- not necessary to copy if setup import="true" -->
<!--
override this because the ant task com.android.ant.AaptExecLoopTask has issues:
a) it uses version.code which main_rules sets to "" and
b) it can't set versionName via the aapt task, have to use the aapt command line
-->
<!-- Puts the project's resources into the output package file
This actually can create multiple resource package in case
Some custom apk with specific configuration have been
declared in default.properties.
-->
<target name="-package-resources">
<echo>Packaging resources</echo>
<exec executable="${aapt}" failonerror="true" >
<arg value="package" />
<arg value="--version-code" />
<arg value="${my.version.code}" />
<arg value="--version-name" />
<arg value="${my.version.name}" />
<arg value="-f" />
<arg value="-m" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-I" />
<arg value="${android.jar}" />
<arg value="-S" />
<arg value="${resource.absolute.dir}" />
<arg value="-J" />
<arg value="${gen.absolute.dir}" />
<arg value="-F" />
<arg value="${out.absolute.dir}/${resource.package.file.name}" />
</exec>
</target>
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

579
custom_rules.xml Normal file
View File

@ -0,0 +1,579 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="imported">
<!-- override with i2psrc=path/to/source in local.properties -->
<property name="i2psrc" value="../i2p.i2p" />
<property name="i2pbase" location="${i2psrc}" />
<available file="${i2psrc}" property="i2p.present" />
<fail message="I2P source directory ${i2psrc} was not found. Install it there or set i2psrc=/path/to/source in local.properties" >
<condition>
<not>
<isset property="i2p.present" />
</not>
</condition>
</fail>
<echo message="Using I2P source at ${i2pbase}" />
<!-- Utility scripts -->
<!-- Split a string -->
<scriptdef name="split" language="javascript">
<attribute name="value"/>
<attribute name="sep"/>
<attribute name="prefix"/>
<![CDATA[
values = attributes.get("value").split(attributes.get("sep"));
for(i = 0; i < values.length; i++) {
project.setNewProperty(attributes.get("prefix") + "." + i, values[i]);
}
]]>
</scriptdef>
<!-- Normalize the core version number -->
<scriptdef name="setcore" language="javascript">
<attribute name="value"/>
<![CDATA[
value = attributes.get("value").split("\n")[0];
values = value.split('\\.');
dots = values.length - 1;
major = values[0];
minor = "0";
release = "0";
point = "";
if(dots > 0) {
minor = values[1];
if(dots > 1) {
release = values[2];
if (dots > 2) {
point = "." + values[3];
}
}
}
project.setNewProperty("CORE", major + "." + minor + "." + release + point);
project.setNewProperty("CORE.major", major);
project.setNewProperty("CORE.minor", minor);
project.setNewProperty("CORE.release", release);
project.setNewProperty("CORE.point", point);
]]>
</scriptdef>
<!-- Normalize the router build number -->
<scriptdef name="normalizeitem" language="javascript">
<attribute name="value"/>
<attribute name="name" />
<![CDATA[
value = attributes.get("value").split("\n")[0].trim();
project.setNewProperty(attributes.get("name"), value);
]]>
</scriptdef>
<!-- input prefix, major, minor, release, routerbuild, androidbuild, sdk
Assigns a version string and version number -->
<scriptdef name="generateversions" language="javascript">
<attribute name="prefix"/>
<attribute name="major"/>
<attribute name="minor"/>
<attribute name="release"/>
<attribute name="point"/>
<attribute name="routerbuild"/>
<attribute name="androidbuild"/>
<attribute name="sdk"/>
<![CDATA[
Major = attributes.get("major") + ".";
Minor = attributes.get("minor") + ".";
Release = attributes.get("release");
Point = attributes.get("point") + "-";
Routerbuild = attributes.get("routerbuild") +"_b";
Androidbuild = attributes.get("androidbuild") +"-API";
SDK = attributes.get("sdk");
project.setNewProperty(attributes.get("prefix") + ".full", Major + Minor + Release + Point + Routerbuild + Androidbuild + SDK);
/*
* Android version code is an integer.
* So we have 31 bits.
* MAJOR 4 bits 0-15
* MINOR 8 bits 0-255
* RELEASE 8 bits 0-255
* ROUTERBUILD 7 bits 0-127
* ANDROIDBUILD 4 bits 0-15
*
* Note that ANDROIDBUILD is modded % 16, it will wrap,
* beware of that if you release multiple builds using the
* same ROUTERBUILD, or clear it if you update ROUTERBUILD
* Subtract 1 from ANDROIDBUILD since it starts at 1 after distclean.
*
* WARNING - 4th core field ("point") is ignored. Be sure to increment android build number.
*/
iMajor = ((parseInt(Major) % 16) << 27);
iMinor = ((parseInt(Minor) % 256) << 19);
iRelease = ((parseInt(Release)% 256) << 11);
iRouterbuild = ((parseInt(Routerbuild) % 128) << 4);
iAndroidbuild = ((parseInt(Androidbuild) - 1) % 16);
itotal = iMajor + iMinor + iRelease + iRouterbuild + iAndroidbuild;
project.setNewProperty(attributes.get("prefix") + ".vercode", itotal);
]]>
</scriptdef>
<!-- if file 'condition' != "true" write 'properties' to file 'name' -->
<scriptdef name="ifnotpresent" language="javascript">
<attribute name="file" />
<attribute name="condition" />
<![CDATA[
importClass(java.io.File);
importClass(java.util.Properties);
importClass(java.io.FileOutputStream);
importClass(java.io.ByteArrayInputStream);
doit = !attributes.get("condition").equals("true");
if(doit) {
props = new Properties();
props.setProperty("build.number", "1");
cfg = new File(attributes.get("file"));
fo = new FileOutputStream(cfg);
props.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
}
]]>
</scriptdef>
<!-- increment the build number -->
<scriptdef name="incbuildnumber" language="javascript">
<attribute name="file" />
<![CDATA[
importClass(java.io.File);
importClass(java.util.Properties);
importClass(java.io.FileOutputStream);
importClass(java.io.FileInputStream);
props = new Properties();
cfg = new File(attributes.get("file"));
fi = new FileInputStream(cfg);
props.load(fi);
fi.close();
m = (parseInt(props.getProperty("build.number")) + 1).toString();
props.setProperty("build.number", m);
fo = new FileOutputStream(cfg);
props.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
]]>
</scriptdef>
<!-- Update property and xml files as needed -->
<scriptdef name="propertyfilechecks" language="javascript">
<attribute name="file" />
<attribute name="condition" />
<attribute name="propsdata" />
<attribute name="buildfile" />
<attribute name="mainxml" />
<attribute name="libxml" />
<![CDATA[
importClass(java.io.File);
importClass(java.util.Properties);
importClass(java.io.FileOutputStream);
importClass(java.io.FileInputStream);
importClass(java.io.ByteArrayInputStream);
importClass(java.io.InputStream);
importClass(java.util.regex.Matcher);
importClass(java.util.regex.Pattern);
importClass(java.io.BufferedReader);
importClass(java.io.BufferedWriter);
importClass(java.lang.StringBuffer);
importClass(java.io.InputStreamReader);
importClass(java.io.FileWriter);
doit = !attributes.get("condition").equals("true");
props = new Properties();
str = attributes.get("propsdata").toString();
is = new ByteArrayInputStream(str.getBytes());
props.load(is);
cfg = new File(attributes.get("file"));
if(doit) {
echo = project.createTask("echo");
echo.setMessage("Creating file='" + attributes.get("file") + "'\n" + props);
echo.perform();
fo = new FileOutputStream(cfg);
props.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
}
/* load and compare keys that start with 'last." */
oldprops = new Properties();
fi = new FileInputStream(cfg);
oldprops.load(fi);
fi.close();
keys = props.propertyNames();
ok = true;
while (keys.hasMoreElements()) {
key = keys.nextElement();
if (!oldprops.containsKey(key)) {
ok = false;
break;
}
if(key.startsWith("last.")) {
if(!oldprops.getProperty(key).equals(props.getProperty(key))) {
ok = false;
break;
}
}
}
if (!ok) {
/* update version.props */
echo = project.createTask("echo");
echo.setMessage("(1)Updating file='" + attributes.get("file") + "'\n" + props);
echo.perform();
fo = new FileOutputStream(cfg);
props.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
/* reset build.number */
bprops = new Properties();
bprops.setProperty("build.number", "1");
echo = project.createTask("echo");
echo.setMessage("(2)Updating file='" + attributes.get("buildfile") + "'\n" + bprops);
echo.perform();
cfg = new File(attributes.get("buildfile"));
fo = new FileOutputStream(cfg);
bprops.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
} else {
/* just update version.props */
echo = project.createTask("echo");
echo.setMessage("(3)Updating file='" + attributes.get("file") + "'\n" + props);
echo.perform();
fo = new FileOutputStream(cfg);
props.store(fo, "AUTO-GENERATED FILE, DO NOT EDIT!");
fo.close();
}
sp1 = 'android:versionCode="[0-9]*"';
rp1 = 'android:versionCode="' + props.getProperty("my.version.code") + '"';
sp2 = 'android:versionName="[^"]*"';
rp2 = 'android:versionName="' + props.getProperty("my.version.name") + '"';
/* sed primary manifest */
cfg = File(attributes.get("mainxml") + ".in");
buffer = new StringBuffer();
fi = new FileInputStream(cfg);
reader = new BufferedReader(new InputStreamReader(fi));
while((line = reader.readLine()) != null) {
rep = line.replaceAll(sp1, rp1);
newline = rep.replaceAll(sp2, rp2);
buffer.append(newline + "\n");
}
fi.close();
out = new BufferedWriter(new FileWriter(attributes.get("mainxml")));
out.write(buffer.toString());
out.close();
/* sed secondary manifest */
cfg = File(attributes.get("libxml") + ".in");
buffer = new StringBuffer();
fi = new FileInputStream(cfg);
reader = new BufferedReader(new InputStreamReader(fi));
while((line = reader.readLine()) != null) {
rep = line.replaceAll(sp1, rp1);
newline = rep.replaceAll(sp2, rp2);
buffer.append(newline + "\n");
}
fi.close();
out = new BufferedWriter(new FileWriter(attributes.get("libxml")));
out.write(buffer.toString());
out.close();
]]>
</scriptdef>
<!-- files of interest -->
<property name="MANIFESTfilename" value="AndroidManifest.xml" />
<property name="MANIFESTROUTERfilename" value="routerjars/AndroidManifest.xml" />
<!-- Get i2p.i2p infos -->
<property name="COREfilename" value="${i2psrc}/core/java/src/net/i2p/CoreVersion.java"/>
<loadfile srcfile="${COREfilename}" property="COREfile" encoding="UTF-8" >
<filterchain>
<tokenfilter>
<containsregex pattern='^.*public.+final.+static.+String.+VERSION.*"(.*)".*' replace="\1" />
</tokenfilter>
</filterchain>
</loadfile>
<setcore value="${COREfile}" />
<echo message="CORE `${CORE}`" />
<property name="ROUTERBUILDfilename" value="${i2psrc}/router/java/src/net/i2p/router/RouterVersion.java" />
<loadfile srcfile="${ROUTERBUILDfilename}" property="ROUTERBUILDfile" encoding="UTF-8" >
<filterchain>
<tokenfilter>
<containsregex pattern='^.*public.+final.+static.+long.+BUILD.*=[^0-9]*([0-9]+)[^0-9]+.*' replace="\1" />
</tokenfilter>
</filterchain>
</loadfile>
<normalizeitem name="ROUTERBUILD" value="${ROUTERBUILDfile}" />
<echo message="ROUTERBUILD `${ROUTERBUILD}`" />
<property name="buildversionfilename" value="scripts/build.number" />
<available file="${buildversionfilename}" property="buildversionfilename.present" />
<!-- if the file isn't there, do buildnumber to create it! -->
<ifnotpresent file="${buildversionfilename}" condition="${buildversionfilename.present}" />
<loadfile srcfile="${buildversionfilename}" property="buildversionfile" encoding="UTF-8" >
<filterchain>
<tokenfilter>
<containsregex pattern='^build.number=[^0-9]*([0-9]+)[^0-9]*.*' replace="\1" />
</tokenfilter>
</filterchain>
</loadfile>
<normalizeitem name="buildversion" value="${buildversionfile}" />
<echo message="buildversion `${buildversion}`" />
<!--
<split value="${target}" sep="-" prefix="gettarget"/>
-->
<property name="gettarget.1" value="${minSdkVersion}" />
<echo message="API${gettarget.1}" />
<!-- generate the version infos that we will want to see -->
<generateversions prefix="zap" major="${CORE.major}"
minor="${CORE.minor}" release="${CORE.release}" point="${CORE.point}"
routerbuild="${ROUTERBUILD}" androidbuild="${buildversion}"
sdk="${gettarget.1}"/>
<echo message="checking for changes in ${zap.full}" />
<property name="allversionsfilename" value="scripts/version.properties" />
<available file="${allversionsfilename}" property="allversionsfilename.present" />
<!-- if the file is not available, create it with the current infos -->
<propertyfilechecks file="${allversionsfilename}" condition="${allversionsfilename.present}"
propsdata="my.version.name=${zap.full}&#10;my.version.code=${zap.vercode}&#10;last.CORE=${CORE}&#10;last.ROUTERBUILD=${ROUTERBUILD}&#10;"
buildfile="${buildversionfilename}"
mainxml="${MANIFESTfilename}"
libxml="${MANIFESTROUTERfilename}"
/>
<loadfile srcfile="${allversionsfilename}" property="allversionsfile" encoding="UTF-8"/>
<echo message="${allversionsfile}" />
<property file="${buildversionfile}" />
<!-- this loads my.version.code and my.version.name, and performs a copy -->
<property file="${allversionsfilename}" />
<property name="version.code" value="${my.version.code}" />
<property name="version.name" value="${my.version.name}" />
<echo message="version.code '${version.code}', 'version.name '${version.name}', '${my.version.name}'" />
<!--
================================================================================
New I2P rules
================================================================================
-->
<!--
You must execute this target manually to force increment of the build number.
Sorry if this is an extra step.
-*- Sponge
-->
<target name="incrementBuild" >
<incbuildnumber file="${buildversionfilename}" />
</target>
<!-- overrides of those in main_rules.xml -->
<target name="-pre-build" depends="copy-i2p-resources" >
<ant dir="routerjars" inheritall="false" useNativeBasedir="true" >
<target name="buildrouter" />
</ant>
</target>
<!--
<target name="-pre-compile" depends="jbigi, buildrouter" />
<target name="-post-compile" depends="hackcleanup" />
-->
<!--
Creates the output directories if they don't exist yet.
-->
<target name="-dirs">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${resource.absolute.dir}" />
<mkdir dir="${gen.absolute.dir}" />
<mkdir dir="${out.absolute.dir}" />
<mkdir dir="${out.classes.absolute.dir}" />
</target>
<!-- some resources -->
<target name="copy-i2p-resources" depends="-dirs" >
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
<!-- Static web sources should be in the assets directory. -->
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/console.css" todir="assets/themes/console/light/" />
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />
<copy file="${i2pbase}/licenses/LICENSE-ElGamalDSA.txt" tofile="res/raw/license_elgamaldsa_txt" />
<copy file="${i2pbase}/licenses/LICENSE-SHA256.txt" tofile="res/raw/license_sha256_txt" />
<copy file="${i2pbase}/licenses/LICENSE-BSD.txt" tofile="res/raw/license_bsd_txt" />
<copy file="${i2pbase}/licenses/LICENSE-SNTP.txt" tofile="res/raw/license_sntp_txt" />
<copy file="${i2pbase}/licenses/LICENSE-LGPLv2.1.txt" tofile="res/raw/license_lgplv2_1_txt" />
<copy file="${i2pbase}/licenses/LICENSE-InstallCert.txt" tofile="res/raw/license_installcert_txt" />
<copy file="${i2pbase}/licenses/LICENSE-BlockFile.txt" tofile="res/raw/license_blockfile_txt" />
<copy file="${i2pbase}/licenses/LICENSE-GPLv2.txt" tofile="res/raw/license_gplv2_txt" />
<copy file="${i2pbase}/licenses/LICENSE-GPLv3.txt" tofile="res/raw/license_gplv3_txt" />
<copy file="${i2pbase}/licenses/LICENSE-LGPLv3.txt" tofile="res/raw/license_lgplv3_txt" />
<copy file="${i2pbase}/licenses/LICENSE-FatCowIcons.txt" tofile="res/raw/license_fatcowicons_txt" />
<copy file="${i2pbase}/licenses/LICENSE-Addressbook.txt" tofile="res/raw/license_addressbook_txt" />
<delete file="res/raw/certificates_zip" />
<zip update="true" destfile="res/raw/certificates_zip">
<fileset dir="${i2pbase}/installer/resources/certificates/" />
</zip>
</target>
<!-- install now does both -->
<target name="reinstall" depends="install" />
<target name="-pre-clean">
<!--<delete dir="${jar.libs.dir}" verbose="${verbose}" />-->
<delete file="res/drawable/i2plogo.png" verbose="${verbose}"/>
<delete file="res/drawable/outbound.png" verbose="${verbose}"/>
<delete file="res/drawable/inbound.png" verbose="${verbose}"/>
<delete file="res/drawable/header.png" verbose="${verbose}"/>
<delete file="res/raw/console_css" verbose="${verbose}"/>
<delete file="assets/themes/console/images/i2plogo.png" />
<delete file="assets/themes/console/images/outbound.png" />
<delete file="assets/themes/console/images/inbound.png" />
<delete file="assets/themes/console/light/images/header.png" />
<delete file="assets/themes/console/light/console.css" />
<delete file="res/raw/blocklist_txt" verbose="${verbose}" />
<delete file="res/raw/hosts_txt" verbose="${verbose}" />
<delete file="res/raw/license_app_txt" />
<delete file="res/raw/license_apache20_txt" />
<delete file="res/raw/license_elgamaldsa_txt" />
<delete file="res/raw/license_sha256_txt" />
<delete file="res/raw/license_bsd_txt" />
<delete file="res/raw/license_sntp_txt" />
<delete file="res/raw/license_lgplv2_1_txt" />
<delete file="res/raw/license_installcert_txt" />
<delete file="res/raw/license_blockfile_txt" />
<delete file="res/raw/license_gplv2_txt" />
<delete file="res/raw/license_gplv3_txt" />
<delete file="res/raw/license_lgplv3_txt" />
<delete file="res/raw/license_fatcowicons_txt" />
<delete file="res/raw/certificates_zip" />
</target>
<target name="distclean" depends="clean">
<ant dir="routerjars" inheritall="false" useNativeBasedir="true" >
<target name="distclean" />
</ant>
<delete file="scripts/build.number" verbose="${verbose}" />
<delete file="scripts/version.properties" verbose="${verbose}" />
<delete file="AndroidManifest.xml" verbose="${verbose}" />
</target>
<!-- just to make it easier -->
<target name="create-signing-keys" >
<echo message="key store is ${key.store}" />
<echo message="key store password is ${key.store.password}" />
<echo message="key alias is ${key.alias}" />
<input message="Enter common name for new key (your name): " addproperty="release.cn" />
<fail message="You must enter a name" >
<condition>
<equals arg1="${release.cn}" arg2="" />
</condition>
</fail>
<input message="Enter password for new key (6 characters minimum): " addproperty="release.password" />
<fail message="You must enter a password" >
<condition>
<equals arg1="${release.password}" arg2="" />
</condition>
</fail>
<echo message="Generating keys, this may take a while..." />
<exec executable="keytool" inputstring="${release.password}${line.separator}${release.password}${line.separator}" osfamily="unix" failonerror="true">
<arg value="-genkey" />
<arg value="-v" />
<arg value="-alias" />
<arg value="${key.alias}" />
<arg value="-keystore" />
<arg value="${key.store}" />
<arg value="-validity" />
<arg value="10000" />
<arg value="-keyalg" />
<arg value="RSA" />
<arg value="-keysize" />
<arg value="4096" />
<arg value="-storepass" />
<arg value="${key.store.password}" />
<arg value="-dname" />
<arg value="cn=${release.cn}, ou=Apps, o=I2P, c=DE" />
</exec>
<echo message="Created keys:" />
<exec executable="keytool" inputstring="android${line.separator}" osfamily="unix" failonerror="true">
<arg value="-list" />
<arg value="-v" />
<arg value="-alias" />
<arg value="${key.alias}" />
<arg value="-keystore" />
<arg value="${key.store}" />
</exec>
<echo message="BACK UP your key store file ${key.store} and your password!" />
</target>
<target name="verifyKeystore" >
<available file="${key.store}" property="keystore.present" />
<fail message="You must first create a keystore and keys with 'ant create-signing-keys'" >
<condition>
<not>
<isset property="keystore.present" />
</not>
</condition>
</fail>
</target>
<target name="verifyWorkspace" >
<echo message="Everything is checked in, right? Let's be sure:" />
<exec executable="mtn" failonerror="true">
<arg value="st" />
</exec>
<echo message="If there are any modified files above, stop now!" />
<echo message="(except AndroidManifest.xml)" />
</target>
<target name="verify" depends="verifyKeystore, verifyWorkspace, release" >
<exec executable="jarsigner" osfamily="unix" failonerror="true">
<arg value="-verify" />
<arg value="-verbose" />
<arg value="-certs" />
<arg value="${out.release.file}" />
</exec>
<echo message="" />
<echo message="Release file is ${out.release.file}" />
<echo message="Android version name: ${my.version.name}" />
<echo message="Android version code: ${my.version.code}" />
<echo message="File size:" />
<exec executable="ls" failonerror="true">
<arg value="-l" />
<arg value="${out.release.file}" />
</exec>
<echo message="SHA256 sum:" />
<exec executable="sha256sum" failonerror="true">
<arg value="${out.release.file}" />
</exec>
<echo message="Don't forget to mtn ci AndroidManifest.xml" />
<echo message="Don't forget to mtn tag w: android-${my.version.name}" />
<copy file="${out.release.file}" tofile="I2PAndroid-${my.version.name}.apk" />
<echo message="Release file copied to I2PAndroid-${my.version.name}.apk" />
</target>
</project>

View File

@ -1,100 +0,0 @@
#
# build GMP and libjbigi.so using the Android tools directly
#
# uncomment to skip
# exit 0
THISDIR=$(realpath $(dirname $(which $0)))
cd $THISDIR
LIBFILE=$PWD/libjbigi.so
if [ -f $LIBFILE ]
then
echo "$LIBFILE exists, nothing to do here"
echo "If you wish to force a recompile, delete it"
exit 0
fi
I2PBASE=${1:-../../i2p.i2p}
export NDK=$(realpath ../../android-ndk-r5b/)
#
# API level, must match that in ../AndroidManifest.xml
#
LEVEL=8
ARCH=arm
export SYSROOT=$NDK/platforms/android-$LEVEL/arch-$ARCH/
export AABI=arm-linux-androideabi-4.4.3
export SYSTEM=linux-x86
export BINPREFIX=arm-linux-androideabi-
export CC="$NDK/toolchains/$AABI/prebuilt/$SYSTEM/bin/${BINPREFIX}gcc --sysroot=$SYSROOT"
# worked without this on 4.3.2, but 5.0.2 couldn't find it
export NM="$NDK/toolchains/$AABI/prebuilt/$SYSTEM/bin/${BINPREFIX}nm"
STRIP="$NDK/toolchains/$AABI/prebuilt/$SYSTEM/bin/${BINPREFIX}strip"
#echo "CC is $CC"
JBIGI=$(realpath $I2PBASE/core/c/jbigi)
#
# GMP Version
#
# prelim stats on a droid
# java (libcrypto) 29 ms
# 4.3.2 (jbigi) 34 ms
# 5.0.2 (jbigi) 32 ms
# libcrypto crashes on emulator, don't trust it
# jbigi about 20-25% slower than java on emulator
#
GMPVER=4.3.2
GMP=$JBIGI/gmp-$GMPVER
if [ ! -d $GMP ]
then
echo "Source dir for GMP version $GMPVER not found in $GMP"
echo "Install it there or change GMPVER and/or GMP in this script"
exit 1
fi
mkdir -p build
cd build
# we must set both build and host, so that the configure
# script will set cross_compile=yes, so that it
# won't attempt to run the a.out files
if [ ! -f config.status ]
then
echo "Configuring GMP..."
$GMP/configure --with-pic --build=x86-none-linux --host=armv5-eabi-linux || exit 1
fi
echo "Building GMP..."
make || exit 1
export JAVA_HOME=$(dirname $(dirname $(realpath $(which javac))))
if [ ! -f "$JAVA_HOME/include/jni.h" ]; then
echo "Cannot find jni.h! Looked in '$JAVA_HOME/include/jni.h'"
echo "Please set JAVA_HOME to a java home that has the JNI"
exit 1
fi
COMPILEFLAGS="-fPIC -Wall"
INCLUDES="-I. -I$JBIGI/jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
LINKFLAGS="-shared -Wl,-soname,libjbigi.so,--fix-cortex-a8"
echo "Building jbigi lib that is statically linked to GMP"
STATICLIBS=".libs/libgmp.a"
echo "Compiling C code..."
rm -f jbigi.o $LIBFILE
echo "$CC -c $COMPILEFLAGS $INCLUDES $JBIGI/jbigi/src/jbigi.c"
$CC -c $COMPILEFLAGS $INCLUDES $JBIGI/jbigi/src/jbigi.c || exit 1
echo "$CC $LINKFLAGS $INCLUDES $INCLUDELIBS -o $LIBFILE jbigi.o $STATICLIBS"
$CC $LINKFLAGS $INCLUDES $INCLUDELIBS -o $LIBFILE jbigi.o $STATICLIBS || exit 1
echo "$STRIP $LIBFILE"
$STRIP $LIBFILE || exit 1
ls -l $LIBFILE || exit 1
echo 'Built successfully'

Binary file not shown.

20
proguard-project.txt Normal file
View File

@ -0,0 +1,20 @@
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

20
project.properties Normal file
View File

@ -0,0 +1,20 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-19
# Must match that in AndroidManifest.xml.in
minSdkVersion=8
# I2P router libs
android.library.reference.1=./routerjars
# Android Support Library
# If the relative path differs in your local environment,
# override this in the base local.properties
# (not routerjars/local.properties)
android.library.reference.2=../android-sdk-linux/extras/android/support/v7/appcompat

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
res/drawable/client.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
res/drawable/local_down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
res/drawable/local_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/routerled_ry_1" android:duration="200" />
<item android:drawable="@drawable/routerled_ry_2" android:duration="200" />
<item android:drawable="@drawable/routerled_ry_3" android:duration="200" />
<item android:drawable="@drawable/routerled_ry_4" android:duration="200" />
<item android:drawable="@drawable/routerled_ry_5" android:duration="200" />
</animation-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Some files were not shown because too many files have changed in this diff Show More