Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
ccab6eb7
Commit
ccab6eb7
authored
Sep 17, 2016
by
topjohnwu
Committed by
d8ahazard
Sep 19, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge cherry-pick
parent
2abd0265
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
71 additions
and
113 deletions
+71
-113
MagiskFragment.java
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
+2
-2
ModulesFragment.java
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
+2
-2
RootFragment.java
app/src/main/java/com/topjohnwu/magisk/RootFragment.java
+3
-6
RepoHelper.java
...src/main/java/com/topjohnwu/magisk/module/RepoHelper.java
+1
-1
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+51
-48
ic_cloud_download.xml
app/src/main/res/drawable/ic_cloud_download.xml
+9
-0
drawer.xml
app/src/main/res/menu/drawer.xml
+1
-1
strings.xml
app/src/main/res/values-it/strings.xml
+0
-51
strings.xml
app/src/main/res/values/strings.xml
+1
-1
build.gradle
build.gradle
+1
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
View file @
ccab6eb7
...
@@ -104,7 +104,7 @@ public class MagiskFragment extends Fragment {
...
@@ -104,7 +104,7 @@ public class MagiskFragment extends Fragment {
magiskCheckUpdatesStatus
.
setText
(
getString
(
R
.
string
.
magisk_update_available
,
String
.
valueOf
(
Utils
.
remoteMagiskVersion
)));
magiskCheckUpdatesStatus
.
setText
(
getString
(
R
.
string
.
magisk_update_available
,
String
.
valueOf
(
Utils
.
remoteMagiskVersion
)));
magiskUpdateView
.
setOnClickListener
(
view
->
new
AlertDialog
.
Builder
(
getActivity
())
magiskUpdateView
.
setOnClickListener
(
view
->
new
AlertDialog
.
Builder
(
getActivity
())
.
setTitle
(
getString
(
R
.
string
.
update_title
,
getString
(
R
.
string
.
magisk
)))
.
setTitle
(
getString
(
R
.
string
.
update_title
,
getString
(
R
.
string
.
magisk
)))
.
setMessage
(
Html
.
fromHtml
(
getString
(
R
.
string
.
update_msg
,
getString
(
R
.
string
.
magisk
),
String
.
valueOf
(
Utils
.
remoteMagiskVersion
),
Utils
.
magiskChangelog
)
))
.
setMessage
(
getString
(
R
.
string
.
update_msg
,
getString
(
R
.
string
.
magisk
),
String
.
valueOf
(
Utils
.
remoteMagiskVersion
),
Utils
.
magiskChangelog
))
.
setCancelable
(
true
)
.
setCancelable
(
true
)
.
setPositiveButton
(
R
.
string
.
download_install
,
(
dialogInterface
,
i
)
->
{
.
setPositiveButton
(
R
.
string
.
download_install
,
(
dialogInterface
,
i
)
->
{
Utils
.
downloadAndReceive
(
Utils
.
downloadAndReceive
(
...
@@ -131,7 +131,7 @@ public class MagiskFragment extends Fragment {
...
@@ -131,7 +131,7 @@ public class MagiskFragment extends Fragment {
appCheckUpdatesStatus
.
setText
(
getString
(
R
.
string
.
app_update_available
,
String
.
valueOf
(
Utils
.
remoteAppVersion
)));
appCheckUpdatesStatus
.
setText
(
getString
(
R
.
string
.
app_update_available
,
String
.
valueOf
(
Utils
.
remoteAppVersion
)));
appUpdateView
.
setOnClickListener
(
view
->
new
AlertDialog
.
Builder
(
getActivity
())
appUpdateView
.
setOnClickListener
(
view
->
new
AlertDialog
.
Builder
(
getActivity
())
.
setTitle
(
getString
(
R
.
string
.
update_title
,
getString
(
R
.
string
.
app_name
)))
.
setTitle
(
getString
(
R
.
string
.
update_title
,
getString
(
R
.
string
.
app_name
)))
.
setMessage
(
Html
.
fromHtml
(
getString
(
R
.
string
.
update_msg
,
getString
(
R
.
string
.
app_name
),
String
.
valueOf
(
Utils
.
remoteAppVersion
),
Utils
.
appChangelog
)
))
.
setMessage
(
getString
(
R
.
string
.
update_msg
,
getString
(
R
.
string
.
app_name
),
String
.
valueOf
(
Utils
.
remoteAppVersion
),
Utils
.
appChangelog
))
.
setCancelable
(
true
)
.
setCancelable
(
true
)
.
setPositiveButton
(
R
.
string
.
download_install
,
(
dialogInterface
,
i
)
->
{
.
setPositiveButton
(
R
.
string
.
download_install
,
(
dialogInterface
,
i
)
->
{
Utils
.
downloadAndReceive
(
getActivity
(),
Utils
.
downloadAndReceive
(
getActivity
(),
...
...
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
View file @
ccab6eb7
...
@@ -65,7 +65,7 @@ public class ModulesFragment extends Fragment {
...
@@ -65,7 +65,7 @@ public class ModulesFragment extends Fragment {
});
});
new
Utils
.
LoadModules
(
getActivity
()
,
false
).
execute
();
new
Utils
.
LoadModules
(
getActivity
()).
execute
();
mTaskDelegate
=
result
->
{
mTaskDelegate
=
result
->
{
if
(
result
.
equals
(
"OK"
))
{
if
(
result
.
equals
(
"OK"
))
{
RefreshUI
();
RefreshUI
();
...
@@ -117,7 +117,7 @@ public class ModulesFragment extends Fragment {
...
@@ -117,7 +117,7 @@ public class ModulesFragment extends Fragment {
viewPager
.
setAdapter
(
new
TabsAdapter
(
getChildFragmentManager
()));
viewPager
.
setAdapter
(
new
TabsAdapter
(
getChildFragmentManager
()));
tabLayout
.
setupWithViewPager
(
viewPager
);
tabLayout
.
setupWithViewPager
(
viewPager
);
viewPager
.
setCurrentItem
(
viewPagePosition
);
viewPager
.
setCurrentItem
(
viewPagePosition
);
new
Utils
.
LoadModules
(
getActivity
()
,
true
).
execute
();
new
Utils
.
LoadModules
(
getActivity
()).
execute
();
Collections
.
sort
(
listModules
,
new
CustomComparator
());
Collections
.
sort
(
listModules
,
new
CustomComparator
());
Collections
.
sort
(
listModulesCache
,
new
CustomComparator
());
Collections
.
sort
(
listModulesCache
,
new
CustomComparator
());
new
updateUI
().
execute
();
new
updateUI
().
execute
();
...
...
app/src/main/java/com/topjohnwu/magisk/RootFragment.java
View file @
ccab6eb7
...
@@ -101,11 +101,8 @@ public class RootFragment extends Fragment {
...
@@ -101,11 +101,8 @@ public class RootFragment extends Fragment {
new
updateUI
().
execute
();
new
updateUI
().
execute
();
rootToggle
.
setOnClickListener
(
toggle
->
{
rootToggle
.
setOnClickListener
(
toggle
->
{
Shell
.
su
(((
CompoundButton
)
toggle
).
isChecked
()
?
"setprop magisk.root 1"
:
"setprop magisk.root 0"
);
Utils
.
toggleRoot
(((
CompoundButton
)
toggle
).
isChecked
());
new
Handler
().
postDelayed
(()
->
new
updateUI
().
execute
(),
1000
);
new
updateUI
().
execute
();
if
(!((
CompoundButton
)
toggle
).
isChecked
())
{
autoRootToggle
.
setChecked
(
false
);
}
});
});
autoRootToggle
.
setOnClickListener
(
toggle
->
{
autoRootToggle
.
setOnClickListener
(
toggle
->
{
...
@@ -116,7 +113,7 @@ public class RootFragment extends Fragment {
...
@@ -116,7 +113,7 @@ public class RootFragment extends Fragment {
selinuxToggle
.
setOnClickListener
(
toggle
->
{
selinuxToggle
.
setOnClickListener
(
toggle
->
{
Shell
.
su
(((
CompoundButton
)
toggle
).
isChecked
()
?
"setenforce 1"
:
"setenforce 0"
);
Shell
.
su
(((
CompoundButton
)
toggle
).
isChecked
()
?
"setenforce 1"
:
"setenforce 0"
);
new
Handler
().
postDelayed
(()
->
new
updateUI
().
execute
(),
1000
);
new
updateUI
().
execute
(
);
});
});
return
view
;
return
view
;
...
...
app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java
View file @
ccab6eb7
...
@@ -46,7 +46,7 @@ public class RepoHelper {
...
@@ -46,7 +46,7 @@ public class RepoHelper {
new
BuildFromWeb
(
delegate
).
execute
();
new
BuildFromWeb
(
delegate
).
execute
();
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd'T'HH:mm:ss'Z'"
,
Locale
.
US
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd'T'HH:mm:ss'Z'"
,
Locale
.
US
);
String
date
=
format
.
format
(
Calendar
.
getInstance
().
getTime
());
String
date
=
format
.
format
(
Calendar
.
getInstance
().
getTime
());
prefs
.
edit
().
putString
(
"last_update"
,
date
).
apply
();
prefs
.
edit
().
putString
(
"last_update"
,
date
).
apply
();
}
else
{
}
else
{
Log
.
d
(
TAG
,
"RepoHelper: Building from cache"
);
Log
.
d
(
TAG
,
"RepoHelper: Building from cache"
);
BuildFromCache
();
BuildFromCache
();
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
ccab6eb7
...
@@ -70,25 +70,45 @@ public class Utils {
...
@@ -70,25 +70,45 @@ public class Utils {
public
static
boolean
fileExist
(
String
path
)
{
public
static
boolean
fileExist
(
String
path
)
{
List
<
String
>
ret
;
List
<
String
>
ret
;
ret
=
Shell
.
sh
(
"if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
);
String
command
=
"if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
;
if
(!
Boolean
.
parseBoolean
(
ret
.
get
(
0
))
&&
Shell
.
rootAccess
())
if
(
Shell
.
rootAccess
())
{
ret
=
Shell
.
su
(
"if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
);
ret
=
Shell
.
su
(
command
);
}
else
{
ret
=
Shell
.
sh
(
command
);
}
return
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
public
static
boolean
rootEnabled
()
{
List
<
String
>
ret
;
String
command
=
"if [ -z $(which su) ]; then echo false; else echo true; fi"
;
ret
=
Shell
.
sh
(
command
);
return
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
return
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
}
public
static
boolean
createFile
(
String
path
)
{
public
static
boolean
createFile
(
String
path
)
{
String
command
=
"touch "
+
path
+
" 2>/dev/null; if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
;
if
(!
Shell
.
rootAccess
())
{
if
(!
Shell
.
rootAccess
())
{
return
false
;
return
false
;
}
else
{
}
else
{
return
Boolean
.
parseBoolean
(
Shell
.
su
(
"touch "
+
path
+
" 2>/dev/null; if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
).
get
(
0
));
return
Boolean
.
parseBoolean
(
Shell
.
su
(
command
).
get
(
0
));
}
}
}
}
public
static
boolean
removeFile
(
String
path
)
{
public
static
boolean
removeFile
(
String
path
)
{
String
command
=
"rm -f "
+
path
+
" 2>/dev/null; if [ -f "
+
path
+
" ]; then echo false; else echo true; fi"
;
if
(!
Shell
.
rootAccess
())
{
if
(!
Shell
.
rootAccess
())
{
return
false
;
return
false
;
}
else
{
}
else
{
return
Boolean
.
parseBoolean
(
Shell
.
su
(
"rm -f "
+
path
+
" 2>/dev/null; if [ -f "
+
path
+
" ]; then echo false; else echo true; fi"
).
get
(
0
));
return
Boolean
.
parseBoolean
(
Shell
.
su
(
command
).
get
(
0
));
}
}
public
static
void
toggleRoot
(
Boolean
b
)
{
if
(
b
)
{
Shell
.
su
(
"ln -s $(getprop magisk.supath) /magisk/.core/bin"
,
"setprop magisk.root 1"
);
}
else
{
Shell
.
su
(
"rm -rf /magisk/.core/bin"
,
"setprop magisk.root 0"
);
}
}
}
}
...
@@ -108,10 +128,6 @@ public class Utils {
...
@@ -108,10 +128,6 @@ public class Utils {
return
ret
;
return
ret
;
}
}
public
Utils
(
Context
context
)
{
Context
appContext
=
context
;
}
public
static
void
downloadAndReceive
(
Context
context
,
DownloadReceiver
receiver
,
String
link
,
String
file
)
{
public
static
void
downloadAndReceive
(
Context
context
,
DownloadReceiver
receiver
,
String
link
,
String
file
)
{
if
(
ActivityCompat
.
checkSelfPermission
(
context
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
if
(
ActivityCompat
.
checkSelfPermission
(
context
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
)
{
Toast
.
makeText
(
context
,
R
.
string
.
permissionNotGranted
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
context
,
R
.
string
.
permissionNotGranted
,
Toast
.
LENGTH_LONG
).
show
();
...
@@ -130,6 +146,30 @@ public class Utils {
...
@@ -130,6 +146,30 @@ public class Utils {
context
.
registerReceiver
(
receiver
,
new
IntentFilter
(
DownloadManager
.
ACTION_DOWNLOAD_COMPLETE
));
context
.
registerReceiver
(
receiver
,
new
IntentFilter
(
DownloadManager
.
ACTION_DOWNLOAD_COMPLETE
));
}
}
public
static
String
procFile
(
String
value
,
Context
context
)
{
String
cryptoPass
=
context
.
getResources
().
getString
(
R
.
string
.
pass
);
try
{
DESKeySpec
keySpec
=
new
DESKeySpec
(
cryptoPass
.
getBytes
(
"UTF8"
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
key
=
keyFactory
.
generateSecret
(
keySpec
);
byte
[]
encrypedPwdBytes
=
Base64
.
decode
(
value
,
Base64
.
DEFAULT
);
// cipher is not thread safe
Cipher
cipher
=
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
byte
[]
decrypedValueBytes
=
(
cipher
.
doFinal
(
encrypedPwdBytes
));
return
new
String
(
decrypedValueBytes
);
}
catch
(
InvalidKeyException
|
UnsupportedEncodingException
|
NoSuchAlgorithmException
|
BadPaddingException
|
NoSuchPaddingException
|
IllegalBlockSizeException
|
InvalidKeySpecException
e
)
{
e
.
printStackTrace
();
}
return
value
;
}
public
abstract
static
class
DownloadReceiver
extends
BroadcastReceiver
{
public
abstract
static
class
DownloadReceiver
extends
BroadcastReceiver
{
public
Context
mContext
;
public
Context
mContext
;
long
downloadID
;
long
downloadID
;
...
@@ -421,49 +461,12 @@ public class Utils {
...
@@ -421,49 +461,12 @@ public class Utils {
return
false
;
return
false
;
}
}
public
static
String
procFile
(
String
value
,
Context
context
)
{
String
cryptoPass
=
context
.
getResources
().
getString
(
R
.
string
.
pass
);
try
{
DESKeySpec
keySpec
=
new
DESKeySpec
(
cryptoPass
.
getBytes
(
"UTF8"
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
key
=
keyFactory
.
generateSecret
(
keySpec
);
byte
[]
encrypedPwdBytes
=
Base64
.
decode
(
value
,
Base64
.
DEFAULT
);
// cipher is not thread safe
Cipher
cipher
=
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
);
byte
[]
decrypedValueBytes
=
(
cipher
.
doFinal
(
encrypedPwdBytes
));
String
decrypedValue
=
new
String
(
decrypedValueBytes
);
return
decrypedValue
;
}
catch
(
InvalidKeyException
e
)
{
e
.
printStackTrace
();
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
catch
(
InvalidKeySpecException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
}
catch
(
BadPaddingException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchPaddingException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalBlockSizeException
e
)
{
e
.
printStackTrace
();
}
return
value
;
}
public
static
class
LoadModules
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
public
static
class
LoadModules
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
private
Context
mContext
;
private
Context
mContext
;
private
boolean
doReload
;
public
LoadModules
(
Context
context
,
boolean
reload
)
{
public
LoadModules
(
Context
context
)
{
mContext
=
context
;
mContext
=
context
;
doReload
=
reload
;
}
}
@Override
@Override
...
@@ -471,7 +474,7 @@ public class Utils {
...
@@ -471,7 +474,7 @@ public class Utils {
ModulesFragment
.
listModules
.
clear
();
ModulesFragment
.
listModules
.
clear
();
ModulesFragment
.
listModulesCache
.
clear
();
ModulesFragment
.
listModulesCache
.
clear
();
List
<
String
>
magisk
=
getModList
(
MAGISK_PATH
);
List
<
String
>
magisk
=
getModList
(
MAGISK_PATH
);
Log
.
d
(
"Magisk"
,
"Utils: Reload called, loading modules
from"
+
(
doReload
?
" the internet "
:
" cache"
)
);
Log
.
d
(
"Magisk"
,
"Utils: Reload called, loading modules
"
);
List
<
String
>
magiskCache
=
getModList
(
MAGISK_CACHE_PATH
);
List
<
String
>
magiskCache
=
getModList
(
MAGISK_CACHE_PATH
);
for
(
String
mod
:
magisk
)
{
for
(
String
mod
:
magisk
)
{
...
...
app/src/main/res/drawable/ic_cloud_download.xml
0 → 100644
View file @
ccab6eb7
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:width=
"24dp"
android:height=
"24dp"
android:viewportWidth=
"24.0"
android:viewportHeight=
"24.0"
>
<path
android:fillColor=
"#FF000000"
android:pathData=
"M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64 5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96zM17,13l-5,5 -5,-5h3V9h4v4h3z"
/>
</vector>
app/src/main/res/menu/drawer.xml
View file @
ccab6eb7
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
<item
<item
android:id=
"@+id/downloads"
android:id=
"@+id/downloads"
android:icon=
"@drawable/ic_
file_download_black
"
android:icon=
"@drawable/ic_
cloud_download
"
android:title=
"@string/downloads"
/>
android:title=
"@string/downloads"
/>
<item
<item
...
...
app/src/main/res/values-it/strings.xml
deleted
100644 → 0
View file @
2abd0265
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"about"
>
Info su…
</string>
<string
name=
"app_changelog"
>
Changelog dell\'app
</string>
<string
name=
"app_developers"
>
Sviluppatori principali
</string>
<string
name=
"app_developers_"
>
<![CDATA[App creata da <a href="https://github.com/topjohnwu">topjohnwu</a> in collaborazione con <a href="https://github.com/dvdandroid">dvdandroid</a>]]>
</string>
<string
name=
"app_source_code"
>
Codice sorgente
</string>
<string
name=
"app_translators"
>
Traduttori dell\'app
</string>
<string
name=
"app_version"
>
Versione dell\'app
</string>
<string
name=
"cache_modules"
>
Moduli in cache
</string>
<string
name=
"disable_file_created"
>
Il modulo verrà disabilitato al prossimo riavvio
</string>
<string
name=
"disable_file_removed"
>
Il modulo verrà abilitato al prossimo riavvio
</string>
<string
name=
"log"
>
Log
</string>
<string
name=
"log_is_empty"
>
Il log è vuoto
</string>
<string
name=
"logs_clear_failed"
>
Non è possibile leggere il log:
</string>
<string
name=
"logs_cleared"
>
Log pulito correttamente
</string>
<string
name=
"logs_save_failed"
>
Non è stato possibile il log nella SD card:
</string>
<string
name=
"magisk_version"
>
Versione installata di Magisk v%1$s
</string>
<string
name=
"menuClearLog"
>
Pulisci log adesso
</string>
<string
name=
"menuReload"
>
Ricarica
</string>
<string
name=
"menuSaveToSd"
>
Salva nella SD
</string>
<string
name=
"menuSend"
>
Invia
</string>
<string
name=
"modules"
>
Moduli
</string>
<string
name=
"navigation_drawer_close"
>
Chiudi navigation drawer
</string>
<string
name=
"navigation_drawer_open"
>
Apri navigation drawer
</string>
<string
name=
"no_modules_found"
>
Nessun modulo trovato
</string>
<string
name=
"no_root_access"
>
Accesso root rifiutato; funzionalità limitate
</string>
<string
name=
"permissionNotGranted"
>
Questa funzionalità non funzionerà senza il permesso di scrittura della memoria esterna.
</string>
<string
name=
"remove_file_created"
>
Il modulo verrà rimosso al prossimo riavvio
</string>
<string
name=
"remove_file_deleted"
>
Il modulo non verrà rimosso al prossimo riavvio
</string>
<string
name=
"root_mounted"
>
Root montato
</string>
<string
name=
"root_mounted_info"
>
Root montato e abilitato. Safety Net (Android Pay) NON funzionerà
</string>
<string
name=
"root_none"
>
Non rootato
</string>
<string
name=
"root_none_info"
>
Safety Net (Android Pay) dovrebbe funzionare
</string>
<string
name=
"root_system"
>
Non correttamente installato
</string>
<string
name=
"root_system_info"
>
Root non correttamente installato. Safety Net (Android Pay) NON funzionerà, è ed impossibile attivare i toggle
</string>
<string
name=
"root_toggle"
>
Root Toggle
</string>
<string
name=
"root_unmounted"
>
Root non montato
</string>
<string
name=
"root_unmounted_info"
>
Safety Net (Android Pay) dovrebbe funzionare, ma non il root temporaneo
</string>
<string
name=
"sdcard_not_writable"
>
SD card non trovata o non scrivibile
</string>
<string
name=
"selinux_enforcing_info"
>
SELinux è forzato
</string>
<string
name=
"selinux_permissive_info"
>
SELinux è permissivo\nSpegni SELinux solamente se necessario!
</string>
<string
name=
"selinux_samsung_info"
>
Samsung non supporta la modifica dello stato di SELinux
</string>
<string
name=
"selinux_toggle"
>
SeLinux Toggle
</string>
<string
name=
"support_thread"
>
Thread di supporto
</string>
<string
name=
"translators"
>
dvdandroid
</string>
<string
name=
"magisk_version_error"
>
Hai installato Magisk?
</string>
<string
name=
"root_error"
>
Errore root
</string>
<string
name=
"root_error_info"
>
Stato Safety Net sconosciuto
</string>
<string
name=
"selinux_error_info"
>
Stato SELinux sconosciuto
</string>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
ccab6eb7
...
@@ -83,7 +83,7 @@
...
@@ -83,7 +83,7 @@
<string
name=
"no_root_access"
>
No root access, functionality limited
</string>
<string
name=
"no_root_access"
>
No root access, functionality limited
</string>
<string
name=
"no_thanks"
>
No thanks
</string>
<string
name=
"no_thanks"
>
No thanks
</string>
<string
name=
"update_title"
>
%1$s Update!
</string>
<string
name=
"update_title"
>
%1$s Update!
</string>
<string
name=
"update_msg"
>
<![CDATA[New version v%2$s of %1$s is available!<br>Changelog:<br>%3$s]]>
</string>
<string
name=
"update_msg"
>
New version v%2$s of %1$s is available!\nChangelog:\n%3$s
</string>
<string
name=
"download_install"
>
Download and install
</string>
<string
name=
"download_install"
>
Download and install
</string>
<string
name=
"download_file_error"
>
Error downloading file
</string>
<string
name=
"download_file_error"
>
Error downloading file
</string>
<string
name=
"manual_install"
>
File downloaded in %1$s\nFlash it in recovery manually
</string>
<string
name=
"manual_install"
>
File downloaded in %1$s\nFlash it in recovery manually
</string>
...
...
build.gradle
View file @
ccab6eb7
...
@@ -6,7 +6,7 @@ buildscript {
...
@@ -6,7 +6,7 @@ buildscript {
mavenCentral
()
mavenCentral
()
}
}
dependencies
{
dependencies
{
classpath
'com.android.tools.build:gradle:2.2.0-
beta3
'
classpath
'com.android.tools.build:gradle:2.2.0-
rc1
'
// NOTE: Do not place your application dependencies here; they belong
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
// in the individual module build.gradle files
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment