Просмотр исходного кода

Merge pull request #477 from efryntov/master

Updated Android sample project
Rod Hynes 7 лет назад
Родитель
Сommit
7a1390597b

+ 25 - 2
MobileLibrary/Android/README.md

@@ -49,9 +49,32 @@ When that command completes, the compiled `.aar` files (suitable for use in an A
 
 ### Using the Library
 
- 1. Build `ca.psiphon.aar` from via the docker container, from source, or use the [binary release](https://github.com/Psiphon-Labs/psiphon-tunnel-core/releases)
+#### If building from source
+
+ 1. Build `ca.psiphon.aar` from via the docker container.
  2. Add `ca.psiphon.aar` to your Android Studio project as described in the [gomobile documentation](https://godoc.org/golang.org/x/mobile/cmd/gomobile)
- 3. Example usage in [TunneledWebView sample app](./SampleApps/TunneledWebView/README.md)
+
+#### If using Maven based binary distribution
+
+1. Add maven repo to your app build.gradle
+```
+repositories {
+    ...
+    maven {
+        url "https://raw.github.com/Psiphon-Labs/psiphon-tunnel-core-Android-library/master/releases"
+    }
+}
+```
+then add PsiphonTunnel dependency like following
+```
+dependencies {
+    ...
+    implementation 'ca.psiphon:psiphontunnel:1.0.6'
+}
+```
+Latest available release version can be found at https://github.com/Psiphon-Labs/psiphon-tunnel-core-Android-library
+
+See example usage in [TunneledWebView sample app](./SampleApps/TunneledWebView/README.md)
 
 ##### Limitations
 

+ 2 - 7
MobileLibrary/Android/SampleApps/TunneledWebView/.idea/gradle.xml

@@ -3,7 +3,7 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <option name="distributionType" value="LOCAL" />
+        <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.4" />
         <option name="gradleJvm" value="1.8" />
@@ -13,12 +13,7 @@
             <option value="$PROJECT_DIR$/app" />
           </set>
         </option>
-        <option name="myModules">
-          <set>
-            <option value="$PROJECT_DIR$" />
-            <option value="$PROJECT_DIR$/app" />
-          </set>
-        </option>
+        <option name="resolveModulePerSourceSet" value="false" />
       </GradleProjectSettings>
     </option>
   </component>

+ 1 - 14
MobileLibrary/Android/SampleApps/TunneledWebView/.idea/misc.xml

@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="EntryPointsManager">
-    <entry_points version="2.0" />
-  </component>
   <component name="NullableNotNullManager">
     <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
     <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
@@ -27,17 +24,7 @@
       </value>
     </option>
   </component>
-  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
-    <OptionsSetting value="true" id="Add" />
-    <OptionsSetting value="true" id="Remove" />
-    <OptionsSetting value="true" id="Checkout" />
-    <OptionsSetting value="true" id="Update" />
-    <OptionsSetting value="true" id="Status" />
-    <OptionsSetting value="true" id="Edit" />
-    <ConfirmationsSetting value="0" id="Add" />
-    <ConfirmationsSetting value="0" id="Remove" />
-  </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">

+ 12 - 7
MobileLibrary/Android/SampleApps/TunneledWebView/app/build.gradle

@@ -1,13 +1,15 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 21
-    buildToolsVersion "21.1.2"
+    compileSdkVersion 26
+    buildToolsVersion '26.0.3'
+    useLibrary 'org.apache.http.legacy'
+
 
     defaultConfig {
         applicationId "ca.psiphon.tunneledwebview"
         minSdkVersion 15
-        targetSdkVersion 21
+        targetSdkVersion 26
         versionCode 1
         versionName "1.0"
     }
@@ -23,11 +25,14 @@ repositories {
     flatDir {
         dirs 'libs'
     }
+    maven {
+        url "https://raw.github.com/Psiphon-Labs/psiphon-tunnel-core-Android-library/master/releases"
+    }
 }
 
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    testCompile 'junit:junit:4.12'
-    compile 'com.android.support:appcompat-v7:21.0.3'
-    compile(name:'ca.psiphon', ext:'aar')
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    testImplementation 'junit:junit:4.12'
+    implementation 'com.android.support:appcompat-v7:26.1.0'
+    implementation 'ca.psiphon:psiphontunnel:1.0.6'
 }

+ 6 - 3
MobileLibrary/Android/SampleApps/TunneledWebView/app/src/main/java/ca/psiphon/tunneledwebview/MainActivity.java

@@ -7,7 +7,8 @@ package ca.psiphon.tunneledwebview;
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
+import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
@@ -57,7 +58,7 @@ import ca.psiphon.PsiphonTunnel;
 //
 //----------------------------------------------------------------------------------------------
 
-public class MainActivity extends ActionBarActivity
+public class MainActivity extends AppCompatActivity
         implements PsiphonTunnel.HostService {
 
     private ListView mListView;
@@ -75,6 +76,8 @@ public class MainActivity extends ActionBarActivity
 
         mListView = (ListView)findViewById(R.id.listView);
         mWebView = (WebView)findViewById(R.id.webView);
+        WebSettings webSettings = mWebView.getSettings();
+        webSettings.setJavaScriptEnabled(true);
 
         mLogMessages = new ArrayAdapter<String>(
                 this, R.layout.log_message, R.id.logMessageTextView);
@@ -139,7 +142,7 @@ public class MainActivity extends ActionBarActivity
             public void run() {
                 WebViewProxySettings.setLocalProxy(
                         MainActivity.this, mLocalHttpProxyPort.get());
-                mWebView.loadUrl("https://ipinfo.io/");
+                mWebView.loadUrl("https://freegeoip.app/");
             }
         });
     }

+ 3 - 1
MobileLibrary/Android/SampleApps/TunneledWebView/build.gradle

@@ -3,9 +3,10 @@
 buildscript {
     repositories {
         jcenter()
+        google()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.3.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
@@ -15,6 +16,7 @@ buildscript {
 allprojects {
     repositories {
         jcenter()
+        google()
     }
 }
 

+ 2 - 2
MobileLibrary/Android/SampleApps/TunneledWebView/gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Thu Jan 21 13:26:45 EST 2016
+#Wed Jul 11 15:09:35 EDT 2018
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip