Skip to content
This repository has been archived by the owner on Mar 15, 2022. It is now read-only.

Commit

Permalink
Merge pull request #359 from YTVanced/dev
Browse files Browse the repository at this point in the history
Manager 2.2.0 Update
- Added ability to adjust root script timer
- Added an app launch button
- Improved root installer (again)
- Updated logo (again)
- Fixed issues with downloader
- UI fixes and improvements
- Stock YouTube/Music apps should no longer show up as installed
  • Loading branch information
KevinX8 committed Jan 16, 2021
2 parents d896a8c + e83451a commit b8f6ac9
Show file tree
Hide file tree
Showing 148 changed files with 1,934 additions and 1,227 deletions.
142 changes: 142 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.firebase.firebase-perf")
id("androidx.navigation.safeargs.kotlin")
}

android {
compileSdkVersion(30)

defaultConfig {
applicationId = "com.vanced.manager"
minSdkVersion(21)
targetSdkVersion(30)
versionCode = 220
versionName = "2.2.0 (RootedFirebase)"

vectorDrawables.useSupportLibrary = true

buildConfigField("String[]", "MANAGER_LANGUAGES", "{" + getLanguages() + "}")
buildConfigField("Boolean", "ENABLE_CROWDIN_AUTH", "false")
buildConfigField("String", "CROWDIN_HASH", "\"${System.getenv("CROWDIN_HASH")}\"")
buildConfigField("String", "CROWDIN_CLIENT_ID", "\"${System.getenv("CROWDIN_CLIENT_ID")}\"")
buildConfigField("String", "CROWDIN_CLIENT_SECRET", "\"${System.getenv("CROWDIN_CLIENT_SECRET")}\"")
}

lintOptions {
disable("MissingTranslation", "ExtraTranslation")
}

applicationVariants.all {
resValue("string", "versionName", versionName)
}

buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}

buildFeatures {
dataBinding = true // ObservableField migrate to flow or liveData
viewBinding = true
}

packagingOptions {
exclude("META-INF/DEPENDENCIES")
exclude("META-INF/*.kotlin_module")
}

// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
}
}

}

fun getLanguages(): String {
val langs = arrayListOf("en", "bn_BD", "bn_IN", "pa_IN", "pa_PK", "pt_BR", "pt_PT", "zh_CN", "zh_TW")
val exceptions = arrayOf("bn", "pa", "pt", "zh")

File("$projectDir/src/main/res").listFiles()?.forEach { dir ->
if (dir.name.startsWith("values-") && !dir.name.contains("v23")) {
val dirname = dir.name.substringAfter("-").substringBefore("-")
if (!exceptions.any { dirname == it }) {
langs.add(dirname)
}
}
}
return langs.joinToString(", ") { "\"$it\"" }
}

dependencies {

implementation(project(":core-presentation"))
implementation(project(":core-ui"))

implementation(project(":library-network"))

// Kotlin
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))

// AndroidX
implementation("androidx.appcompat:appcompat:1.2.0")
implementation("androidx.browser:browser:1.3.0")
implementation("androidx.constraintlayout:constraintlayout:2.0.4")
implementation("androidx.core:core-ktx:1.3.2")
implementation("androidx.fragment:fragment-ktx:1.2.5")
implementation("androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0")
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.0.0")
implementation("androidx.navigation:navigation-fragment-ktx:2.3.2")
implementation("androidx.navigation:navigation-ui-ktx:2.3.2")
implementation("androidx.preference:preference-ktx:1.1.1")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")

//Appearance
implementation("com.github.madrapps:pikolo:2.0.1")
implementation("com.google.android.material:material:1.3.0-rc01")

// JSON parser
implementation("com.beust:klaxon:5.4")

// Crowdin
implementation("com.crowdin.platform:mobile-sdk:1.2.0")

// Tips
implementation("com.github.florent37:viewtooltip:1.2.2")

// HTTP networking
implementation("com.github.kittinunf.fuel:fuel:2.3.0")
implementation("com.github.kittinunf.fuel:fuel-coroutines:2.2.3")
implementation("com.github.kittinunf.fuel:fuel-json:2.2.3")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0")

// Root permissions
implementation("com.github.topjohnwu.libsu:core:3.0.2")
implementation("com.github.topjohnwu.libsu:io:3.0.2")

// Layout
implementation("com.google.android:flexbox:2.0.1")

// Firebase
implementation("com.google.firebase:firebase-analytics-ktx:18.0.1")
implementation("com.google.firebase:firebase-crashlytics:17.3.0")
implementation("com.google.firebase:firebase-messaging:21.0.1")
implementation("com.google.firebase:firebase-perf:19.1.0")
}
2 changes: 1 addition & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# proguardFiles setting in build.gradle.kts.kts.kts.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
10 changes: 3 additions & 7 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,12 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:largeHeap="true"
tools:ignore="UnusedAttribute">

<activity
android:name=".ui.core.SplashScreenActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme"
android:screenOrientation="portrait">
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -52,16 +50,14 @@

<activity
android:name=".ui.WelcomeActivity"
android:theme="@style/DarkTheme"
android:screenOrientation="portrait"/>
android:theme="@style/DarkTheme"/>

<activity
android:name=".ui.MainActivity"
android:configChanges="layoutDirection|locale"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/DarkTheme"
android:screenOrientation="portrait">
android:theme="@style/DarkTheme">

<intent-filter>
<action android:name="android.intent.action.VIEW" />
Expand Down
Binary file added app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 15 additions & 7 deletions app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.github.florent37.viewtooltip.ViewTooltip
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewAppBinding
import com.vanced.manager.model.DataModel
import com.vanced.manager.model.RootDataModel
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.viewmodels.HomeViewModel

Expand All @@ -23,7 +24,7 @@ class AppListAdapter(

val apps = mutableListOf<String>()
private val dataModels = mutableListOf<DataModel?>()
private val rootDataModels = mutableListOf<DataModel?>()
private val rootDataModels = mutableListOf<RootDataModel?>()
private val prefs = getDefaultSharedPreferences(context)
private var itemCount = 0

Expand All @@ -45,9 +46,16 @@ class AppListAdapter(
appUninstall.setOnClickListener {
dataModel?.appPkg?.let { it1 -> viewModel.uninstallPackage(it1) }
}
appUninstall.isVisible = dataModel?.isAppInstalled?.value == true
appLaunch.setOnClickListener {
viewModel.launchApp(apps[position], isRoot)
}
with(dataModel?.isAppInstalled?.value) {
appUninstall.isVisible = this == true
appLaunch.isVisible = this == true
}
dataModel?.isAppInstalled?.observe(lifecycleOwner) {
appUninstall.isVisible = it
appLaunch.isVisible = it
}
appRemoteVersion.text = dataModel?.versionName?.value
dataModel?.versionName?.observe(lifecycleOwner) {
Expand Down Expand Up @@ -84,21 +92,21 @@ class AppListAdapter(
init {

if (prefs.getBoolean("enable_vanced", true)) {
dataModels.add(viewModel.vanced.value)
rootDataModels.add(viewModel.vancedRoot.value)
dataModels.add(viewModel.vancedModel.value)
rootDataModels.add(viewModel.vancedRootModel.value)
apps.add(context.getString(R.string.vanced))
itemCount++
}

if (prefs.getBoolean("enable_music", true)) {
dataModels.add(viewModel.music.value)
rootDataModels.add(viewModel.musicRoot.value)
dataModels.add(viewModel.musicModel.value)
rootDataModels.add(viewModel.musicRootModel.value)
apps.add(context.getString(R.string.music))
itemCount++
}

if (!isRoot) {
dataModels.add(viewModel.microg.value)
dataModels.add(viewModel.microgModel.value)
apps.add(context.getString(R.string.microg))
itemCount++
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/vanced/manager/core/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import com.crowdin.platform.CrowdinConfig
import com.crowdin.platform.data.model.AuthConfig
import com.crowdin.platform.data.remote.NetworkType
import com.vanced.manager.BuildConfig.*
import com.vanced.manager.utils.InternetTools.loadJson
import com.vanced.manager.utils.loadJson
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ package com.vanced.manager.core.downloader

import android.content.Context
import com.vanced.manager.R
import com.vanced.manager.utils.DownloadHelper.download
import com.vanced.manager.utils.DownloadHelper.downloadProgress
import com.vanced.manager.utils.DownloadHelper.fuelDownload
import com.vanced.manager.utils.InternetTools.microg
import com.vanced.manager.utils.PackageHelper.install
import com.vanced.manager.utils.getDefaultPrefs
import com.vanced.manager.utils.getInstallUrl
import com.vanced.manager.utils.microg

object MicrogDownloader {

Expand All @@ -14,11 +16,13 @@ object MicrogDownloader {

fun downloadMicrog(context: Context) {
val url = microg.value?.string("url") ?: ""
fuelDownload(url, folderName, fileName, context, onDownloadComplete = {
startMicrogInstall(context)
}, onError = {
downloadProgress.value?.downloadingFile?.postValue(context.getString(R.string.error_downloading, fileName))
})
context.getDefaultPrefs().getInstallUrl()?.let {
download(url, "$it/", folderName, fileName, context, onDownloadComplete = {
startMicrogInstall(context)
}, onError = {
downloadProgress.value?.downloadingFile?.postValue(context.getString(R.string.error_downloading, fileName))
})
}

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@ package com.vanced.manager.core.downloader
import android.content.Context
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.vanced.manager.R
import com.vanced.manager.utils.*
import com.vanced.manager.utils.AppUtils.musicRootPkg
import com.vanced.manager.utils.AppUtils.validateTheme
import com.vanced.manager.utils.DeviceUtils.getArch
import com.vanced.manager.utils.DownloadHelper.download
import com.vanced.manager.utils.DownloadHelper.downloadProgress
import com.vanced.manager.utils.DownloadHelper.fuelDownload
import com.vanced.manager.utils.Extensions.getInstallUrl
import com.vanced.manager.utils.Extensions.getLatestAppVersion
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
import com.vanced.manager.utils.InternetTools.music
import com.vanced.manager.utils.InternetTools.musicVersions
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
import com.vanced.manager.utils.PackageHelper.install
import com.vanced.manager.utils.PackageHelper.installMusicRoot
Expand Down Expand Up @@ -42,10 +37,10 @@ object MusicDownloader {

private fun downloadApk(context: Context, apk: String = "music") {
val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk"
fuelDownload(url, folderName!!, getFileNameFromUrl(url), context, onDownloadComplete = {
download(url, baseurl + "/", folderName!!, getFileNameFromUrl(url), context, onDownloadComplete = {
if (variant == "root" && apk != "stock") {
downloadApk(context, "stock")
return@fuelDownload
return@download
}

when (apk) {
Expand Down
Loading

0 comments on commit b8f6ac9

Please sign in to comment.