Compare commits

...

23 Commits

Author SHA1 Message Date
1127fb0195 Helper library 0.9.2 2017-01-02 12:06:26 +00:00
df81efe6bc Fix height of address book list entries 2017-01-02 10:57:40 +00:00
784ca3691b Collate TODO items 2017-01-02 10:07:26 +00:00
0fa4241ce6 New translations 2017-01-02 09:44:58 +00:00
5063d276de Updated translations 2017-01-02 09:44:39 +00:00
81d0e43f0f Upgrade Android Gradle tools to 2.2.3 2017-01-02 09:42:40 +00:00
1637a9007d Upgrade Android support libraries to 25.0.1 2017-01-02 09:41:58 +00:00
ce0f01cf46 Update I2P dependencies to 0.9.28 2017-01-02 09:35:15 +00:00
dd579d4f5b 0.9.27 2016-11-20 07:12:16 +00:00
5703d8cc6d Updated translations 2016-11-20 06:06:09 +00:00
b8768ae9fe Helper library 0.9.1 2016-11-20 05:50:53 +00:00
54dc2c88bf Make it easier to test helper library against debug I2P Android builds 2016-11-20 05:50:35 +00:00
dba01b8c18 Remove debugging lines 2016-11-20 00:18:34 +00:00
b7b3eb7019 Refactor libraries:
- Remove client library dependency on helper library
- Separate client and helper library versions             
- Bump client library version to track I2P library version
2016-11-20 00:00:03 +00:00
430e2ab826 Remove kytv's IRC server from default tunnel list 2016-11-12 19:27:39 +00:00
87383a2ec8 Upgrade Espresso to 2.2.2, update tests 2016-11-12 19:19:38 +00:00
f63bfe1dea Bump build tools to 25.0.0 2016-11-08 06:45:08 +00:00
ff2021c0aa Upgrade Android support libraries to 25.0.0 2016-11-08 06:20:05 +00:00
51f7e07080 Remove unnecessary dependency from client library 2016-11-08 06:02:07 +00:00
7797e067a5 Upgrade I2P dependencies to 0.9.27
The router JAR is now fetched instead of built locally
2016-11-08 05:52:40 +00:00
cf09a21f1e Upgrade Android Gradle plugin 2016-11-08 05:51:40 +00:00
914294927d Updated CHANGELOG 2016-06-13 13:12:50 +00:00
bd0455c413 0.9.26 2016-06-13 13:12:28 +00:00
22 changed files with 105 additions and 85 deletions

View File

@ -1,6 +1,11 @@
0.9.26 0.9.27 / 2016-11-20
* Removed kytv's IRC server from default tunnel list
* Translation updates
0.9.26 / 2016-06-13 / b003272c8b504bb0d904edca2e95359a57c9a52c
* Fixed "I2CP already listening" bug * Fixed "I2CP already listening" bug
* Fixed crash when adding tunnel to empty list * Fixed crash when adding tunnel to empty list
* Translation updates
0.9.25 / 2016-04-17 / 46d45a878a2b73394b26ca27dbe6c696dedcf1c3 0.9.25 / 2016-04-17 / 46d45a878a2b73394b26ca27dbe6c696dedcf1c3
* Fixed a bug on Samsung Android 4.2 devices * Fixed a bug on Samsung Android 4.2 devices

25
TODO
View File

@ -19,38 +19,61 @@
- Style for addressbook headers - Style for addressbook headers
- Change console FAM icon when possible - Change console FAM icon when possible
<zzz> on the bottom right, the + and x icons might be better as a double-up arrow and double-down arrow? <zzz> on the bottom right, the + and x icons might be better as a double-up arrow and double-down arrow?
- Use Material design for LongPressButton
- Highlight selected tunnel in two-pane mode
# Short-term # Short-term
- Remove peers page (HTML version)
- Add firewall help page showing current port settings
- GMP 6
- Fetch all JARs from Maven Central (ie. upload everything that I2P Android uses)
- Disable uPnP when on cell networks - Disable uPnP when on cell networks
<zzz> spewing UPnP out into cell networks is a waste of time at best and a security risk at worst, but you really want it for wifi <zzz> spewing UPnP out into cell networks is a waste of time at best and a security risk at worst, but you really want it for wifi
- Rewrite settings config handling
- Rewrite InitActivities
- I2PTunnel - I2PTunnel
- Improve tunnel list status indicators - Improve tunnel list status indicators
- Icon overlay to indicate which tunnels are shared
- Or reorder / group tunnels?
- Show all messages somewhere - Show all messages somewhere
- Bottom toolbar?
- Icons/header images for tunnel types on details page - Icons/header images for tunnel types on details page
- Setting to close when not on WiFi
- Progress feedback for addressbook subscriptions reload - Progress feedback for addressbook subscriptions reload
- Display release notes directly on new router version - Display release notes directly on new router version
- Fill out help pages - Fill out help pages
- Fix navigation to specific settings pages
- Rewrite release notes to be release-specific - Rewrite release notes to be release-specific
- Fix release notes UI, either make back button use clear or add buttons - Fix release notes UI, either make back button use clear or add buttons
- Notify user when autostart fails?
- NetDB tablet view fixes - NetDB tablet view fixes
- Refresh detail fragment when changing tab - Refresh detail fragment when changing tab
- Move list to correct item when changing tab - Move list to correct item when changing tab
- Create nav history when viewing RI from LS - Create nav history when viewing RI from LS
- Handle NetDB null cases (failed lookup of requested hash in detail page)
- Include GeoIP db for country info - Include GeoIP db for country info
- Maybe change router-off mechanic for various pages? Enable as they become available? - Maybe change router-off mechanic for various pages? Enable as they become available?
# Medium-term # Medium-term
- SQLite naming service backend to store addresses more effectively
- Leverage for name completion in e.g. browsers
- Create/edit tunnels while router is not running
- Separate out shared tunnel config
- Convey to users that one config controls all shared tunnels
- Network profiles - Network profiles
- User selects profile in settings - User selects profile in settings
- Change network participation etc. based on profile - Change network participation etc. based on profile
- Also look at connection type: Connectivity.isConnectionFast() - Also look at connection type: Connectivity.isConnectionFast()
- Expose log level overrides - Expose log level overrides
- Bug report feature
- Replace peers page (native version)
- Improve graphs - Improve graphs
- Show fixed x range, not only available data - Show fixed x range, not only available data
- Think about pan/zoom - Think about pan/zoom
- How to persist data across restarts? - How to persist data across restarts?
- Enable apps to specify when they don't need the router anymore
# Silent Store approval checks to confirm/implement # Silent Store approval checks to confirm/implement
@ -98,6 +121,8 @@
# Long-term # Long-term
- Reproducible builds
- Extract RouterService into a library
- Remote router support - Remote router support
- Implement a "router wrapper" that can represent a local or remote router - Implement a "router wrapper" that can represent a local or remote router
- Implement/use client APIs to talk to remote router - Implement/use client APIs to talk to remote router

View File

@ -5,8 +5,8 @@ android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String) compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION as String buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION as String
defaultConfig { defaultConfig {
versionCode 4745232 versionCode 4745234
versionName '0.9.25' versionName '0.9.27'
minSdkVersion 9 minSdkVersion 9
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
@ -53,10 +53,11 @@ android {
dependencies { dependencies {
// Local dependencies // Local dependencies
compile project(':lib:client') compile project(':lib:client')
compile project(':lib:helper')
compile project(':routerjars') compile project(':routerjars')
// Android Support Repository dependencies // Android Support Repository dependencies
def supportVersion = '23.4.0' def supportVersion = '25.0.1'
compile "com.android.support:support-v4:$supportVersion" compile "com.android.support:support-v4:$supportVersion"
compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:appcompat-v7:$supportVersion"
compile "com.android.support:preference-v7:$supportVersion" compile "com.android.support:preference-v7:$supportVersion"
@ -70,25 +71,26 @@ dependencies {
exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-v4'
} }
compile 'com.pnikosis:materialish-progress:1.7' compile 'com.pnikosis:materialish-progress:1.7'
compile 'net.i2p:router:0.9.28'
compile 'net.i2p.android.ext:floatingactionbutton:1.10.1' compile 'net.i2p.android.ext:floatingactionbutton:1.10.1'
compile 'org.sufficientlysecure:html-textview:1.6' compile 'org.sufficientlysecure:html-textview:1.6'
// Testing-only dependencies // Testing-only dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
} }
dependencyVerification { dependencyVerification {
verify = [ verify = [
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a', 'com.android.support:support-v4:50da261acc4ca3d2dea9a43106bf65488711ca97b20a4daa095dba381c205c98',
'com.android.support:appcompat-v7:d3d96637b0e8e61046567b8c87b667dcf3cd31c7447f651cb58d6e6e744adfba', 'com.android.support:appcompat-v7:7fead560a22ea4b15848ce3000f312ef611fac0953bf90ca8710a72a1f6e36ea',
'com.android.support:preference-v7:b834787ee64db6c7c53ed7490537eeef52245b7862d4069c06e12b24b77ebbc4', 'com.android.support:preference-v7:d7e3fcb6d5427aa25bfd56c51c24786dbb6f06d998b8b6691e9449e1b11cc205',
'com.android.support:preference-v14:21c55edf74928a96fa816e32c0c4d0c98e2280002e84d2b10b458b4a36be9615', 'com.android.support:preference-v14:9d0269913033d97d8edb29003e1ea19021f2e8f36df4035f819bb948f9a23ed2',
'com.android.support:recyclerview-v7:24465b2ba90dc5ed7e2c05f1c87fe4256c27df6d3cd69b6177f3cb447b05c021', 'com.android.support:recyclerview-v7:803baba7be537ace8c5cb8a775e37547c22a04c4b028833796c45c26ec1deca2',
'com.androidplot:androidplot-core:e44d9e59e06f025330831f7d3c987d2778a3302025184cf0cef05714b5171212', 'com.androidplot:androidplot-core:e44d9e59e06f025330831f7d3c987d2778a3302025184cf0cef05714b5171212',
'com.eowise:recyclerview-stickyheaders:7b236da49b33b840e9ba6e7e4182218d1a2d9047236fdbc3ca947352f9b0883b', 'com.eowise:recyclerview-stickyheaders:7b236da49b33b840e9ba6e7e4182218d1a2d9047236fdbc3ca947352f9b0883b',
'com.mcxiaoke.viewpagerindicator:library:1e8aad664137f68abdfee94889f6da3dc98be652a235176a403965a07a25de62', 'com.mcxiaoke.viewpagerindicator:library:1e8aad664137f68abdfee94889f6da3dc98be652a235176a403965a07a25de62',
'com.pnikosis:materialish-progress:da089a90d1dab61e9b50038c09081019398f81190d12b0b567ce94b83ef8cf93', 'com.pnikosis:materialish-progress:da089a90d1dab61e9b50038c09081019398f81190d12b0b567ce94b83ef8cf93',
'net.i2p:router:de3cf0a0e99823662c938d6a1083f201f8feba7d0ebebaf3179fed7040863b7c',
'net.i2p.android.ext:floatingactionbutton:09d43e2d4ac04a91bf7a37e1ec48a8d220204e3a55dca72cd36cd9fa27461ade', 'net.i2p.android.ext:floatingactionbutton:09d43e2d4ac04a91bf7a37e1ec48a8d220204e3a55dca72cd36cd9fa27461ade',
'org.sufficientlysecure:html-textview:c409b471618b675e3d2a8588f883c5fe8f3369d00df61ec84b29f29c648370ae', 'org.sufficientlysecure:html-textview:c409b471618b675e3d2a8588f883c5fe8f3369d00df61ec84b29f29c648370ae',
] ]

View File

@ -16,6 +16,7 @@ import static android.support.test.espresso.matcher.ViewMatchers.hasSibling;
import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA; import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withParent;
import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.not;
@ -57,13 +58,13 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
public void testMainSwipe() { public void testMainSwipe() {
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed())); onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
onView(allOf(withId(R.id.pager), hasSibling(withId(R.id.main_toolbar)))).perform(swipeLeft()); onView(allOf(withId(R.id.pager), withParent(hasSibling(withId(R.id.main_toolbar))))).perform(swipeLeft());
onView(withId(R.id.router_onoff_button)).check(matches(not(isDisplayed()))); onView(withId(R.id.router_onoff_button)).check(matches(not(isDisplayed())));
onView(withText(R.string.label_i2ptunnel_client)).check(matches(isDisplayed())); onView(withText(R.string.label_i2ptunnel_client)).check(matches(isDisplayed()));
onView(allOf(withId(R.id.pager), hasSibling(withId(R.id.main_toolbar)))).perform(swipeLeft()); onView(allOf(withId(R.id.pager), withParent(hasSibling(withId(R.id.main_toolbar))))).perform(swipeLeft());
// TODO: test tunnels ViewPager // TODO: test tunnels ViewPager
onView(allOf(withId(R.id.pager), hasSibling(withId(R.id.main_toolbar)))).perform(swipeLeft()); onView(allOf(withId(R.id.pager), withParent(hasSibling(withId(R.id.main_toolbar))))).perform(swipeLeft());
onView(withText(R.string.label_i2ptunnel_client)).check(matches(not(isDisplayed()))); onView(withText(R.string.label_i2ptunnel_client)).check(matches(not(isDisplayed())));
onView(withText(R.string.label_router)).check(matches(isDisplayed())); onView(withText(R.string.label_router)).check(matches(isDisplayed()));
// TODO: test addressbook ViewPager // TODO: test addressbook ViewPager

View File

@ -208,7 +208,7 @@ public class TunnelDetailFragment extends Fragment {
} }
} }
}) })
.setNegativeButton(net.i2p.android.lib.client.R.string.no, new DialogInterface.OnClickListener() { .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) { public void onClick(DialogInterface dialogInterface, int i) {
} }
}); });

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent"> android:layout_height="@dimen/listitem_height_one_line">
<TextView <TextView
android:id="@+id/host_name" android:id="@+id/host_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/listitem_height_one_line" android:layout_height="match_parent"
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingEnd="@dimen/listitem_horizontal_margin" android:paddingEnd="@dimen/listitem_horizontal_margin"
android:paddingLeft="@dimen/listitem_horizontal_margin" android:paddingLeft="@dimen/listitem_horizontal_margin"

View File

@ -125,28 +125,3 @@ tunnel.4.option.outbound.length=2
tunnel.4.option.outbound.lengthVariance=0 tunnel.4.option.outbound.lengthVariance=0
tunnel.4.option.outbound.priority=15 tunnel.4.option.outbound.priority=15
tunnel.4.startOnLoad=true tunnel.4.startOnLoad=true
# irc irc.killyourtv.i2p
tunnel.5.name=KYTV IRC
tunnel.5.description=IRC tunnel to KillYourTV's network
tunnel.5.type=ircclient
tunnel.5.sharedClient=true
tunnel.5.interface=127.0.0.1
tunnel.5.listenPort=6670
tunnel.5.targetDestination=irc.killyourtv.i2p
tunnel.5.i2cpHost=127.0.0.1
tunnel.5.i2cpPort=7654
tunnel.5.option.inbound.nickname=shared clients
tunnel.5.option.outbound.nickname=shared clients
tunnel.5.option.i2cp.delayOpen=true
tunnel.5.option.i2cp.reduceIdleTime=600000
tunnel.5.option.i2cp.reduceOnIdle=true
tunnel.5.option.i2cp.reduceQuantity=1
tunnel.5.option.i2p.streaming.connectDelay=1000
tunnel.5.option.i2p.streaming.maxWindowSize=16
tunnel.5.option.inbound.length=2
tunnel.5.option.inbound.lengthVariance=0
tunnel.5.option.outbound.length=2
tunnel.5.option.outbound.lengthVariance=0
tunnel.5.option.outbound.priority=15
tunnel.5.startOnLoad=true

View File

@ -329,8 +329,8 @@
<string name="tunnel_summ_proxy_auth">Login nécessaire pour utiliser ce proxy</string> <string name="tunnel_summ_proxy_auth">Login nécessaire pour utiliser ce proxy</string>
<string name="username">Utilisateur</string> <string name="username">Utilisateur</string>
<string name="password">Mot de passe</string> <string name="password">Mot de passe</string>
<string name="outproxy_auth">Autorisation outproxy</string> <string name="outproxy_auth">Autorisation proxy sortant</string>
<string name="tunnel_summ_outproxy_auth">Login requis pour le outproxy</string> <string name="tunnel_summ_outproxy_auth">Identification requise pour le proxy sortant</string>
<string name="other">Autre</string> <string name="other">Autre</string>
<string name="signature_type">Type de signature</string> <string name="signature_type">Type de signature</string>
<string name="custom_options">Options personnalisées</string> <string name="custom_options">Options personnalisées</string>

View File

@ -249,7 +249,7 @@ Var god läs release kommentarerna och licens-information.</string>
<string name="auto_start">Auto-start</string> <string name="auto_start">Auto-start</string>
<string name="tunnel_summ_auto_start">Start tunneln när routern startar.</string> <string name="tunnel_summ_auto_start">Start tunneln när routern startar.</string>
<string name="tunnel_cat_ports">Lokala portar</string> <string name="tunnel_cat_ports">Lokala portar</string>
<string name="shared_client">Delade klienter</string> <string name="shared_client">Delad klient</string>
<string name="tunnel_summ_shared_client">Använd samma Destination och tunnlar som andra klienter</string> <string name="tunnel_summ_shared_client">Använd samma Destination och tunnlar som andra klienter</string>
<string name="target_destination">Måldestination</string> <string name="target_destination">Måldestination</string>
<string name="persistent_key">Beständig nyckel</string> <string name="persistent_key">Beständig nyckel</string>

View File

@ -3,7 +3,7 @@
<string name="app_name">I2P</string> <string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P logosu</string> <string name="desc_i2p_logo">I2P logosu</string>
<string name="choose_language">Dil seçin</string> <string name="choose_language">Dil seçin</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve yaygın olarak herkese açılmamıştır. Lütfen notları ve lisans bilgilerini okuyun.</string> <string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir isimsiz kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_version">Yeni sürüm yüklendi. Lütfen yayım notlarını okuyun. Sürüm:</string> <string name="welcome_new_version">Yeni sürüm yüklendi. Lütfen yayım notlarını okuyun. Sürüm:</string>
<string name="label_tunnels">Tüneller</string> <string name="label_tunnels">Tüneller</string>
<string name="label_status">Durum</string> <string name="label_status">Durum</string>
@ -59,7 +59,7 @@
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string> <string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string> <string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string> <string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız anonim olmayan şu bağlantıyı kullanın:</string> <string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız isimsiz olmayan şu bağlantıyı kullanın:</string>
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string> <string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
<string name="action_search">Arama</string> <string name="action_search">Arama</string>
<string name="action_add">Ekle</string> <string name="action_add">Ekle</string>
@ -213,7 +213,7 @@
<string name="i2ptunnel_wizard_k_client_server">İstemci ya da Sunucu</string> <string name="i2ptunnel_wizard_k_client_server">İstemci ya da Sunucu</string>
<string name="i2ptunnel_wizard_v_client">İstemci tüneli</string> <string name="i2ptunnel_wizard_v_client">İstemci tüneli</string>
<string name="i2ptunnel_wizard_v_server">Sunucu tüneli</string> <string name="i2ptunnel_wizard_v_server">Sunucu tüneli</string>
<string name="i2ptunnel_wizard_k_type">Tünel tipi</string> <string name="i2ptunnel_wizard_k_type">Tünel türü</string>
<string name="i2ptunnel_wizard_k_name">Ad</string> <string name="i2ptunnel_wizard_k_name">Ad</string>
<string name="i2ptunnel_wizard_k_desc">ıklama</string> <string name="i2ptunnel_wizard_k_desc">ıklama</string>
<string name="i2ptunnel_wizard_k_dest">Hedef</string> <string name="i2ptunnel_wizard_k_dest">Hedef</string>
@ -231,7 +231,7 @@
<string name="i2ptunnel_wizard_desc_name">Tünel listesinde görüntülenecek tünel adı.</string> <string name="i2ptunnel_wizard_desc_name">Tünel listesinde görüntülenecek tünel adı.</string>
<string name="i2ptunnel_wizard_desc_desc">İsteğe bağlı olarak yazılabilecek tünel açıklaması.</string> <string name="i2ptunnel_wizard_desc_desc">İsteğe bağlı olarak yazılabilecek tünel açıklaması.</string>
<string name="i2ptunnel_wizard_desc_dest">Bu istemci tünelinin bağlanacağı hizmetin I2P hedefini yazın. Tam Base 64 hedef anahtarı ya da adres defterinizden bir sunucu adı olabilir.</string> <string name="i2ptunnel_wizard_desc_dest">Bu istemci tünelinin bağlanacağı hizmetin I2P hedefini yazın. Tam Base 64 hedef anahtarı ya da adres defterinizden bir sunucu adı olabilir.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Bu tünel tipi için bildiğiniz çıkış sunucuları varsa (HTTP ya da SOCKS) buraya virgül ile ayırarak yazın. </string> <string name="i2ptunnel_wizard_desc_outproxies">Bu tünel türü için bildiğiniz çıkış sunucuları varsa (HTTP ya da SOCKS) buraya virgül ile ayırarak yazın. </string>
<string name="i2ptunnel_wizard_desc_target_host">Çalıştırdığınız hizmetin IP adresi. Genellikle aynı bilgisayarda olduğundan otomatik olarak 127.0.0.1 yazılır.</string> <string name="i2ptunnel_wizard_desc_target_host">Çalıştırdığınız hizmetin IP adresi. Genellikle aynı bilgisayarda olduğundan otomatik olarak 127.0.0.1 yazılır.</string>
<string name="i2ptunnel_wizard_desc_target_port">Hizmetin bağlantıları kabul edeceği kapı numarası.</string> <string name="i2ptunnel_wizard_desc_target_port">Hizmetin bağlantıları kabul edeceği kapı numarası.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Bu seçenek bu tünele erişebilecek bilgisayar ve akıllı telefonları sınırlar.</string> <string name="i2ptunnel_wizard_desc_reachable_on">Bu seçenek bu tünele erişebilecek bilgisayar ve akıllı telefonları sınırlar.</string>
@ -332,7 +332,7 @@
<string name="outproxy_auth">Giden vekil sunucu kimlik doğrulaması</string> <string name="outproxy_auth">Giden vekil sunucu kimlik doğrulaması</string>
<string name="tunnel_summ_outproxy_auth">Giden vekil sunucu için oturum açılması gerekiyor</string> <string name="tunnel_summ_outproxy_auth">Giden vekil sunucu için oturum açılması gerekiyor</string>
<string name="other">Diğer</string> <string name="other">Diğer</string>
<string name="signature_type">İmza tipi</string> <string name="signature_type">İmza türü</string>
<string name="custom_options">Uyarlanmış seçenekler</string> <string name="custom_options">Uyarlanmış seçenekler</string>
<string name="all">Tümü</string> <string name="all">Tümü</string>
<string name="no_messages">Henüz bir ileti yok</string> <string name="no_messages">Henüz bir ileti yok</string>

View File

@ -3,16 +3,19 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.android.tools.build:gradle:2.2.3'
classpath files('gradle/libs/gradle-witness.jar') classpath files('gradle/libs/gradle-witness.jar')
} }
} }
allprojects { allprojects {
version = VERSION_NAME
group = GROUP group = GROUP
repositories { repositories {
jcenter() jcenter()
} }
} }
configure(project(':lib').subprojects) {
version = VERSION_NAME
}

View File

@ -1,4 +1,3 @@
VERSION_NAME=0.9
GROUP=net.i2p.android GROUP=net.i2p.android
POM_URL=https://github.com/i2p/i2p.android.base POM_URL=https://github.com/i2p/i2p.android.base
@ -13,5 +12,5 @@ POM_DEVELOPER_NAME=str4d
POM_DEVELOPER_EMAIL=str4d@i2pmail.org POM_DEVELOPER_EMAIL=str4d@i2pmail.org
ANDROID_BUILD_TARGET_SDK_VERSION=22 ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=23.0.1 ANDROID_BUILD_TOOLS_VERSION=25.0.0
ANDROID_BUILD_SDK_VERSION=23 ANDROID_BUILD_SDK_VERSION=25

View File

@ -1,6 +1,6 @@
#Mon May 02 16:55:47 NZST 2016 #Sun Nov 06 10:33:19 CST 2016
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

View File

@ -25,11 +25,8 @@ android {
} }
dependencies { dependencies {
compile 'net.i2p:i2p:0.9.26' compile "net.i2p:i2p:$VERSION_NAME"
compile 'net.i2p.client:streaming:0.9.26' compile "net.i2p.client:streaming:$VERSION_NAME"
// No direct dependencies on the helper lib, but this ensures consistent library behavior
compile project(':lib:helper')
compile 'com.android.support:support-v4:23.4.0'
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'org.mockito:mockito-core:1.9.5'
@ -37,10 +34,9 @@ dependencies {
dependencyVerification { dependencyVerification {
verify = [ verify = [
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a', 'net.i2p:i2p:c9629c90341fd274516813e57f71a3c1ff5021ffc4999eec97ff2863cb57612e',
'net.i2p:i2p:5e0f5efa8849e2abe72efaf1530bdf4a090717d49acfdfbe92911a14d4b4e511', 'net.i2p.client:mstreaming:8e656e4c782886a33e7a4245acc0d5c8ab1e461164576eaec4b2fbc52ef6f4eb',
'net.i2p.client:mstreaming:1f343a640f79707f6652bbf344f65b42215ae3f7a221a3ee8ddd70ff59e812ae', 'net.i2p.client:streaming:ee04fbbeb6525fa086a275c71d533f967c99f54118acf267bf0291bbe85f5cc5',
'net.i2p.client:streaming:5add7390de089f3c3c4f4005f0daa83014418416e890ed6c475e15cef51ba3c7',
] ]
} }

View File

@ -1,3 +1,5 @@
VERSION_NAME=0.9.28
POM_NAME=I2P Android client library POM_NAME=I2P Android client library
POM_DESCRIPTION=A client library enabling Android developers to add native I2P support to their apps. POM_DESCRIPTION=A client library enabling Android developers to add native I2P support to their apps.
POM_ARTIFACT_ID=client POM_ARTIFACT_ID=client

View File

@ -73,9 +73,7 @@ class DomainServerSocket extends ServerSocket {
*/ */
@Override @Override
public void close() throws IOException { public void close() throws IOException {
mDomainSocketFactory._log.debug("Closing DomainServerSocket");
mLocalServerSocket.close(); mLocalServerSocket.close();
mDomainSocketFactory._log.debug("DomainServerSocket closed");
mClosed = true; mClosed = true;
} }

View File

@ -25,7 +25,7 @@ android {
} }
dependencies { dependencies {
compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:support-v4:25.0.1'
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5' testCompile 'org.mockito:mockito-core:1.9.5'
@ -33,7 +33,7 @@ dependencies {
dependencyVerification { dependencyVerification {
verify = [ verify = [
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a', 'com.android.support:support-v4:50da261acc4ca3d2dea9a43106bf65488711ca97b20a4daa095dba381c205c98',
] ]
} }

View File

@ -1,3 +1,5 @@
VERSION_NAME=0.9.2
POM_NAME=I2P Android helper library POM_NAME=I2P Android helper library
POM_DESCRIPTION=A helper library enabling Android developers to easily add I2P Android support to their apps. POM_DESCRIPTION=A helper library enabling Android developers to easily add I2P Android support to their apps.
POM_ARTIFACT_ID=helper POM_ARTIFACT_ID=helper

View File

@ -38,12 +38,22 @@ public class I2PAndroidHelper {
} }
private final Context mContext; private final Context mContext;
private final boolean mUseDebug;
private boolean mTriedBindState; private boolean mTriedBindState;
private IRouterState mStateService; private IRouterState mStateService;
private Callback mCallback; private Callback mCallback;
public I2PAndroidHelper(Context context) { public I2PAndroidHelper(Context context) {
mContext = context; mContext = context;
mUseDebug = false;
}
/**
* @param useDebug Enable usage against debug builds of I2P Android.
*/
public I2PAndroidHelper(Context context, boolean useDebug) {
mContext = context;
mUseDebug = useDebug;
} }
/** /**
@ -124,11 +134,12 @@ public class I2PAndroidHelper {
intent.setClassName(URI_I2P_ANDROID_DONATE, ROUTER_SERVICE_CLASS); intent.setClassName(URI_I2P_ANDROID_DONATE, ROUTER_SERVICE_CLASS);
else if (isAppInstalled(URI_I2P_ANDROID_LEGACY)) else if (isAppInstalled(URI_I2P_ANDROID_LEGACY))
intent.setClassName(URI_I2P_ANDROID_LEGACY, ROUTER_SERVICE_CLASS); intent.setClassName(URI_I2P_ANDROID_LEGACY, ROUTER_SERVICE_CLASS);
else if (isAppInstalled(URI_I2P_ANDROID_DEBUG)) { else
intent = null;
if (mUseDebug && isAppInstalled(URI_I2P_ANDROID_DEBUG)) {
Log.w(LOG_TAG, "Using debug build of I2P Android"); Log.w(LOG_TAG, "Using debug build of I2P Android");
intent.setClassName(URI_I2P_ANDROID_DEBUG, ROUTER_SERVICE_CLASS); intent.setClassName(URI_I2P_ANDROID_DEBUG, ROUTER_SERVICE_CLASS);
} else }
intent = null;
return intent; return intent;
} }
@ -166,7 +177,8 @@ public class I2PAndroidHelper {
* @return true if I2P Android is installed, false otherwise. * @return true if I2P Android is installed, false otherwise.
*/ */
public boolean isI2PAndroidInstalled() { public boolean isI2PAndroidInstalled() {
return isAppInstalled(URI_I2P_ANDROID) || return (mUseDebug && isAppInstalled(URI_I2P_ANDROID_DEBUG)) ||
isAppInstalled(URI_I2P_ANDROID) ||
isAppInstalled(URI_I2P_ANDROID_DONATE) || isAppInstalled(URI_I2P_ANDROID_DONATE) ||
isAppInstalled(URI_I2P_ANDROID_LEGACY); isAppInstalled(URI_I2P_ANDROID_LEGACY);
} }

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Si</string>
<string name="no">Non</string>
<string name="install_i2p_android">Instalar I2P Android?</string>
<string name="you_must_have_i2p_android">É preciso que teñas I2P Android instalado e funcionando. Queres instalalo?</string>
<string name="start_i2p_android">Lanzar I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">Semella que I2P Android non está a correr. Desexar lanzalo?</string>
</resources>

View File

@ -8,7 +8,6 @@ task buildRouter(type: Exec) {
// TODO an empty routerjars.jar is added to the classpath // TODO an empty routerjars.jar is added to the classpath
artifacts { artifacts {
'default' file: file('libs/router.jar'), builtBy: buildRouter
'default' file: file('libs/newsxml.jar'), builtBy: buildRouter 'default' file: file('libs/newsxml.jar'), builtBy: buildRouter
'default' file: file('libs/i2ptunnel.jar'), builtBy: buildRouter 'default' file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
'default' file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter 'default' file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter

View File

@ -17,16 +17,11 @@
<echo message="Using I2P source at ${i2pbase}" /> <echo message="Using I2P source at ${i2pbase}" />
<property name="i2plib" location="${i2pbase}/build" /> <property name="i2plib" location="${i2pbase}/build" />
<available property="have.router" file="${i2plib}/router.jar" />
<available property="have.bob" file="${i2plib}/BOB.jar" /> <available property="have.bob" file="${i2plib}/BOB.jar" />
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" /> <available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" /> <available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
<available property="have.addressbook" file="${i2plib}/addressbook.jar" /> <available property="have.addressbook" file="${i2plib}/addressbook.jar" />
<target name="buildRouter" unless="have.router">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildRouter" />
</target>
<target name="buildNewsXMLJar" unless="have.newsxml"> <target name="buildNewsXMLJar" unless="have.newsxml">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildNewsXMLJar" /> <ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildNewsXMLJar" />
</target> </target>
@ -41,12 +36,9 @@
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" /> <ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
</target> </target>
<target name="buildrouter" depends="buildRouter, buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildBOB"> <target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildBOB">
<mkdir dir="${jar.libs.dir}" /> <mkdir dir="${jar.libs.dir}" />
<!-- router -->
<copy file="${i2plib}/router.jar" todir="${jar.libs.dir}" />
<!-- newsxml --> <!-- newsxml -->
<copy file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" todir="${jar.libs.dir}" /> <copy file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" todir="${jar.libs.dir}" />