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:
parent
ad1bcb8d5d
commit
028f76e62e
|
@ -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 {
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in New Issue