add "minimal permission" build for SDK 16 to 22 devices

- these platforms don't allow for runtime permissions requests and the new permissions we are asking for can be alarming
- we will disable the advanced hidden service features on these devices
This commit is contained in:
Nathan Freitas 2017-06-09 02:01:42 -04:00
parent ad1bcb8d5d
commit 028f76e62e
3 changed files with 254 additions and 4 deletions

View File

@ -3,26 +3,31 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25"
defaultConfig {
applicationId "org.torproject.android"
minSdkVersion 16
minSdkVersion 23
targetSdkVersion 25
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
minimalperm {
minSdkVersion 16
applicationId 'org.torproject.android'
targetSdkVersion 22
maxSdkVersion 22
}
}
}
dependencies {

View File

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.torproject.android"
android:installLocation="auto"
android:versionCode="15410000"
android:versionName="15.4.1-RC-1-multi">
<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="22"
android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<application
android:name=".OrbotApp"
android:allowBackup="false"
android:allowClearUserData="true"
android:configChanges="locale|orientation|screenSize"
android:description="@string/app_description"
android:hardwareAccelerated="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="false"
android:theme="@style/DefaultTheme">
<activity
android:name=".OrbotMainActivity"
android:excludeFromRecents="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="bridge" />
</intent-filter>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.torproject.android.REQUEST_HS_PORT" />
</intent-filter>
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.torproject.android.START_TOR" />
</intent-filter>
</activity>
<!-- This is for ensuring the background service still runs when/if the app is swiped away -->
<activity
android:name=".service.util.DummyActivity"
android:allowTaskReparenting="true"
android:alwaysRetainTaskState="false"
android:clearTaskOnLaunch="true"
android:enabled="true"
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"
android:noHistory="true"
android:stateNotNeeded="true"
android:theme="@android:style/Theme.Translucent" />
<activity
android:name=".vpn.VPNEnableActivity"
android:exported="false"
android:label="@string/app_name" />
<activity
android:name=".ui.PromoAppsActivity"
android:exported="false" />
<activity
android:name=".settings.SettingsPreferences"
android:label="@string/app_name" />
<activity
android:name=".ui.AppManager"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat" />
<service
android:name=".service.TorService"
android:enabled="true"
android:permission="android.permission.BIND_VPN_SERVICE"
android:stopWithTask="false"></service>
<service
android:name=".service.vpn.TorVpnService"
android:enabled="true"
android:permission="android.permission.BIND_VPN_SERVICE">
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
</service>
<receiver
android:name=".service.StartTorReceiver"
android:exported="true">
<intent-filter>
<action android:name="org.torproject.android.intent.action.START" />
</intent-filter>
</receiver>
<receiver
android:name=".OnBootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<activity
android:name=".ui.hiddenservices.HiddenServicesActivity"
android:label="@string/title_activity_hidden_services"
android:theme="@style/DefaultTheme">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".OrbotMainActivity" />
</activity>
<provider
android:name=".ui.hiddenservices.providers.HSContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers"
android:exported="false" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="org.torproject.android.ui.hiddenservices.storage"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/hidden_services_paths" />
</provider>
<activity
android:name=".ui.hiddenservices.ClientCookiesActivity"
android:label="@string/client_cookies"
android:theme="@style/DefaultTheme">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".OrbotMainActivity" />
</activity>
<provider
android:name=".ui.hiddenservices.providers.CookieContentProvider"
android:authorities="org.torproject.android.ui.hiddenservices.providers.cookie"
android:exported="false" />
</application>
</manifest>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
* Copyright (C) 2008 Esmertec AG.
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
>
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:icon="@drawable/ic_action_settings"
yourapp:showAsAction="never"
/>
<item
android:title="@string/menu_qr"
yourapp:showAsAction="never"
>
<menu>
<item android:id="@+id/menu_scan"
android:title="@string/menu_scan"
yourapp:showAsAction="never"
/>
<item android:id="@+id/menu_share_bridge"
android:title="@string/menu_share_bridge"
yourapp:showAsAction="never"
/>
</menu>
</item>
<!--
<item
android:title="@string/menu_hidden_services"
yourapp:showAsAction="never"
>
<menu>
<item android:id="@+id/menu_hidden_services"
android:title="@string/hosted_services"
yourapp:showAsAction="never"
/>
<item android:id="@+id/menu_client_cookies"
android:title="@string/client_cookies"
yourapp:showAsAction="never"
/>
</menu>
</item>
-->
<item android:id="@+id/menu_about"
android:title="@string/menu_about"
android:icon="@drawable/ic_menu_about"
yourapp:showAsAction="never"
/>
<item android:id="@+id/menu_exit"
android:title="@string/menu_exit"
android:icon="@drawable/ic_menu_exit"
yourapp:showAsAction="never"
/>
</menu>