Compare commits
386 Commits
android-0.
...
android-0.
Author | SHA1 | Date | |
---|---|---|---|
6f29991829 | |||
a414b10ce8 | |||
030fc60445 | |||
9d215353e8 | |||
f0a2166ae0 | |||
af097474de | |||
5a1fc32da4 | |||
7218b79643 | |||
ccd5ae45df | |||
3584890277 | |||
4e17010f59 | |||
aa8009cb70 | |||
30d1816c43 | |||
02c25ba174 | |||
8f8bbcb19f | |||
696ae2bfc0 | |||
0ea468ea71 | |||
a2d9adb071 | |||
b8cc64d4ea | |||
6e3e99c62f | |||
84a63cc911 | |||
b8c3b7e3df | |||
04e190d2d0 | |||
ce2a762db2 | |||
76014f2081 | |||
6d570646f1 | |||
104c17cb9c | |||
0860ee83b0 | |||
707c0e9aa8 | |||
163bc2ce58 | |||
cec1f8fe52 | |||
97f52f8139 | |||
0094cc5637 | |||
01c994e7b2 | |||
b60ae00fd7 | |||
2340500083 | |||
a91261f5ca | |||
a145729353 | |||
0270444a94 | |||
01e22f4fb5 | |||
2e892841cb | |||
e271dc90ae | |||
77ced0bd1f | |||
ac67533ef2 | |||
305c834aa1 | |||
cbb2973b36 | |||
f360ab4d5d | |||
296d21d1d0 | |||
a5dd751227 | |||
d47bdf85d2 | |||
c2a33541b3 | |||
3e46d98481 | |||
124b1499b4 | |||
2d8529e691 | |||
4a135023b9 | |||
e9fbe8c2ef | |||
228d0204fc | |||
0ebecd9b64 | |||
c062a0f803 | |||
4f24517de9 | |||
d8636ff563 | |||
4e57f78931 | |||
ccbbc3c368 | |||
b9374b5ead | |||
ceaff935d6 | |||
255702b6bb | |||
2e68aa900b | |||
67eddba621 | |||
29fb1f0689 | |||
de605a1d5b | |||
41b49b7bc8 | |||
c691a11c3d | |||
2f6b1189ae | |||
a7a328238b | |||
c9c31ccb76 | |||
8457f279f2 | |||
fbf353858e | |||
99ef07d1fc | |||
a5f5e97e37 | |||
165bcc1c9d | |||
45efd6670f | |||
b601722b31 | |||
14e1a2dca1 | |||
d2385166cb | |||
ed17d59896 | |||
55cfd455ca | |||
f207cf3116 | |||
5825d1d2a5 | |||
077f9902a9 | |||
d77cbde3b3 | |||
62ff63665f | |||
1377aceb18 | |||
c7617ba856 | |||
08c6018483 | |||
f9f283409d | |||
4ef42cb462 | |||
65428dda8e | |||
6311ab4b67 | |||
0c20a45207 | |||
6712148010 | |||
07e6e293bc | |||
2dd1655e1e | |||
97037fe1d8 | |||
d79f797558 | |||
42649e02ea | |||
c6aeb79944 | |||
fb66ec62d6 | |||
15f1e18da1 | |||
15caf8a97c | |||
44989a42f2 | |||
3867eb6fda | |||
0755e79b1a | |||
3a1e43b322 | |||
6a2d494921 | |||
be14d65899 | |||
c42dc725d6 | |||
83ab1d09ae | |||
af30dc8e24 | |||
0268ce13ad | |||
5b897bc993 | |||
1fbf6b1b72 | |||
8095eed241 | |||
8916c123ef | |||
b742dd8ee8 | |||
b02b446e46 | |||
01b07fed5b | |||
2fa205daec | |||
3644d738ee | |||
c044c4de4d | |||
c705527113 | |||
8b79af434e | |||
2c8e9d62be | |||
9832779a50 | |||
9f535a3260 | |||
0beaec366f | |||
8c288ad559 | |||
df5d5ad38e | |||
8b1648c37b | |||
cea42e9ec4 | |||
64c44838a8 | |||
76f9259ee7 | |||
d437f45132 | |||
fc618ad9e5 | |||
15275680e8 | |||
7848a81110 | |||
207f9837d0 | |||
cda09ea4f5 | |||
2a15994a76 | |||
e954953130 | |||
8b51c26a6b | |||
d40f806be6 | |||
bf5b29da76 | |||
18c4276ba0 | |||
a4107e974a | |||
8dd35f6c0f | |||
5a4be4ae86 | |||
9527725760 | |||
b6a8fc02f5 | |||
7794a7db5b | |||
c03debf332 | |||
fbc56d4eb9 | |||
2a050b3ca1 | |||
48c8d84d2f | |||
b6d6258e95 | |||
47215495ed | |||
9e45f1998b | |||
788445f6ce | |||
a057e4a512 | |||
7a09670097 | |||
c92d881a51 | |||
8c2ba03880 | |||
9c9f871667 | |||
7f9758197d | |||
f6d1c093e4 | |||
5e045bc23b | |||
f667a81c6d | |||
a13a405b49 | |||
383ece497f | |||
075c7c09d7 | |||
7cec48e55f | |||
7ddd3c69c8 | |||
9d965a5504 | |||
abd4a99654 | |||
92c734624d | |||
81d0441d2b | |||
9c7b2142cf | |||
3da41888b7 | |||
bf47b901b7 | |||
54a446ebdb | |||
0eb0c67616 | |||
409d823dec | |||
0208e58a3b | |||
6d18e50a3a | |||
c748610280 | |||
7768c624f9 | |||
72ed6bd170 | |||
3d5b9938fd | |||
03b5927447 | |||
b7a6b4acd5 | |||
e27e1e55bd | |||
0b0511dbce | |||
02c370a04a | |||
4810c9e990 | |||
cc801de79d | |||
93fd4f7e0c | |||
abd9908a21 | |||
52d278134c | |||
c60e4f6b3e | |||
5b7452ff90 | |||
014fc9b79b | |||
9ca0ce3192 | |||
99d720c685 | |||
c46ba4f24b | |||
522178598b | |||
5b6658531e | |||
333455b738 | |||
5ebdeedb2b | |||
0af8d2145f | |||
5ac6d51289 | |||
238ab91092 | |||
0af8ed90f7 | |||
c761287a8a | |||
a77674603a | |||
9a2382d886 | |||
0d58d81bce | |||
1e4300cb83 | |||
28b0950990 | |||
536102658a | |||
6754f6b5b1 | |||
06d1903184 | |||
4d13e8adfd | |||
145b249394 | |||
a00c08bb49 | |||
449627be3d | |||
27be4aacb2 | |||
f4f849182d | |||
32d8a7112c | |||
4dbfff292b | |||
228d27d82b | |||
9d0858ad17 | |||
480dacb7f2 | |||
84edc743f5 | |||
b7dfc45b1e | |||
bd0ebc8852 | |||
8c0e2228a5 | |||
4dafc3e5af | |||
291294435a | |||
99588c3cb1 | |||
f7904e0c7e | |||
ae2fa4dce7 | |||
bdbc777a52 | |||
320e8d5153 | |||
c53b98d2b9 | |||
e1236d2824 | |||
d7ac916eeb | |||
5b9203f77d | |||
9757d6e396 | |||
c2ff90af91 | |||
c1e8719d0e | |||
56198bf771 | |||
73286f43f6 | |||
cd3157038c | |||
9359c7a726 | |||
058f41ec73 | |||
e4c9095626 | |||
dd90ea9874 | |||
53c7770e4e | |||
21274f0335 | |||
4ccf3e713d | |||
2ef4d71cdb | |||
c2bc999847 | |||
d3f37a21a5 | |||
658d2a68e2 | |||
490148cb5b | |||
430d56b681 | |||
405bb3317e | |||
bbb41c9c54 | |||
5c9c438e28 | |||
27239cf09d | |||
b853c3af39 | |||
48f84f1a1b | |||
eb4ae2c66d | |||
17be8fb3f7 | |||
bf5accb121 | |||
4749e470b5 | |||
0553815777 | |||
57d81fb14d | |||
ee97af6e4f | |||
6397a93cac | |||
03465185f9 | |||
ddd9a195e6 | |||
664985461a | |||
6d340dc056 | |||
f312b7c6f1 | |||
a42bd73de3 | |||
4424392bdc | |||
bfe71213f8 | |||
cd2a12c8ed | |||
4ca2ed756f | |||
a4abfd8fb8 | |||
9d754c29ae | |||
0101e63bce | |||
75fe8bfbe0 | |||
806f6edbf1 | |||
767ff4f3d2 | |||
07fafb03b6 | |||
e98f86b29a | |||
18bc4f141d | |||
a3792bad7a | |||
745bd3fa94 | |||
97692a4635 | |||
3fe7575dab | |||
a7fc5090f3 | |||
6154f64120 | |||
0e5ca23732 | |||
c47e7dab31 | |||
472fa6d49e | |||
60ece9d4d2 | |||
afd656c6b4 | |||
78e250a207 | |||
134db2ecd3 | |||
53caad9f2a | |||
742df967e2 | |||
5d0c5c30eb | |||
cb9924a0bf | |||
3ceed9a6b3 | |||
c3d95a608d | |||
1b004a628e | |||
b080bd387a | |||
7a429674a7 | |||
45a1511cab | |||
6c7be97ed5 | |||
3244509cab | |||
43a20d18c5 | |||
e2332543ec | |||
4d68da45b4 | |||
084ed85467 | |||
1d060fd419 | |||
a95ca82a3e | |||
c13101d535 | |||
7dc7697c14 | |||
91fb0a2248 | |||
2663cc7d57 | |||
f9fce317d3 | |||
f87a3eb03c | |||
36a0f2c678 | |||
f8fe3f082a | |||
6e130185de | |||
006fc1dc51 | |||
87836ddab6 | |||
ff7154b525 | |||
7a829236b9 | |||
d3edd31155 | |||
455726f05a | |||
5dc9d729f4 | |||
6d42b93de4 | |||
39b54c41ab | |||
f8920298ee | |||
cc3b37c4c0 | |||
0cdd5a5d88 | |||
b61bc8f5ef | |||
2a6a2ef7a7 | |||
245f69f2d3 | |||
4c43b6f5d5 | |||
28230c914d | |||
f7e1acdb68 | |||
995cd7f327 | |||
1e024c22da | |||
4e853a753f | |||
01547e9a20 | |||
09b2af14fd | |||
f5d06470e4 | |||
c9abfa80f0 | |||
f34ef46dbf | |||
0c30296888 | |||
3fd373ad8c | |||
41091dce25 | |||
0fbaeb0ea4 | |||
19791a5965 | |||
9d4c0aa839 | |||
0b12a952cb | |||
a95aa6e89b | |||
f13c772509 | |||
0f28c4d807 | |||
a649d434c7 | |||
23c5710d42 |
14
.classpath
Normal 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>
|
18
.mtn-ignore
@ -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
@ -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
@ -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
|
||||
|
@ -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
@ -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>
|
111
README.txt
@ -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
@ -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
@ -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
@ -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 |
8232
art/routerled/anim-red-yellow/routerled_ry_1.svg
Normal file
After Width: | Height: | Size: 235 KiB |
8232
art/routerled/anim-red-yellow/routerled_ry_2.svg
Normal file
After Width: | Height: | Size: 250 KiB |
8232
art/routerled/anim-red-yellow/routerled_ry_3.svg
Normal file
After Width: | Height: | Size: 250 KiB |
8232
art/routerled/anim-red-yellow/routerled_ry_4.svg
Normal file
After Width: | Height: | Size: 250 KiB |
8232
art/routerled/anim-red-yellow/routerled_ry_5.svg
Normal file
After Width: | Height: | Size: 250 KiB |
8232
art/routerled/routerled_g.svg
Normal file
After Width: | Height: | Size: 235 KiB |
8236
art/routerled/routerled_r.svg
Normal file
After Width: | Height: | Size: 253 KiB |
8232
art/routerled/routerled_y.svg
Normal file
After Width: | Height: | Size: 235 KiB |
8232
art/routerled/routerlogo_0.svg
Normal file
After Width: | Height: | Size: 235 KiB |
8235
art/routerled/routerlogo_1.svg
Normal file
After Width: | Height: | Size: 236 KiB |
8238
art/routerled/routerlogo_2.svg
Normal file
After Width: | Height: | Size: 237 KiB |
8241
art/routerled/routerlogo_3.svg
Normal file
After Width: | Height: | Size: 238 KiB |
8238
art/routerled/routerlogo_4.svg
Normal file
After Width: | Height: | Size: 248 KiB |
411
build.xml
@ -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
@ -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} my.version.code=${zap.vercode} last.CORE=${CORE} last.ROUTERBUILD=${ROUTERBUILD} "
|
||||
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>
|
100
jni/build.sh
@ -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'
|
BIN
libs/androidplot-core-0.6.0.jar
Normal file
20
proguard-project.txt
Normal 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
@ -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
|
BIN
res/drawable-hdpi/drawer_shadow.9.png
Normal file
After Width: | Height: | Size: 171 B |
BIN
res/drawable-hdpi/ic_action_search.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
res/drawable-hdpi/ic_av_play.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
res/drawable-hdpi/ic_av_stop.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-hdpi/ic_content_discard.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
res/drawable-hdpi/ic_content_edit.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-hdpi/ic_content_new.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-hdpi/ic_drawer.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
res/drawable-hdpi/ic_launcher_itoopie.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
res/drawable-hdpi/ic_navigation_refresh.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
res/drawable-hdpi/ic_stat_router_active.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-hdpi/ic_stat_router_running.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-hdpi/ic_stat_router_shutting_down.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-hdpi/ic_stat_router_starting.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-hdpi/ic_stat_router_stopping.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-hdpi/ic_stat_router_waiting_network.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-mdpi/drawer_shadow.9.png
Normal file
After Width: | Height: | Size: 158 B |
BIN
res/drawable-mdpi/ic_action_search.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
res/drawable-mdpi/ic_av_play.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-mdpi/ic_av_stop.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-mdpi/ic_content_discard.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
res/drawable-mdpi/ic_content_edit.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-mdpi/ic_content_new.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-mdpi/ic_drawer.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
res/drawable-mdpi/ic_launcher_itoopie.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
res/drawable-mdpi/ic_navigation_refresh.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
res/drawable-mdpi/ic_stat_router_active.png
Normal file
After Width: | Height: | Size: 677 B |
BIN
res/drawable-mdpi/ic_stat_router_running.png
Normal file
After Width: | Height: | Size: 735 B |
BIN
res/drawable-mdpi/ic_stat_router_shutting_down.png
Normal file
After Width: | Height: | Size: 719 B |
BIN
res/drawable-mdpi/ic_stat_router_starting.png
Normal file
After Width: | Height: | Size: 722 B |
BIN
res/drawable-mdpi/ic_stat_router_stopping.png
Normal file
After Width: | Height: | Size: 711 B |
BIN
res/drawable-mdpi/ic_stat_router_waiting_network.png
Normal file
After Width: | Height: | Size: 690 B |
BIN
res/drawable-xhdpi/drawer_shadow.9.png
Normal file
After Width: | Height: | Size: 182 B |
BIN
res/drawable-xhdpi/ic_action_search.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
res/drawable-xhdpi/ic_av_play.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
res/drawable-xhdpi/ic_av_stop.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-xhdpi/ic_content_discard.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-xhdpi/ic_content_edit.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
res/drawable-xhdpi/ic_content_new.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-xhdpi/ic_drawer.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-xhdpi/ic_launcher_itoopie.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
res/drawable-xhdpi/ic_navigation_refresh.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_active.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_running.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_shutting_down.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_starting.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_stopping.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-xhdpi/ic_stat_router_waiting_network.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable/client.png
Normal file
After Width: | Height: | Size: 612 B |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.3 KiB |
BIN
res/drawable/local_down.png
Normal file
After Width: | Height: | Size: 563 B |
BIN
res/drawable/local_inprogress.png
Normal file
After Width: | Height: | Size: 597 B |
BIN
res/drawable/local_up.png
Normal file
After Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 60 KiB |
BIN
res/drawable/routerled_g.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
res/drawable/routerled_r.png
Normal file
After Width: | Height: | Size: 44 KiB |
8
res/drawable/routerled_ry.xml
Normal 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>
|
BIN
res/drawable/routerled_ry_1.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
res/drawable/routerled_ry_2.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
res/drawable/routerled_ry_3.png
Normal file
After Width: | Height: | Size: 45 KiB |