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 {
|
android {
|
||||||
compileSdkVersion 25
|
compileSdkVersion 25
|
||||||
buildToolsVersion "25"
|
buildToolsVersion "25"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.torproject.android"
|
applicationId "org.torproject.android"
|
||||||
minSdkVersion 16
|
minSdkVersion 23
|
||||||
targetSdkVersion 25
|
targetSdkVersion 25
|
||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
checkReleaseBuilds false
|
checkReleaseBuilds false
|
||||||
// Or, if you prefer, you can continue to check for errors in release builds,
|
// Or, if you prefer, you can continue to check for errors in release builds,
|
||||||
// but continue the build even when errors are found:
|
// but continue the build even when errors are found:
|
||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
minifyEnabled false
|
minifyEnabled false
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
productFlavors {
|
||||||
|
minimalperm {
|
||||||
|
minSdkVersion 16
|
||||||
|
applicationId 'org.torproject.android'
|
||||||
|
targetSdkVersion 22
|
||||||
|
maxSdkVersion 22
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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