Compare commits

...

22 Commits

Author SHA1 Message Date
eyedeekay
ddddaddb21 update android version and increment version code 2025-09-17 12:52:09 -04:00
eyedeekay
d94bfe7cb9 fix magicindicator so that the viewpager for tunnel in portrait mode expands correctly 2025-09-17 12:24:18 -04:00
eyedeekay
c433e6f194 fix graphs by adding new required dimensions 2025-09-17 11:46:33 -04:00
eyedeekay
fffa14ad0f Fix compatibility crash when inflating preferences on all platforms 2025-09-16 13:34:12 -04:00
eyedeekay
15f5b76802 likely fix for obscure Android 13 crash 2025-09-14 13:25:28 -04:00
eyedeekay
030b1eba03 upgrade Gradle plugin 2025-09-10 21:50:07 -04:00
eyedeekay
29bf07fe6d increase minsdk, increment version code 2025-09-10 21:28:49 -04:00
eyedeekay
0e1fc12150 increment version code 2025-09-10 21:23:32 -04:00
eyedeekay
699be817d5 fixup merge conflict 2025-09-10 21:22:51 -04:00
eyedeekay
94c9762e83 update translations, release 2.10.0 2025-09-10 21:19:44 -04:00
eyedeekay
50f34148c0 check in 2.9.0 version number change 2025-09-10 21:07:53 -04:00
idk
f2d8ae73d1 Update sync.yaml
Some checks failed
Java CI / build (push) Has been cancelled
Java CI / trunk (push) Has been cancelled
Java Signed CI / build-signed (push) Has been cancelled
Java Signed CI / trunk-signed (push) Has been cancelled
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled
2025-07-17 23:09:09 +00:00
eyedeekay
f2b8b0950a Merge branch 'master' of i2pgit.org:I2P_Developers/i2p.android.base
Some checks failed
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled
Java CI / build (push) Has been cancelled
Java CI / trunk (push) Has been cancelled
Java Signed CI / build-signed (push) Has been cancelled
Java Signed CI / trunk-signed (push) Has been cancelled
2025-06-03 13:25:01 -04:00
eyedeekay
fa668711bf Release I2P 2.9.0
Some checks failed
Java CI / build (push) Has been cancelled
Java CI / trunk (push) Has been cancelled
Release / build (push) Has been cancelled
Java Signed CI / build-signed (push) Has been cancelled
Java Signed CI / trunk-signed (push) Has been cancelled
2025-06-03 13:16:20 -04:00
eyedeekay
f06e0e1ca8 Add github sync for i2p.android.base
Some checks failed
Java CI / build (push) Failing after 3s
Java CI / trunk (push) Failing after 4s
Java Signed CI / build-signed (push) Failing after 3s
Java Signed CI / trunk-signed (push) Failing after 3s
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled
2025-05-10 18:51:17 -04:00
eyedeekay
d25aa29fee disable git sync job
Some checks failed
Java CI / build (push) Has been cancelled
Java CI / trunk (push) Has been cancelled
Java Signed CI / build-signed (push) Has been cancelled
Java Signed CI / trunk-signed (push) Has been cancelled
2025-04-27 00:11:30 -04:00
eyedeekay
48d9afea41 tag new version 2025-04-19 11:06:46 -04:00
eyedeekay
da4ed503c8 add magicindicator license 2025-03-21 18:18:32 -04:00
eyedeekay
78a0a2b5f4 bump test 2025-03-18 14:47:24 -04:00
eyedeekay
42202cc4d2 Fix exploratory tunnel fragment crash 2025-03-18 14:22:46 -04:00
eyedeekay
49f4562bf7 Revert "force it into landscape mode for now until I can fix tunnel display in portrait mode"
This reverts commit 96bb2cf161.
2025-03-18 14:08:13 -04:00
eyedeekay
ca6031ab47 update changelog 2025-03-18 14:06:58 -04:00
36 changed files with 237 additions and 110 deletions

View File

@@ -1,22 +0,0 @@
# File: .github/workflows/github-sync.yml for i2p-hackers/i2p.android.base
on:
schedule:
- cron: "*/5 * * * *"
workflow_dispatch:
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: repo-sync
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: repo-sync/github-sync@v2
with:
source_repo: "https://i2pgit.org/i2p-hackers/i2p.android.base"
source_branch: "master"
destination_branch: "master"
github_token: ${{ secrets.PAT }}

66
.github/workflows/sync.yaml vendored Normal file
View File

@@ -0,0 +1,66 @@
# GitHub Actions workflow file to sync an external repository to this GitHub mirror.
# This file was automatically generated by go-github-sync.
#
# The workflow does the following:
# - Runs on a scheduled basis (and can also be triggered manually)
# - Clones the GitHub mirror repository
# - Fetches changes from the primary external repository
# - Applies those changes to the mirror repository
# - Pushes the updated content back to the GitHub mirror
#
# Authentication is handled by the GITHUB_TOKEN secret provided by GitHub Actions.
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Validate Github Actions Environment
run: if [ "$GITHUB_ACTIONS" != "true" ]; then echo 'This script must be run in a GitHub Actions environment.'; exit 1; fi
- name: Checkout GitHub Mirror
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure Git
run: |-
git config user.name 'GitHub Actions'
git config user.email 'actions@github.com'
- env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Sync Primary Repository
run: |-
# Add the primary repository as a remote
git remote add primary https://i2pgit.org/I2P_Developers/i2p.android.base.git
# Fetch the latest changes from the primary repository
git fetch primary
# Check if the primary branch exists in the primary repository
if git ls-remote --heads primary master | grep -q master; then
echo "Primary branch master found in primary repository"
else
echo "Error: Primary branch master not found in primary repository"
exit 1
fi
# Check if we're already on the mirror branch
if git rev-parse --verify --quiet master; then
git checkout master
else
# Create the mirror branch if it doesn't exist
git checkout -b master
fi
# Force-apply all changes from primary, overriding any conflicts
echo "Performing force sync from primary/master to master"
git reset --hard primary/master
# Push changes back to the mirror repository
git push origin master
name: Sync Primary Repository to GitHub Mirror
"on":
push: {}
schedule:
- cron: 0 0 * * *
workflow_dispatch: {}

View File

@@ -1,3 +1,24 @@
2.9.0
* Update I2P Library
2.8.0
* Update I2P Library
* Migrate to AndroidX
* Migrate to MagicIndicator
2.7.1
* Update I2P Library
* Roll back ViewPageIndicator version, fixes crash, causes other issues
2.7.0
* Update I2P Library
2.6.0
* Update I2P Library
2.5.0
* Update I2P Library
2.4.0
* Update I2P Library

View File

@@ -43,8 +43,34 @@ License for the Android App:
See the License for the specific language governing permissions and
limitations under the License.
See the file licenses/LICENSE-Apache2.0.txt
===================================
License for the MagicIndicator library:
MIT License
Copyright (c) 2016 hackware1993
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
===================================
See the file licenses/LICENSE-Apache2.0.txt

View File

@@ -9,6 +9,9 @@ repositories {
android {
namespace 'net.i2p.android.router'
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
buildFeatures {
viewBinding true
}
defaultConfig {
versionCode Integer.parseInt(project.I2P_ANDROID_VERSION_CODE as String)
versionName "$I2P_ANDROID_VERSION"
@@ -66,10 +69,10 @@ android {
}
dependencies {
implementation "androidx.appcompat:appcompat:1.5.1"
implementation "androidx.preference:preference:1.2.0"
implementation "androidx.annotation:annotation:1.5.0"
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation "androidx.appcompat:appcompat:1.7.1"
implementation "androidx.preference:preference:1.2.1"
implementation "androidx.annotation:annotation:1.9.1"
implementation 'androidx.recyclerview:recyclerview:1.4.0'
// Local dependencies
implementation project(':lib:client')
implementation project(':lib:helper')
@@ -143,7 +146,7 @@ if (propFile.canRead()) {
}
task certificatesZip(type: Zip) {
archiveName = 'certificates_zip'
archiveBaseName = 'certificates_zip'
from files('' + i2pbase + '/installer/resources/certificates')
}
task copyI2PResources(type: Copy) {

View File

@@ -27,3 +27,5 @@
-keep class !android.support.v7.view.menu.**,** {*;}
-dontwarn **
-dontnote **
-keep class net.i2p.android.client.util.SummaryEditTextPreference { *; }

View File

@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.router"
android:installLocation="auto"
android:sharedUserId="net.i2p">
<uses-sdk xmlns:tools="http://schemas.android.com/tools"
tools:overrideLibrary="android.support.v14.preference" />
tools:overrideLibrary="androidx.preference" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

View File

@@ -1,11 +1,9 @@
package net.i2p.android;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
//import android.support.v4.app.Fragment;
import androidx.fragment.app.Fragment;
@@ -59,7 +57,6 @@ public class I2PActivity extends I2PActivityBase implements
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_viewpager);
Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);

View File

@@ -8,8 +8,6 @@ import androidx.core.util.Pair;
import androidx.core.view.ViewCompat;
//import android.support.v7.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -75,7 +73,6 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
public void setTunnels(List<TunnelEntry> tunnels) {
mTunnels = tunnels;
Log.d("TunnelEntryAdapter", "setTunnels: size=" + (tunnels != null ? tunnels.size() : "null"));
notifyDataSetChanged();
}
@@ -151,8 +148,6 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
Log.d("TunnelEntryAdapter", "onBindViewHolder: position=" + position +
" viewType=" + holder.getItemViewType());
switch (holder.getItemViewType()) {
case R.string.router_not_running:
((TextView) holder.itemView).setText(
@@ -230,11 +225,9 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
// Return the size of the dataset (invoked by the layout manager)
@Override
public int getItemCount() {
if (mTunnels == null || mTunnels.isEmpty()) {
Log.d("TunnelEntryAdapter", "getItemCount: returning 1 for empty/null state");
if (mTunnels == null || mTunnels.isEmpty())
return 1;
}
Log.d("TunnelEntryAdapter", "getItemCount: returning " + mTunnels.size());
return mTunnels.size();
}
}

View File

@@ -120,10 +120,9 @@ public class TunnelListFragment extends Fragment implements
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//mClientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS);
mClientTunnels = true;
mClientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS);
//mRecyclerView.setHasFixedSize(true);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
// use a linear layout manager

View File

@@ -107,10 +107,6 @@ public class TunnelsContainer extends Fragment implements
mNewTunnel = v.findViewById(R.id.promoted_action);
mNewTunnel.setVisibility(showActions() ? View.VISIBLE : View.GONE);
// Initialize ViewPager adapter
mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager());
mViewPager.setAdapter(mFragPagerAdapter);
if (v.findViewById(R.id.detail_fragment) != null) {
mTwoPane = true;
}
@@ -122,8 +118,6 @@ public class TunnelsContainer extends Fragment implements
savedInstanceState, FRAGMENT_SERVER);
}
setupMagicIndicator();
return v;
}
@@ -134,10 +128,6 @@ public class TunnelsContainer extends Fragment implements
// Initialize ViewPager and adapter
mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager());
mViewPager.setAdapter(mFragPagerAdapter);
// Make sure the ViewPager has proper height
/*mViewPager.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));*/
setupMagicIndicator();
@@ -305,19 +295,19 @@ public class TunnelsContainer extends Fragment implements
.replace(R.id.detail_fragment, detailFrag)
.commitNow(); // Use commitNow() to execute synchronously
} catch (Exception e) {
// This exception might occur if the fragment transaction fails due to an invalid state.
// It is handled by logging the error to help with debugging.
Log.e("TunnelsContainer", "Failed to update detail fragment", e);
}
} else {
// In single-pane mode, simply start the detail activity
// for the selected item ID.
Intent detailIntent = new Intent(getActivity(), TunnelDetailActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), pairs);
detailIntent.putExtra("tunnel_id", tunnelId);
ActivityCompat.startActivity(getActivity().getApplicationContext(), detailIntent, options.toBundle());
detailIntent.putExtra(TunnelDetailFragment.TUNNEL_ID, tunnelId);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(), pairs);
ActivityCompat.startActivity(getActivity(), detailIntent, options.toBundle());
}
}
}
// TunnelDetailFragment.TunnelDetailListener

View File

@@ -10,7 +10,7 @@ import androidx.preference.PreferenceFragmentCompat;
*/
public abstract class CustomPreferenceFragment extends PreferenceFragmentCompat {
private static final String DIALOG_FRAGMENT_TAG =
"android.support.v7.preference.PreferenceFragment.DIALOG";
"androidx.preference.PreferenceFragment.DIALOG";
@Override
public void onDisplayPreferenceDialog(Preference preference) {

View File

@@ -2,7 +2,7 @@ package net.i2p.android.preferences.util;
import android.content.Context;
//import android.support.v7.preference.ListPreference;
import android.preference.ListPreference;
import androidx.preference.ListPreference;
import android.util.AttributeSet;
public class IntListPreference extends ListPreference {

View File

@@ -1,8 +1,9 @@
package net.i2p.android.preferences.util;
import android.annotation.TargetApi;
import android.content.Context;
//import android.support.v7.preference.EditTextPreference;
import android.preference.EditTextPreference;
import androidx.preference.EditTextPreference;
import android.util.AttributeSet;
public class SummaryEditTextPreference extends EditTextPreference {
@@ -15,8 +16,13 @@ public class SummaryEditTextPreference extends EditTextPreference {
super(context, attrs);
}
public SummaryEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
public SummaryEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(21)
public SummaryEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override

View File

@@ -4,12 +4,25 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<androidx.viewpager.widget.ViewPager
android:id="@+id/pager"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentBottom="true" />
android:layout_height="match_parent"
android:orientation="vertical">
<net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="match_parent"
android:layout_height="@dimen/pager_indicator_height"
android:theme="@style/MagicIndicator" />
<!-- The main content view -->
<androidx.viewpager.widget.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
<net.i2p.android.ext.floatingactionbutton.AddFloatingActionButton
android:id="@+id/promoted_action"

View File

@@ -6,14 +6,10 @@
<com.androidplot.xy.XYPlot
android:id="@+id/rate_stat_plot"
androidPlot.graphWidget.domainLabelPaint.textSize="@dimen/graph_domain_tick_label_font_size"
androidPlot.graphWidget.domainOriginLabelPaint.textSize="@dimen/graph_domain_tick_label_font_size"
androidPlot.graphWidget.marginBottom="20dp"
androidPlot.graphWidget.marginLeft="20dp"
androidPlot.graphWidget.marginRight="10dp"
androidPlot.graphWidget.marginTop="11dp"
androidPlot.graphWidget.rangeLabelPaint.textSize="@dimen/graph_range_tick_label_font_size"
androidPlot.graphWidget.rangeOriginLabelPaint.textSize="@dimen/graph_range_tick_label_font_size"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

View File

@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight">
android:layout_height="wrap_content">
<RelativeLayout
style="@style/ListItem.TwoLines"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout style="@style/ListItem.TwoLines">
<!-- Tunnel status -->
<ImageView
@@ -59,7 +55,5 @@
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true" />
android:background="?attr/selectableItemBackground" />
</FrameLayout>

View File

@@ -76,6 +76,10 @@
<string name="general">عام</string>
<string name="addressbook_add_wizard_k_name">الاسم</string>
<string name="addressbook_add_wizard_k_destination">اتجاه</string>
<string name="nsu_iae_illegal_char">اسم العنوان \"%1$s\" يحتوي على حرف غيرصالح %2$s</string>
<string name="nsu_iae_cannot_start_with">لا يمكن ان يبدأ اسم العنوان ب \"%s\"</string>
<string name="nsu_iae_cannot_end_with">لا يمكن ان ينتهي اسم العنوان ب \"%s\"</string>
<string name="nsu_iae_cannot_contain">لا يمكن ان يحتوي اسم العنوان على \"%s\"</string>
<string name="i2ptunnel_type_client">مستخدم عادي</string>
<string name="i2ptunnel_type_httpclient">HTTP client</string>
<string name="i2ptunnel_type_ircclient">IRC برنامج</string>

View File

@@ -47,8 +47,11 @@
<string name="settings_label_advanced">Avanceret</string>
<string name="settings_label_transports">Transporter</string>
<string name="settings_label_expl_length">Længde</string>
<string name="settings_summ_expl_length">%s hop</string>
<string name="settings_label_expl_quantity">Mængde</string>
<string name="settings_summ_expl_quantity">%s tunneler</string>
<string name="settings_label_expl_backupQuantity">Reserve mængde</string>
<string name="settings_summ_expl_backupQuantity">%s tunneler</string>
<string name="menu_about">Om</string>
<string name="about_version">Version:</string>
<string name="menu_help">Hjælp</string>

View File

@@ -115,6 +115,7 @@
<string name="notification_status_peers">Teilnehmer: %1$d aktiv, %2$d bekannt</string>
<string name="notification_status_expl">Erkundungstunnel: %1$d/%2$d</string>
<string name="notification_status_client">Clienttunnel: %1$d/%2$d</string>
<string name="stats_memory">Speicher belegt/max.</string>
<string name="stats_delay">Nachrichtenverzögerung</string>
<string name="copied_base32_system_notification_title">Base32 in die Zwischenablage kopiert</string>
<string name="copied_base32_system_notification_body">Die Adresse Ihres I2P-Tunnels wurde in die Zwischenablage kopiert.</string>
@@ -181,6 +182,7 @@
<string name="about_bugs">Fehlermeldungen und Unterstützung:</string>
<string name="about_helpwanted">Unterstützer gesucht!!</string>
<string name="about_volunteer">Sie wollen mithelfen, die App besser zu machen? Dann schauen Sie in das Android-Forum:</string>
<string name="about_gitlab">Möchten Sie eine Funktion vorschlagen oder einen Fehler beheben? Stellen Sie einen Merge-Request auf Android Gitlab:</string>
<string name="menu_help">Hilfe</string>
<string name="general">Allgemein</string>
<string name="label_router">Öffentliche Adressen</string>
@@ -241,6 +243,7 @@
<string name="enabled">Aktiviert</string>
<string name="i2ptunnel_wizard_desc_name">Der Name des Tunnels zur Erkennung in der Tunnelliste.</string>
<string name="i2ptunnel_wizard_desc_desc">Eine optionale, aber für Sie aussagekräftige Beschreibung des Tunnels.</string>
<string name="i2ptunnel_wizard_desc_dest">Geben Sie hier die .i2p-Adresse oder das Ziel (Hostname.i2p, b32 oder b64) des Tunnels an.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Falls Sie Ausgangsproxies für diese Tunnelart kennen (entweder HTTP oder SOCKS), geben Sie sie hier ein. Trennen Sie mehrere Proxies mit Kommas.</string>
<string name="i2ptunnel_wizard_desc_target_host">Das ist die IP, unter der der Dienst erreichbar ist. Normalerweise ist er auf der gleichen Maschine, also wird 127.0.0.1 automatisch ausgefüllt.</string>
<string name="i2ptunnel_wizard_desc_target_port">Dies ist der Port, unter dem der Dienst erreichbar ist.</string>

View File

@@ -18,6 +18,7 @@
<string name="label_graphs">Γραφήματα</string>
<string name="hidden">κρυμμένο</string>
<string name="testing">Δοκιμάζει</string>
<string name="firewalled">Με τείχος προστασίας</string>
<string name="symmetric_nat">Συμμετρικό NAT</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_info_disconnected">Αποσυνδέθηκε-ελένξετε την σύνδεση Δικτύου</string>
@@ -64,8 +65,11 @@
<string name="settings_default">Εξ\'ορισμού</string>
<string name="settings_label_advanced">Προχωρημένα</string>
<string name="settings_label_expl_length">Μήκος</string>
<string name="settings_summ_expl_length">%s βήματα</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_label_expl_quantity">Ποσότητα</string>
<string name="settings_summ_expl_quantity">%s τούνελ</string>
<string name="settings_summ_expl_backupQuantity">%s τούνελ</string>
<string name="menu_about">Σχετικά με</string>
<string name="about_version">Έκδοση</string>
<string name="about_project">Project Home:</string>
@@ -93,6 +97,7 @@
<string name="disabled">Απενεργοποιημένο</string>
<string name="whitelist">Λίστα Επιτρεπόμενων</string>
<string name="unlimited">Απεριόριστο</string>
<string name="num_minutes">%s λεπτά</string>
<string name="username">Όνομα χρήστη</string>
<string name="password">Κωδικός</string>
<string name="other">Άλλ</string>

View File

@@ -139,6 +139,7 @@
<string name="settings_label_expl_inbound">Tulotunnelit</string>
<string name="settings_label_expl_outbound">Lähtötunnelit</string>
<string name="settings_label_expl_length">Pituus</string>
<string name="settings_summ_expl_length">%s hyppyä</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_label_expl_quantity">Määrä</string>
<string name="settings_summ_expl_quantity">%s tunnelia</string>

View File

@@ -292,8 +292,8 @@
<string name="access_control">Contrôle de laccès</string>
<string name="restricted_access">Accès restreint</string>
<string name="disabled">Désactivé</string>
<string name="whitelist">Liste blanche</string>
<string name="blacklist">Liste noire</string>
<string name="whitelist">Liste dacceptation</string>
<string name="blacklist">Liste de rejet</string>
<string name="access_list">Liste daccès</string>
<string name="reject_inproxies">Refuser les mandataires entrants</string>
<string name="tunnel_summ_reject_inproxies">Ne permettre quaux utilisateurs dI2P de se connecter</string>

View File

@@ -111,6 +111,7 @@
<string name="name">Nome</string>
<string name="description">Descrición</string>
<string name="disabled">Desactivado</string>
<string name="num_minutes">%sminutos</string>
<string name="username">Nome de usuario</string>
<string name="password">Contrasinal</string>
<string name="other">Outra</string>

View File

@@ -137,6 +137,7 @@
<string name="settings_label_expl_inbound">Bejövő alagutak</string>
<string name="settings_label_expl_outbound">Kimenő alagutak</string>
<string name="settings_label_expl_length">Hossz</string>
<string name="settings_summ_expl_length">%s ugrás</string>
<string name="settings_label_expl_quantity">Mennyiség</string>
<string name="settings_summ_expl_quantity">%s alagút</string>
<string name="settings_desc_expl_quantity">Mennyi alagút</string>
@@ -157,6 +158,10 @@
<string name="addressbook_add_wizard_k_name">Név</string>
<string name="addressbook_add_wizard_k_destination">Célállomás</string>
<string name="addressbook_add_wizard_desc_name">A név</string>
<string name="nsu_iae_illegal_char">Hoszt név \"%1$s\" helytelen karaktert tartalmaz %2$s</string>
<string name="nsu_iae_cannot_start_with">Hoszt név nem kezdődhet a következővel: \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Hoszt név nem végződhet a következővel: \"%s\"</string>
<string name="nsu_iae_cannot_contain">Hoszt név nem tartalmahatja a következőt: \"%s\"</string>
<string name="i2ptunnel_type_client">Normál kliens</string>
<string name="i2ptunnel_type_httpclient">HTTP kliens</string>
<string name="i2ptunnel_type_ircclient">IRC kliens</string>
@@ -245,6 +250,7 @@
<string name="post_limits">POST korlát</string>
<string name="tunnel_summ_delay_open">Az alagút nyitás késleltetése szükségessé válásig</string>
<string name="tunnel_summ_reduce_quantity">Alagutak mennyiségének csökkentése üres állapotban</string>
<string name="num_minutes">%s perc</string>
<string name="reduced_tunnel_quantity">Csökkentett alagút mennyiség</string>
<string name="close_tunnels">Alagutak bezárása üresjárat esetén</string>
<string name="new_keys_on_reopen_conflict_msg">Nem engedélyezheti az új kulcsok készítését újranyitáskor amíg az alagút állandó kulcsok használatára van konfigurálva. Le akarja tiltani az állandó kulcsokat?</string>

View File

@@ -190,6 +190,7 @@
<string name="blacklist">Blacklist</string>
<string name="tunnel_summ_delay_open">Pozdržať otvorenie tunelov až pokiaľ to nebude vyžadované</string>
<string name="tunnel_summ_reduce_quantity">Znížiť množstvo tunelov pri nečinnosti</string>
<string name="num_minutes">%s minúty</string>
<string name="close_tunnels">Zavrieť tunely pri nečinnosti</string>
<string name="http_client">HTTP klient</string>
<string name="username">Užívateľské meno</string>

View File

@@ -88,6 +88,7 @@
<string name="disabled">E çaktivizuar</string>
<string name="whitelist">Listë lejimesh</string>
<string name="unlimited">E pakufizuar</string>
<string name="num_minutes">%s minuta</string>
<string name="username">Emër përdoruesi</string>
<string name="password">Fjalëkalim</string>
<string name="other">Tjetër</string>

View File

@@ -116,6 +116,11 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="notification_status_peers">Jämlikar: %1$d aktiva, %2$d kända</string>
<string name="notification_status_expl">Utforskande tunnlar: %1$d/%2$d</string>
<string name="notification_status_client">Klienttunnlar:%1$d/%2$d</string>
<string name="stats_memory">Minne använt/max</string>
<string name="stats_lag">Jobbfördröjning</string>
<string name="stats_delay">Meddelandefördröjning</string>
<string name="copied_base32_system_notification_title">Base32 kopierad till urklipp</string>
<string name="copied_base32_system_notification_body">Adressen till din I2P-tunnel har kopierats till urklipp.</string>
<string name="menu_settings">Inställningar</string>
<string name="settings_enable">Aktivera</string>
<string name="settings_desc_subscriptions">Prenumerations URL</string>
@@ -148,6 +153,13 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="settings_label_transports">Transporter</string>
<string name="settings_label_maxConns">Max anslutningar</string>
<string name="settings_label_i2cp">I2CP interfrace</string>
<string name="settings_desc_i2cp">Tillåt tredjepartsappar att skapa tunnlar med I2CP (kräver omstart av routern)</string>
<string name="settings_label_sam">SAM-gränssnitt</string>
<string name="settings_desc_sam">Tillåt tredjepartsappar att skapa tunnlar med SAM (kräver omstart av routern)</string>
<string name="settings_confirm_sam">Ett program försöker upprätta en SAM-anslutning.</string>
<string name="settings_confirm_sam_id">Anslutningsnamn/ID:</string>
<string name="settings_confirm_allow_sam">Tryck för att tillåta</string>
<string name="settings_confirm_deny_sam">Ignorera för att förneka</string>
<string name="settings_label_exploratory_pool">Utforskande pool</string>
<string name="settings_desc_exploratory_pool">Tunnelparametrar</string>
<string name="settings_label_expl_inbound">Inåtgående tunnlar</string>
@@ -172,6 +184,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="about_bugs">Fel och Support:</string>
<string name="about_helpwanted">Hjälp Önskas!</string>
<string name="about_volunteer">Vill du hjälpa till att göra appen bättre? Anmäl dig på Android-forumet:</string>
<string name="about_gitlab">Vill du föreslå en funktion eller åtgärda ett fel? Gör en sammanslagningsförfrågan på Android Gitlab:</string>
<string name="menu_help">Hjälp</string>
<string name="general">Generell</string>
<string name="label_router">Publika adresser</string>
@@ -232,6 +245,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="enabled">Aktiverad</string>
<string name="i2ptunnel_wizard_desc_name">Tunnelns namn, för identifikation i tunnellistan</string>
<string name="i2ptunnel_wizard_desc_desc">Beskrivning av tunneln. Frivillig och endast för information.</string>
<string name="i2ptunnel_wizard_desc_dest">Ange .i2p-adressen eller destinationen (hostname.i2p, b32 eller b64) för tunneln här.</string>
<string name="i2ptunnel_wizard_desc_outproxies">Om du känner till några utproxier för den här typen av tunnel (antingen HTTP eller SOCKS), fyll i dem. Separera flera proxier med kommatecken.</string>
<string name="i2ptunnel_wizard_desc_target_host">Detta är IP-adressen som din tjänst körs på, den är vanligtvis på samma maskin så 127.0.0.1 fylls i automatiskt.</string>
<string name="i2ptunnel_wizard_desc_target_port">Detta är den port din tjänst tar emot anslutningar på.</string>
@@ -356,4 +370,5 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="label_browser_configuration">Browser konfiguration</string>
<string name="no_market_app">Ingen marknadsapp hittades. Installera manuellt</string>
<string name="unset">Återställ</string>
<string name="running_background">I2P körs i bakgrunden</string>
</resources>

View File

@@ -25,7 +25,7 @@
<string name="button_router_graceful">I2P %s içinde kapatılacak</string>
<string name="button_shutdown_now">Şimdi durdurmak için uzun basın</string>
<string name="button_cancel_graceful">Kapatmayı engellemek için uzun basın</string>
<string name="no_internet">Kullanılabilecek bir İnternet bağlantısı yok</string>
<string name="no_internet">Kullanılabilecek bir internet bağlantısı yok</string>
<string name="hidden">Gizli</string>
<string name="testing">Sınanıyor</string>
<string name="firewalled">Güvenlik duvarlı</string>
@@ -40,8 +40,8 @@
<string name="net_status_info_disconnected">Bağlantı kesildi. Ağ bağlantısını denetleyin</string>
<string name="net_status_error_udp_port">UDP bağlantı noktası kullanılıyor. Ayarları değiştirip yeniden başlatın</string>
<string name="net_status_error_no_active_peers">Etkin eş yok, ağ bağlantısını ve güvenlik duvarını denetleyin</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP devre dışı ve Geliş TCP bağlantısı sunucu/bağlantı noktası ayarlanmamış</string>
<string name="net_status_warn_firewalled_udp_disabled">Güvenlik duvarı ve UDP devre dışı</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP etkisizleştirilmiş ve Geliş TCP bağlantısı sunucu/bağlantı noktası ayarlanmamış</string>
<string name="net_status_warn_firewalled_udp_disabled">UDP ile güvenlik duvarı etkisizleştirilmiş</string>
<string name="shared_clients">Paylaşılmış istemciler</string>
<string name="uptime">Çalışma süresi</string>
<string name="active_peers">Etkin eşler</string>
@@ -111,7 +111,7 @@
<string name="notification_status_stopping_after_net">Ağ bağlantısı kesildi, I2P durduruluyor</string>
<string name="notification_status_shutdown_cancelled">Kapatma iptal edildi</string>
<string name="notification_status_shutting_down">I2P kapatılıyor</string>
<string name="notification_status_bw">Bant genişliği: %1$sBps indirme / %2$sBps yükleme</string>
<string name="notification_status_bw">Bant genişliği: %1$sB/sn indirme / %2$sB/sn yükleme</string>
<string name="notification_status_peers">Eşler: %1$d etkin, %2$d bilinmeyen</string>
<string name="notification_status_expl">Keşif tünelleri: %1$d/%2$d</string>
<string name="notification_status_client">İstemci tünelleri: %1$d/%2$d</string>
@@ -132,11 +132,11 @@
<string name="settings_label_bw_outbound">Gidiş bağlantısı hızı</string>
<string name="settings_desc_bw_outbound">En yüksek gidiş bağlantısı hızı</string>
<string name="settings_label_network"></string>
<string name="settings_label_hiddenMode">Katılım</string>
<string name="settings_label_hiddenMode">Katkıda Bulunmak</string>
<string name="settings_desc_hiddenMode">Gizli kipi kapat</string>
<string name="settings_label_maxPartTunnels">Katılınacak en fazla tünel sayısı </string>
<string name="settings_desc_maxPartTunnels">Katılınacak en fazla tünel sayısı (varsayılan=20)</string>
<string name="settings_dialog_maxPartTunnels">Katılınacak en fazla tünel sayısı </string>
<string name="settings_label_maxPartTunnels">Katkıda bulunulacak en fazla tünel sayısı </string>
<string name="settings_desc_maxPartTunnels">Katkıda bulunulacak en fazla tünel sayısı (varsayılan=20)</string>
<string name="settings_dialog_maxPartTunnels">Katkıda bulunulacak en fazla tünel sayısı </string>
<string name="settings_label_sharePercent">Paylaşım yüzdesi</string>
<string name="settings_desc_sharePercent">Paylaşılacak bant genişliği yüzdesi (varsayılan=80)</string>
<string name="settings_dialog_sharePercent">Paylaşılacak bant genişliği yüzdesi</string>
@@ -268,7 +268,7 @@
<string name="target_destination">Hedef konum</string>
<string name="persistent_key">Sürekli anahtar</string>
<string name="persistent_key_conflict_title">Yeniden açıldığında yeni anahtarlar oluşturulmasın</string>
<string name="persistent_key_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Yeniden açıldığından yeni anahtarların oluşturulması devre dışı bırakılsın mı?</string>
<string name="persistent_key_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Yeniden açıldığından yeni anahtarların oluşturulması etkisizleştirilsin mi?</string>
<string name="tunnel_summ_persistent_key">Yeniden başlatıldığında bu tünelin hedefi korunsun</string>
<string name="reachable_on">Şuradan erişilebilir</string>
<string name="listen_port">Dinlenecek bağlantı noktası</string>
@@ -292,7 +292,7 @@
<string name="tunnel_summ_delay_connect">Bağlantı yanıtları için etkinleştirin</string>
<string name="access_control">Erişim denetimi</string>
<string name="restricted_access">Kısıtlı erişim</string>
<string name="disabled">Devre dışı</string>
<string name="disabled">Etkisizleştirilmiş</string>
<string name="whitelist">Beyaz liste</string>
<string name="blacklist">Kara liste</string>
<string name="access_list">Erişim listesi</string>
@@ -333,7 +333,7 @@
<string name="close_tunnels">Boştayken tüneller kapatılsın</string>
<string name="new_keys_on_reopen">Yeniden açıldığından yeni anahtarlar oluşturulsun</string>
<string name="new_keys_on_reopen_conflict_title">Sürekli anahtarlar kullanılamasın</string>
<string name="new_keys_on_reopen_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Sürekli anahtarlar devre dışı bırakılsın mı?</string>
<string name="new_keys_on_reopen_conflict_msg">Tünel yeniden açıldığında yeni anahtarlar oluşturuluyorsa sürekli anahtarlar kullanılamaz. Sürekli anahtarlar etkisizleştirilsin mi?</string>
<string name="http_client">HTTP istemcisi</string>
<string name="tunnel_summ_user_agent">\'User-Agent\' üst bilgisi geçirilsin</string>
<string name="tunnel_summ_referer">\'Referer\' üst bilgisi geçirilsin</string>

View File

@@ -15,7 +15,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'com.android.tools.build:gradle:8.3.1'
classpath 'com.android.tools.lint:lint-gradle:26.1.1'
}
}

View File

@@ -11,12 +11,12 @@
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
# org.gradle.parallel=true
#Sun Mar 09 19:44:44 EDT 2025
ANDROID_BUILD_SDK_VERSION=34
ANDROID_BUILD_TARGET_SDK_VERSION=34
ANDROID_BUILD_SDK_VERSION=35
ANDROID_BUILD_TARGET_SDK_VERSION=35
GROUP=net.i2p.android
I2P_ANDROID_VERSION=2.8.0
I2P_ANDROID_VERSION_CODE=4745291
I2P_VERSION=2.8.0-1
I2P_ANDROID_VERSION=2.10.1
I2P_ANDROID_VERSION_CODE=4745297
I2P_VERSION=2.10.0-1
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
@@ -31,3 +31,6 @@ POM_URL=https\://github.com/i2p/i2p.android.base
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536M
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

View File

@@ -125,12 +125,12 @@ afterEvaluate { project ->
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
archiveClassifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
archiveClassifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

View File

@@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.lib.client">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true"
android:label="@string/app_name">

View File

@@ -23,6 +23,9 @@ android {
abortOnError false
}
namespace 'net.i2p.android.lib.helper'
buildFeatures {
aidl true
}
}
dependencies {

View File

@@ -1,5 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.lib.helper">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true"
android:label="@string/app_name">