Compare commits

...

21 Commits

Author SHA1 Message Date
idk
794b8433d8 update changelog 2022-11-22 22:12:59 -05:00
idk
a7891a3674 check in version 2.0.0 2022-11-22 11:53:02 -05:00
idk
7076785ec1 add instructions for Privacy Browser 2022-11-09 01:16:17 -05:00
idk
f8eda45409 promote privacybrowser back to supported, demote non-fennec firefoxes to unsupported 2022-11-09 00:53:52 -05:00
idk
8d0f1689c1 Merge branch 'android-build-updates' into 'master'
Android build updates

See merge request idk/i2p.android.base!1
2022-10-19 01:38:22 +00:00
idk
25ef37cddf Merge branch 'master' into 'android-build-updates'
# Conflicts:
#   gradle.properties
2022-10-19 01:38:08 +00:00
idk
c5936858a2 fix Android 12 builds 2022-10-18 21:33:43 -04:00
idk
17d2e2fc93 list all browsers in prep for VPN mode 2022-10-18 20:32:43 -04:00
idk
a0e41e5171 update the changelog 2022-09-08 11:51:50 -04:00
idk
2d1244f339 update versions for F-Droid main 2022-09-04 11:23:37 -04:00
idk
9eec1d3348 checkin android build updates 2022-08-30 11:07:40 -04:00
idk
5824fd4efa update the version code 2022-08-26 22:29:07 -04:00
idk
9c87bfcb51 After un-breaking the gradle build, bump the version to 1.9.0 2022-08-26 22:27:43 -04:00
idk
0c380f2ef5 Fix backward base32 validator condition 2022-08-21 12:10:37 -04:00
idk
dafe3d0002 make base32's greater than 64 chars in length validate 2022-08-08 14:23:20 -04:00
idk
255ac60691 update changelog and fix string 2022-08-08 14:08:59 -04:00
idk
23f681dd7d start retroactively fixing the changelog which I did not update for a while. 2022-07-18 12:47:46 -04:00
idk
d6a55a122a switch back I2P_VERSION 2022-06-26 18:41:02 -04:00
idk
454937d345 checkin release update 2022-06-25 10:16:47 -04:00
idk
ec8cf76fc4 reverse changes to settings_net.xml 2022-06-24 13:34:05 -04:00
idk
6788f9a663 make speed_values an integer array 2022-06-24 01:34:40 -04:00
16 changed files with 180 additions and 70 deletions

3
.gitignore vendored
View File

@ -3,3 +3,6 @@ signing.properties
.idea
.idea/
.gradle/
local.properties
override.properties
build

View File

@ -1,3 +1,51 @@
2.0.0
* Updates router to version 2.0.0
* Updates gradle plugin
* Remove Firefox from supported browsers list due to lack of about:config support
* Add Privacy Browser to supported browsers list and write guide for it
1.9.1
* Switches back to mavenCentral builds
* Fixes build process for F-Droid main
* Using tag i2p.i2p:i2p-android-1.9.0
* Allow b32 and blinded b32 to validate in I2PTunnel UI
1.9.0
* Updates router to version 1.9.0
* Using tag i2p.i2p:i2p-android-1.9.0
1.8.2
* This update fixes a bug where Family Keys are incorrectly handled by the Android router, leading
to a crash.
* This update fixes a bug wherein incorrect type-checking caused a crash when using the Network
Config page for some users.
1.8.1
* This update fixes a bug where certificates were unpacked to the wrong location on new installs,
resulting in the router failing to start.
* Decouples the Android version from the I2P library version to allow for android point
releases with less pain.
1.8.0
* This release updates the underlying I2P libraries to I2P version 1.8.0
* The SAM API now operates in "Interactive Authentication" mode. Users will be prompted via
the notificationArea to approve or ignore new SAM connections initiated by external apps.
* The network config menu now features a drop-down configuration instead of a slider configuration
(since reversed)
1.7.1
* This release updates the underlying I2P libraries to I2P version 1.7.1
1.7.0
* This release updates the underlying I2P libraries to I2P version 1.7.0
* Refactor of the unzipResourceToDir function
1.6.0
* This release updates the underlying I2P libraries to I2P version 1.6.0
1.5.0
* This release updates the underlying I2P libraries to I2P version 1.5.0
0.9.50 2021-05-18
* This release updates the underlying I2P libraries to I2P version 0.9.50

View File

@ -18,6 +18,7 @@ the override.properties that is used in the Docker container.
## Prerequirements
0. Update the changelog!
1. Ensure you have the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
2. It should exist at `~/.ant/lib/maven-ant-tasks-2.1.3.jar`
3. Ensure you have hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.

View File

@ -7,9 +7,9 @@ repositories {
android {
compileSdkVersion 28
defaultConfig {
versionCode 4745268
versionCode 4745272
versionName "$I2P_ANDROID_VERSION"
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
// For Espresso
@ -31,15 +31,18 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
disable 'MissingDefaultResource'
}
packagingOptions {
exclude 'LICENSE.txt'
resources {
excludes += ['LICENSE.txt']
}
}
flavorDimensions 'tier'
productFlavors {
@ -56,7 +59,6 @@ android {
applicationId 'net.i2p.android.router'
}
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -88,6 +90,10 @@ dependencies {
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
project.ext.i2pbase = "../i2p.i2p"
def Properties props = new Properties()
def propFile = new File(project(':routerjars').projectDir, 'local.properties')

View File

@ -27,6 +27,8 @@
<service
android:name=".service.RouterService"
android:icon="@drawable/ic_launcher_itoopie"
android:enabled="true"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="net.i2p.android.router.service.IRouterState" />
@ -35,7 +37,9 @@
<provider
android:name=".provider.CacheProvider"
android:authorities="${applicationId}.provider" />
<receiver android:name=".receiver.OnBootReceiver">
<receiver
android:name=".receiver.OnBootReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
@ -45,7 +49,8 @@
android:name="net.i2p.android.I2PActivity"
android:icon="@drawable/ic_launcher_itoopie"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:exported="true">
<!-- Console filters -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -109,6 +114,7 @@
<activity
android:name=".web.WebActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="true"
android:label="I2P Web Browser">
<!-- Disabled, this browser is not very secure
Temporarily enabled until an alternative browser is ready -->

View File

@ -102,8 +102,28 @@ public class BrowserListFragment extends Fragment implements
getContext().getResources().getStringArray(R.array.supported_browsers));
supportedLabels = Arrays.asList(
getContext().getResources().getStringArray(R.array.supported_browser_labels));
unsupported = Arrays.asList(
context.getResources().getStringArray(R.array.unsupported_browsers));
unsupported = allBrowsers(context);//Arrays.asList(
//context.getResources().getStringArray(R.array.unsupported_browsers));
}
public List<String> allBrowsers(Context context){
//try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
List<ResolveInfo> browserList;
PackageManager pm = context.getPackageManager();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
// gets all
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
} else {
browserList = pm.queryIntentActivities(intent, 0);
}
//}catch()
List<String> finalResult = new ArrayList<String>();
for (ResolveInfo ri : browserList){
finalResult.add(ri.resolvePackageName);
}
return finalResult;
}
@Override

View File

@ -29,10 +29,12 @@ public class I2PDestinationPage extends SingleTextFieldPage {
public boolean isValid() {
String data = mData.getString(SIMPLE_DATA_KEY);
if (data.toLowerCase(Locale.US).endsWith(".b32.i2p")) { /* B32 */
if (data.length() != BASE32_HASH_LENGTH + 8) {
mFeedback = "Invalid B32";
return false;
if (data.length() == BASE32_HASH_LENGTH + 8 || data.length() >= BASE32_HASH_LENGTH + 12) {
mFeedback = "";
return true;
}
mFeedback = "Invalid B32";
return false;
} else if (data.endsWith(".i2p")) { /* Domain */
// Valid
} else if (data.length() >= 516) { /* B64 */

View File

@ -0,0 +1,17 @@
<html>
<head></head>
<body>
<h2>Privacy Brower has native I2P support!</h2>
<p>Make sure your I2P router is started before launching Privacy Browser</p>
<p>Privacy Browser supports both I2P and Orbot (Tor), but not at the same time.</p>
<h2>How to configure Privacy Browser:</h2>
<ol>
<li>Open the main menu and tap “Settings”</li>
<li>Select "Disable Javascript"(Recommended)</li>
<li>Select "Enable Incognito Mode"(Optional)</li>
<li>Tap the "Proxy" menu item and select "I2P" from the submenu</li>
<li>Exit the settings menu.</li>
</ol>
<a href="https://eyedeekay.github.io/Configuring-Privacy-Browser-for-I2P-on-Android/">A detailed guide with screenshots to is available online</a>
</body>
</html>

View File

@ -109,28 +109,25 @@
</string-array>
<string-array name="recommended_browsers">
<item>acr.browser.lightning</item>
<item>io.github.forkmaintainers.iceraven</item>
<item>com.stoutner.privacybrowser.standard</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Lightning</item>
<item>IceRaven(With Extension)</item>
<item>Privacy Browser</item>
</string-array>
<string-array name="supported_browsers">
<item>org.mozilla.firefox</item>
<item>org.mozilla.fennec_fdroid</item>
<item>org.gnu.icecat</item>
</string-array>
<string-array name="supported_browser_labels">
<item>Firefox</item>
<item>Fennec F-Droid</item>
<item>IceCatMobile</item>
</string-array>
<string-array name="unsupported_browsers">
<item>org.mozilla.firefox</item>
<item>com.android.chrome</item>
<item>com.brave.browser</item>
<item>com.android.browser</item>
<item>com.sec.android.app.sbrowser</item>
<item>com.stoutner.privacybrowser.standard</item>
<item>org.gnu.icecat</item>
<item>info.guardianproject.browser</item>
<item>mobi.mgeek.TunnyBrowser</item>
<item>com.lastpass.lpandroid</item>
@ -184,7 +181,7 @@
<item>900 KB/s</item>
<item>1000 KB/s</item>
</string-array>
<string-array name="speed_values">
<integer-array name="speed_values">
<item>100</item>
<item>200</item>
<item>300</item>
@ -195,5 +192,5 @@
<item>800</item>
<item>900</item>
<item>1000</item>
</string-array>
</integer-array>
</resources>

View File

@ -294,7 +294,7 @@
<string name="i2ptunnel_wizard_desc_name">The name of the tunnel, for identification in the tunnel list.</string>
<string name="i2ptunnel_wizard_desc_desc">A description of the tunnel. This is optional and purely informative.</string>
<string name="i2ptunnel_wizard_desc_dest">Type in the I2P destination of the service that this client tunnel should connect to. This could be the full base 64 destination key, or an I2P host name from your address book.</string>
<string name="i2ptunnel_wizard_desc_dest">Specify the .i2p address or destination (hostname.i2p, b32 or b64) of the tunnel here.</string>
<string name="i2ptunnel_wizard_desc_outproxies">If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in. Separate multiple proxies with commas.</string>
<string name="i2ptunnel_wizard_desc_target_host">This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.</string>
<string name="i2ptunnel_wizard_desc_target_port">This is the port that the service is accepting connections on.</string>

View File

@ -14,24 +14,26 @@
<PreferenceCategory
android:key="settings_bandwidth"
android:title="@string/settings_label_bandwidth">
<!--
i2np.bandwidth.inboundKBytesPerSecond=100
-->
<DropDownPreference
android:key="@string/PROP_INBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_inbound"
android:entries="@array/speed_increments"
android:entryValues="@array/speed_values"
/>
<!--
i2np.bandwidth.outboundKBytesPerSecond=30
-->
<DropDownPreference
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_inbound"
android:entries="@array/speed_increments"
android:entryValues="@array/speed_values"
/>
<!--
i2np.bandwidth.inboundKBytesPerSecond=100
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_INBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_inbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
<!--
i2np.bandwidth.outboundKBytesPerSecond=30
-->
<com.pavelsikun.seekbarpreference.SeekBarPreference
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
android:title="@string/settings_desc_bw_outbound"
app:msbp_defaultValue="100"
app:msbp_maxValue="1000"
app:msbp_measurementUnit="KB/s"
/>
</PreferenceCategory>
<PreferenceCategory
@ -49,9 +51,9 @@
android:summary="@string/settings_desc_hiddenMode"
/>
-->
<!--
router.maxParticipatingTunnels=0
-->
<!--
router.maxParticipatingTunnels=0
-->
<!--
<com.hlidskialf.android.preference.SeekBarPreference
android:key="router.maxParticipatingTunnels"
@ -64,9 +66,9 @@
android:dependency="router.hiddenMode"
/>
-->
<!--
router.sharePercentage=10
-->
<!--
router.sharePercentage=10
-->
<!--
<com.hlidskialf.android.preference.SeekBarPreference
android:key="router.sharePercentage"
@ -81,15 +83,15 @@
/>
-->
<!--
i2np.upnp.enable=false
-->
<CheckBoxPreference
android:key="@string/PROP_ENABLE_UPNP"
android:defaultValue="true"
android:title="UPnP"
android:summary="@string/settings_desc_upnp"
/>
<!--
i2np.upnp.enable=false
-->
<CheckBoxPreference
android:key="@string/PROP_ENABLE_UPNP"
android:defaultValue="true"
android:title="UPnP"
android:summary="@string/settings_desc_upnp"
/>
</PreferenceCategory>
</PreferenceScreen>

View File

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

View File

@ -14,8 +14,8 @@ POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
ANDROID_BUILD_TARGET_SDK_VERSION=30
ANDROID_BUILD_SDK_VERSION=28
ANDROID_BUILD_TARGET_SDK_VERSION=31
ANDROID_BUILD_SDK_VERSION=31
I2P_VERSION=1.8.0-2
I2P_ANDROID_VERSION=1.8.1
I2P_VERSION=2.0.0
I2P_ANDROID_VERSION=2.0.0

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-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

View File

@ -9,7 +9,7 @@ repositories {
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -19,13 +19,17 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
dependencies {

View File

@ -5,7 +5,7 @@ version = '0.9.5'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
defaultConfig {
minSdkVersion 14
minSdkVersion 21
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
}
buildTypes {
@ -15,13 +15,13 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
buildToolsVersion '28.0.3'
}
dependencies {
@ -33,4 +33,8 @@ dependencies {
testImplementation 'org.mockito:mockito-core:2.11.0'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
apply from: "${project.rootDir}/gradle/maven-push.gradle"