Git Product home page Git Product logo

xposedinstaller's People

Contributors

aljohanei avatar amishmm avatar androplus-org avatar aviraxp avatar biohazard1 avatar blackzigong avatar burstlam avatar cpasmoi avatar cye3s avatar davidvazguijarro avatar dvdandroid avatar elmasevmem avatar eltifo avatar ferri64 avatar germainz avatar gooagolf avatar ido1901 avatar ja-som avatar justdj-git avatar liudongmiao avatar liveasx avatar marbulas avatar mohammadag avatar pupu2314 avatar pylersm avatar rovo89 avatar tonymanou avatar tungstwenty avatar vinsce avatar wedydq10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xposedinstaller's Issues

ART compatibility

Since the next major version of Android will be probably be using the ART Runtime ART will be needed to be supported in the future. Any idea what we can do to add support for the same? If Anyone else is working on it what's the current status on it's development?

Use navigation drawer

Instead of using a drop-down menu, shouldn't we use a navigation drawer such as the one in the Play Store app ? With different tabs for the different sections, and some smaller tabs for the "settings" and "about" sections (like Play Store).

Bootloop

Hey, I just install xposed and do a soft reboot and now I'm stuck at brand (Orange) logo.

I've entered in recovery mod and try to flash Xposed-Disabler-Recovery.zip but I get "installation aborted". Also I put another .zip (I think is exactly the same but anyway) on sdcard and it doesn't work with that either. I can't connect with adb shell for some reason and I don't have any ideas left. Can you guys help me unflash this?

I have a Orange Hiro (Alcatel OT Idol Mini) and there's no custom ROM or stock ROM available so I can't flash a ROM to overwrite /system

Freezing apps don't disable module

  1. Install app
  2. Check module
  3. Reboot
  4. Freeze app with module
  5. Reboot
  6. Module still works

I think that when the application is freezed, the module should not work.

Can you provide details of the API reference

You release the wiki is too humble, and even a lot of API reference no record
Such as Xposedhelpers many important functions in a class
Your wiki recorded findandhookmethod only this method
Not everyone can understand the CPP code
In order to facilitate more Java developers, want you to provide details of the API reference

Mounte /system beschreibbar... -> Segmentation fault

After update from 2.50 to 2.51 i get this error if i try to install.

I want check if it work if i go back to 2.50, but i do not find the 2.50 apk. Could you please provide the apk so i could check if the error my system or an 2.51 Bug?

cu

How about use getLinkTextColors instead of android.R.attr.textColorLink

In https://github.com/rovo89/XposedInstaller/blob/master/src/de/robv/android/xposed/installer/DownloadDetailsFragment.java#L67, it uses

txtValue.setTextColor(ThemeUtil.getThemeColor(getActivity(), android.R.attr.textColorLink));

This doesn't work on Gingerbread, and it's a bit complex. How about use

txtValue.setTextColor(txtValue.getLinkTextColors())

Furthermore, getThemeColor only returns a single color, and getLinkTextColors returns ColorStateList.

It's so simple, so I didn't issue a pull request.

Xposed can not find class

My Issue is quite strage.

I am working on a Wechat Plugin. The origin app has an extra dex file in it's folder app_dex

which can be called plugin-dex. The plugin-dex contains some activities and UIs and

what I want to hook is in the plugin-dex.

when the app package was loaded, Xposed cant find the UI class, but startActivity(myUI Intent) is

able to launch.

Perhaps the two dex file in the same app are not loaded at one time ,How can I use Xposed to

solve the problem?

Detect Aliyun OS and prevent installation

These ROMs are not really Android. They have built their own compiler which is incompatible with Xposed. Idea: Prevent installation when "/system/framework/framework.jar.jex" is found.

Crash when restore activity

Logcat

I/ActivityManager(  589): Start proc de.robv.android.xposed.installer for activity de.robv.android.xposed.installer/.XposedInstallerActivity: pid=9163 uid=10131 gids={50131, 1015, 3003, 1028}
D/AndroidRuntime( 9163): Shutting down VM
W/dalvikvm( 9163): threadid=1: thread exiting with uncaught exception (group=0x4154e700)
E/AndroidRuntime( 9163): FATAL EXCEPTION: main
E/AndroidRuntime( 9163): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.robv.android.xposed.installer/de.robv.android.xposed.installer.XposedInstallerActivity}: java.lang.NullPointerException
E/AndroidRuntime( 9163):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
E/AndroidRuntime( 9163):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
E/AndroidRuntime( 9163):    at android.app.ActivityThread.access$600(ActivityThread.java:153)
E/AndroidRuntime( 9163):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
E/AndroidRuntime( 9163):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 9163):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 9163):    at android.app.ActivityThread.main(ActivityThread.java:5289)
E/AndroidRuntime( 9163):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9163):    at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime( 9163):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
E/AndroidRuntime( 9163):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
E/AndroidRuntime( 9163):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 9163): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 9163):    at de.robv.android.xposed.installer.DownloadDetailsFragment.onCreateView(DownloadDetailsFragment.java:67)
E/AndroidRuntime( 9163):    at android.app.Fragment.performCreateView(Fragment.java:1695)
E/AndroidRuntime( 9163):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
E/AndroidRuntime( 9163):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
E/AndroidRuntime( 9163):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
E/AndroidRuntime( 9163):    at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1840)
E/AndroidRuntime( 9163):    at android.app.Activity.performCreate(Activity.java:5136)
E/AndroidRuntime( 9163):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime( 9163):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)
E/AndroidRuntime( 9163):    ... 11 more
W/ActivityManager(  589):   Force finishing activity de.robv.android.xposed.installer/.XposedInstallerActivity
D/dalvikvm(  589): GC_FOR_ALLOC freed 417K, 28% free 29129K/40076K, paused 105ms, total 105ms
D/dalvikvm(  589): GC_FOR_ALLOC freed 765K, 29% free 28737K/40076K, paused 102ms, total 102ms
D/dalvikvm(  856): GC_CONCURRENT freed 772K, 50% free 5387K/10768K, paused 2ms+3ms, total 35ms
E/        ( 1266): POO
W/ActivityManager(  589): Activity pause timeout for ActivityRecord{4242de38 u0 de.robv.android.xposed.installer/.XposedInstallerActivity}
I/Process ( 9163): Sending signal. PID: 9163 SIG: 9
I/ActivityManager(  589): Process de.robv.android.xposed.installer (pid 9163) has died.
I/ActivityManager(  589): Start proc de.robv.android.xposed.installer for activity de.robv.android.xposed.installer/.WelcomeActivity: pid=9201 uid=10131 gids={50131, 1015, 3003, 1028}
D/libEGL  ( 9201): loaded /system/lib/egl/libEGL_adreno200.so
D/libEGL  ( 9201): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
D/libEGL  ( 9201): loaded /system/lib/egl/libGLESv2_adreno200.so
I/Adreno200-EGL( 9201): <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM Build: Iabe52cfaeae4c5fab1acacfe6f056ba15fa93274
D/OpenGLRenderer( 9201): Enabling debug mode 0
I/ActivityManager(  589): Displayed de.robv.android.xposed.installer/.WelcomeActivity: +1s366ms (total +2s335ms)

repo.xml downloaded in plaintext

The installer grabs the repo listing in plain text :

wget http://dl.xposed.info/repo.xml.gz

It would be possible for someone to MITM this and insert malicious xposed extensions.

Enable fast scrolling, tags

Since Xposed repo grows, I think we need this.

Maybe "module tags" would help too. So we can sort modules by tags (show only modules with "TouchWiz" tag only etc...)

Activate and reboot action is bugged

50690a1 adds an action "Activate and reboot" to activate a module right from the installer notification. However, even though the module is activated after selecting the option the module will not work! It's checked in the modules list but it's not being loaded (see debug.log). The module needs to be toggled inactive-active followed by a reboot to fully work. Tested with Xposed GEL Settings and No Wireless Charging Sound.

Installing using zip in recovery fails if device is encrypted

Xposed Framework can only be installed via Xposed Android app if the device is encrypted.
This is a serious issue for XPrivacy users, because XPrivacy (and Xposed Framework) gets disabled on flashing a new nightly.

Currently the user has to:

  1. Reboot into recovery
  2. Flash nightly from external sdcard
  3. Try to install Xposed Framework using the zip -> fails because device is encrypted
  4. Reboot into Android
  5. XPrivacy warns the user because Xposed is not installed
  6. Apps do whatever because XPrivacy is disabled
  7. Run Xposed app, install Xposed Framework, reboot

the problem here is steps 5 and 6 because step 3 fails :/

Support backuptool

It would be great if the Installer could add a backuptool script so xposed will be automatically restored when applying OTA updates.

This is important if you use modules like XPrivacy because apps will get full access until you re-installed xposed.

Settings indicator for modules with settings

Hi,

Some Xposed modules have own settings. If it has <category android:name="android.intent.category.LAUNCHER" /> it shows in launcher.

But I developed small module called QuickPic2Gallery -http://repo.xposed.info/module/com.pyler.quickpic2gallery. It has own settings but since "you set it once and you are done", I use for Settings <category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" />, so it doesnt show in launcher.

But I realize that there is UI problem. User don't know if module provides additional settings when you go to Modules tab in Xposed Installer. You need to click on module to see if there is Launch UI option (or long click on module)

I think the best solution here will be small settings icon in module textview to indicate additional settings.

Enhancement - move the content in assets to libs

Current, there are some files in the assets, it must be unpacked before any usage. But if it's in the libs directory, it will just in the /data/data/*/lib, and this avoids of the unpack assets.

However, the path name must in the format of libXXXX.so.

UI Redesign

The new UI gives us all the features but it's not very intuitive.
That's why I thought about it and tried to optimize it.

First thing: remove the "home" activity and just use a navigation drawer(as said in the other "issue" you can still keep the dropdown enabled).
Then I'd put the current "home" activity into the navigation instead and use it as the default one(this way we don't need to open a new activity when switching between our screens).

Then I'd like to reorganize the navigation targets.
The new ones would be(in order):

  • Home/News
  • Store
  • My Modules
  • Logs
  • About
  • Settings
  • Reboot

I'd style this drawer like the playstore one. the first four should be big and should be navigation targets. About, should be opened in a Dialog - Settings in a new Activity. Reboot should show a dialog, too as I'll mention later.

The default view Home would look like the the sections in playstore's home where you have a big title, three apps in a row and a "more"-button.
Our section's would be "Updates" and "New Modules".

The Store would have three tabs "Modules", "Xposed", and "Categories".
The Modules Tab would be exactly the same as the current "Download"-Activity.

Xposed would have two sections like the Home view with the titles "Installer" and "Framework".
It should be easy to update from there. I wouldn't add the installation-mode switch there because we have settings for that.(I'd show a popup if xposed isn't installed though).
Also we don't need the reboot options there because we moved them to the navigation drawer and xposed creates notifications and popups for that anyway.

The Categories Tab wouldn't work right now because we don't have this information but this should be added in future.

The menu positions settings, logs and about don't need any changes.

If you select Reboot you'll see a dialog which asks you if you want to do a soft or hard reboot.

These changes would really improve Xposed.

Useless warning before loading completion

I posted it on XDA and I think it should be here also. I got answer from @rovo89 and he said he had different priorities and this bug was low priority for him thus maybe some other developer (@Tungstwenty ?) can take and fix this issue.

Read on XDA: http://forum.xda-developers.com/showpost.php?p=52915515&postcount=11705
or here:
"When you are browsing Xposed repo in Chrome (or any browser) and then you click on some module, share it to Xposed Installer, Xposed shows "there is no module with package name bla bla". After Xposed Installer finish loading, it shows this module correctly. I think Xposed should not show this warning before it finish loading. "

Module list doesnt update after any module uninstalation

I use v2.6 beta 1 and found bug.

I had some unused modules, so I decided to uninstall them in xposed module list by clicking on Uninstall button. After uninstalation, modules list is not refreshed and when I click on Framework tab and back to Module tab, app crashed.

Do you need log or can you reproduce it yourself?

System Services

Okay, I said that I would look into adding Services via Xposed, and this is what I have come up with so far.

package android.os;

/*
 * The AIDL Interface
 */

/** {@hide} */
interface IXAService {
    String getText();
}
package com.android.server;

import android.content.Context;
import android.os.IBinder;
import android.os.IXAService;
import android.os.RemoteException;

/*
 * The actual service that will be registered with Android.
 * This instance will be the one getting parsed as an IBinder instance when 
 * calling ServiceManager.getService("xa.service")
 */
public class XAService extends IXAService.Stub {

   /*
    * The hook that will get the service registered in the ServiceManager
    */
    public static void inject() {
        XposedTools.hookMethods(
            XposedTools.findClass("com.android.server.am.ActivityManagerService"), 
            "main", 
            new XC_MethodHook() {
                @Override
                protected final void afterHookedMethod(final MethodHookParam param) {
                    Context context = (Context) param.getResult();

                    XposedHelpers.callMethod(
                            XposedHelpers.findClass("android.os.ServiceManager", null), 
                            "addService", 
                            new Class[]{String.class, IBinder.class}, 
                            "xa.service", 
                            new XAService(context)
                    );
                }
            }
        );
    }

    private final Context mContext;

    public XAService(Context context) {
        mContext = context;
    }

    @Override
    public String getText() throws RemoteException {
        return "This is a test";
    }
}
package com.my.package;

import com.android.server.XAService;

/*
 * You made it, so you know what this is :)
 */
public final class XposedHook implements IXposedHookZygoteInit {
    @Override
    public void initZygote(IXposedHookZygoteInit.StartupParam startupParam) throws Throwable {
        XAService.inject();
    }
}
package android.os;

/*
 * This is so that regular application can use the wrapper XAServiceManager. 
 * For some reason XposedHelpers.getClass() will fail when using an application ClassLoader
 */
public class ServiceManager {
    public static IBinder getService(String name) { return null; }
}
package android.os;

/*
 * This is a wrapper for XAService that is accessible to all. 
 * Based on how all Android services work.
 */
public final class XAServiceManager {

    private static XAServiceManager oInstance;

    private IXAService mService;

    public static XAServiceManager getService() {
        if (oInstance == null) {
            oInstance = new XAServiceManager();
        }

        return oInstance;
    }

    private XAServiceManager() {
        mService = IXAService.Stub.asInterface(
                ServiceManager.getService("xa.service")
        );
    }

    public String getText() {
        try {
            return mService.getText();

        } catch (RemoteException e) { e.printStackTrace(); }

        return null;
    }
}
package com.my.package;

/*
 * Just a test activity
 */
public class MyActivity extends Activty {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        XAServiceManager manager = XAServiceManager.getService();
        Toast.makeText(this, manager.getText(), Toast.LENGTH_LONG).show();
    }
}

Normally, all system services is registered from com.android.server.SystemServer, however they are registered within a Thread where you will have no access to the context no mater if you hook before or after. Instead I hooked it in com.android.server.am.ActivityManagerService.main() which is the first call made by the SystemServer thread to get the system context, right before all of the services are created and registered.

After this, you can use ServiceManager.getService(String name) like with any other system service. However, this is only available to Android, so like Android does it, I made a wrapper for applications (XAServiceManager) which is available to all. And if one should fallow the true Android syntax, you could also hook android.os.ContextImpl and add it to Context.getSystemService() if you don't like to use XAServiceManager.getService().

Either way, this will create a service that can be used to do anything. And the context in XAService.mContext is the System Context, so it should have access to anything. And it can be used to share data between multiple processes as XAService will be the same no mater where you use it from. And you can decide which part of it should be accessible globally by just excluding/including it in the wrapper XAServiceManager, just like Android does.

A lot of fun stuff can be created with this, but my first thought, which is why I looked into it in the first place, was to share data between processes without having to write files or database entries. So maybe this could be used to create some standard Xposed communication API to share things like property values and such. This could be small configs between settings and module (Since a static class will do no good here) or just data sharing between two separate Android processes. The biggest issue is properly the cleanup part if devs forget to clear some of the old unused data.

Also, normal applications is not able to create this type of Service. This type is only meant for the parts of Android that contains the same Context throughout the lifetime of the OS. So it will need to be added into ServiceManager via a Zygote hook.

Improvements

Hi,
i got some ideas about Xposed Installer

1, Option to clear logs
2, Click on notification when downloading module to open "module page"

Add Malaysia Translation

<!-- General/various strings -->
<string name="app_name">Pemasangan Xposed</string>
<string name="menuSend">Menghantar</string>
<string name="menuSaveToSd">Simpan Ke Kad SD</string>
<string name="xposed_not_active">Versi terbaru Xposed masih tidak aktif. Adakah anda ingin memasang framework dan reboot?</string>

<!-- Welcome screen / main sections -->
<string name="welcome">Selamat datang <b>Pemasangan Xposed</b>!\nSila pilih apa yang and mahukan:</string>
<string name="tabInstall">Framework</string>
<string name="tabInstallDescription">Disini anda boleh menguruskan Xposed framework, yang mana keperluan untuk setiap modul berfungsi.</string>
<string name="tabModules">Modul</string>
<string name="tabModulesDescription">Framework bekerja sendiri samaada \'atau tidak memasukkan sebarang fungsi. Anda perlu modul untuk itu. Dalam seksyen ini anda boleh aktifkan modul selepas anda telah memasangnya.</string>
<string name="tabDownload">Muat Turun</string>
<string name="tabDownloadDescription">Pada seksyen ini memberikan anda akses repositori daripada modul, jadi anda boleh mencari dan muat turun salah satu yang anda suka dan pastikan yang terkini.</string>
<string name="welcome_framework_update_available">Sebahagian kemas kini untuk Xposed framework tersedia (%s).</string>
<string name="welcome_update_available">Satu atau lebih kemas kini(s) modul tersedia.</string>
<string name="tabSettings">Tetapan</string>
<string name="tabSettingsDescription">Pergi ke bahagian ini untuk mengkonfigurasi pemasangan Xposed dan framework.</string>
<string name="tabLogs">Log</string>
<string name="tabLogsDescription">Tunjuk dan simpan/hantar log bagi Xposed framework.</string>
<string name="tabAbout">Mengenai</string>
<string name="tabAboutDescription">Pelajari mengenai seseorang yang mencipta Xposed, dimana untuk dapatkan sokongan untuk aplikasi ini dan lain-lain.</string>

<!-- Installer tab -->
<string name="install">Memasang/Kemaskini</string>
<string name="uninstall">Nyah Pasang</string>
<string name="installedVersion">Aktif</string>
<string name="latestVersion">dibundle</string>
<string name="versions">Versi:</string>
<string name="soft_reboot">Reboot Perlahan</string>
<string name="reboot">Reboot</string>
<string name="areyousure">Adakah anda pasti?</string>
<string name="phone_not_compatible">Xposed tidak (lagi) sesuai dengan versi Android SDK %1$d atau akitek pemprosessan anda (%2$s).</string>
<string name="not_tested_but_compatible">Xposed belum lagi diuji dengan versi Android SDK %d, tetapi kelihatan sesuai. Anda boleh mencuba memasangnya jika anda fikirkan sesuatu cabaran.</string>

<!-- Modules tab -->
<string name="module_is_not_activated_yet">Xposed modul belum aktif lagi</string>
<string name="module_empty_description">(Keterangan tidak tersedia)</string>
<string name="module_no_ui">Modul ini tidak menyediakan antara muka pengguna</string>
<string name="no_xposed_modules_found">Xposed module ditemui!</string>
<string name="xposed_module_list_updated">Senarai Xposed modul telah dikemaskini\nDitukar dan aktif selepas reboot</string>
<string name="warning_xposed_min_version">Modul ini memerlukan XposedBridge versi terbaru (%d) dan itu tidak boleh diaktifkan.</string>
<string name="no_min_version_specified">Modul ini tidak menyatakan versi XposedBridge yang diperlukan.</string>
<string name="warning_min_version_too_low">Modul ini telah dicipta untuk versi XposedBridge %1$d, tetapi disebabkan oleh perubahan yang tidak serasi dalam versi %2$d, ianya telah dilumpuhkan.</string>
<string name="module_launch">Lancarkan UI</string>
<string name="module_download_updates">Muat Turun/Kemaskini</string>
<string name="module_support">Sokongan</string>
<string name="module_app_info">Mengenai Aplikasi</string>
<string name="module_uninstall">Nyah Pasang</string>

<!-- Download tab -->
<string name="menuSearch">Cari</string>
<string name="menuReload">Reload</string>
<string name="changes">Perubahan:</string>
<string name="branch_display">(%s cawangan)</string>
<string name="download_author">Oleh %s</string>
<string name="download_unknown_author">Pemilik tidak diketahui</string>
<string name="download_status_installed">Pemasangan(versi %s)</string>
<string name="download_status_update_available">Kemaskini tersedia (versi %1$s \u2192 %2$s)</string>
<string name="download_timestamps">Ditambah pada %1$s \u00b7 Kemaskini %2$s</string>
<string name="download_sorting_title">Perintah susunan</string>
<string name="download_sorting_status">Susunan secara status</string>
<string name="download_sorting_updated">Susunan mengikut kemaskini terakhir</string>
<string name="download_sorting_created">Susunan mengikut tarikh dicipta</string>
<string name="download_section_framework">Framework</string>
<string name="download_section_update_available">Kemaskini tersedia</string>
<string name="download_section_installed">Dipasangkan/string>
<string name="download_section_not_installed">Tidak dipasang/string>
<string name="download_section_24h">Selepas 24 jam</string>
<string name="download_section_7d">Selepas 7 hari</string>
<string name="download_section_30d">Selepas 30 hari</string>
<string name="download_section_older">Lebih daripada 30 hari lepas</string>

<!-- Settings tab -->
<string name="settings_group_download">muat turun</string>
<string name="settings_enable_downloads">Membolehkan Muat turun</string>
<string name="settings_enable_downloads_summary">Benarkan Xposed Installer utk memeriksa kemaskini dan modul terbaru</string>
<string name="settings_group_experimental" tools:ignore="UnusedResources">Eksperimen</string>
<string name="settings_performance_experiment" tools:ignore="UnusedResources">Prestasi experimen</string>
<string name="settings_performance_experiment_summary" tools:ignore="UnusedResources">Jika anda membolehkan ini, Prestasi sistem anda mungkin sama ada kenaikan, penurunan atau tetap sama. Jangan ragu untuk mencuba dan membuat laporan yang kesan yang anda lihat (atau jika tidak ada pada semua). Anda perlu memasang semula framework dan reboot selepas menukar ini.</string>

<!--  Logs tab  -->
<string name="logs_load_failed">Tidak boleh membaca log:</string>
<string name="logs_save_failed">Tidak boleh menulis log ke Kad SD:</string>
<string name="sdcard_not_writable">Kad SD tidak ditemui atau hanya baca sahaja</string>

<!-- About tab -->
<string name="about_developers_label">Main developers:</string>
<string name="about_developers"><a href="http://forum.xda-developers.com/member.php?u=4419114">rovo89</a> and <a href="http://forum.xda-developers.com/member.php?u=4322181">Tungstwenty</a></string>
<string name="about_developers_warning">Dilarang <b>tidak</b> menghubungi kami secara terus untuk sokongan,gunakan link dibawah.</string>
<string name="about_translator_label">Penterjemah:</string>
<string name="translator">Jay3Belas</string>
<string name="about_version_label">Versi Aplikasi ini:</string>
<string name="about_source_label">Source code:</string>
<string name="about_support_label">Dapatkan bantuan di:</string>
<string name="about_support_warning">Link ini adalah untuk pemasangan dan framework <b>sahaja</b>! Jika anda perlu bantuan mengenai modul, Jangan <b>tidak</b> menggunanya, hubungi pemilik modul sebaliknya.</string>
<string name="about_libraries_label">Perpustakaan digunakan:</string>

<!-- DownloadView -->
<string name="download_view_download">Muat Turun</string>
<string name="download_view_install">Memasang</string>
<string name="download_view_cancel">Batal</string>
<string name="download_view_no_url">Tidak ada URL link</string>
<string name="download_view_running">Muat turun sedang berjalan (%1$,d of %2$,d kB)</string>
<string name="download_view_waiting">Muat turun sedang menunggu</string>
<string name="download_view_successful">Muat turun berjaya</string>
<string name="download_view_failed">Muat turun gagal (error %d)</string>

<!-- DownloadUtils -->
<string name="download_md5sum_incorrect">MD5 sum tidak betul (downloaded: %1$s, expected: %2$s)</string>
<string name="download_could_not_read_file">Tidak dapat membaca fail yang dimuat turun: %s</string>
<string name="download_no_valid_apk">File yg dimuat turun adalah tidak sah APK (atau tidak serasi)</string>
<string name="download_incorrect_package_name">Nama pakej tidak betul (downloaded: %1$s, expected: %2$s)</string>

<!-- RepoLoader -->
<string name="repo_download_failed_http">Memuat turun %1$s failed: %2$d (%3$s)</string>
<string name="repo_download_failed">Memuat turun %1$s failed: %2$s</string>
<string name="repo_load_failed">Tidak dapat memuat repositori dari %1$s:\n%2$s</string>

Scrolling while downloading causes crash

Scrolling the download versions list while a download is active will cause the UI to crash.

Reproduce:

  • open GravityBox in download section
  • go to versions list
  • click "Download" on latest version
  • wait until download starts
  • scroll down to the bottom of the list
    -> UI crashes

Please see the logcat for further information! NullPointerException in line 125.

Download info TextView is cut

While downloading bigger apk (e.g. GravityBox) the download info providing the progress of the download is too big in some translations and therefore the text will be displayed underneath the progressbar.

The following screenshot was posted on XDA and can also be reproduced on my device (N5, default DPI, no font tweaks)

Possible resolution: Put progress bar and cancel button in one line. Move textview below progress bar and set layout to fit two lines, so that the view won't move if the textview expands to two lines.

Unfortunately I wasn't able to fix it myself as I know too less about layout xmls.

White icons are not visible in modules list

White icons such the one of ActivityForceNewTask are not visible in the module list since the background is no longer a gradient but a opaque white.

whiteicon

We could draw an outline of the icon if the overall color is white. For this we can actually use the code of com.android.launcher3 since it does the same thing in createGlowingOutline(). This outline is created when dragging an icon to visualize it's drop location.

glowoutlineexample

I can try and implement this if the issue is accepted.
http://androidxref.com/4.4.2_r1/xref/packages/apps/Launcher3/src/com/android/launcher3/BubbleTextView.java#206

java.lang.VerifyError when using Xposed

Hi,

I'm working on an app with ~100,000 active users and we're getting reports of a few weird crashes. The thing they have in common is that they all have XposedBridge.java in their stacktrace as well as being sdk version 16 or lower. I've been in touch with one of the users and he says it crashes even though he disables all Xposed modules.

screen shot 2014-01-09 at 09 49 52

The crash is a java.lang.VerifyError on one of our own classes. This indicates this class uses methods that is for some reason not available on the classpath.

Here is the imported classes:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.util.LruCache;

We use a couple of methods not available in sdk version <=16, but they are guarded by if-checks on the Build.VERSION.SDK_INT and it works just fine on all devices that doesn't use Xposed.

The methods are:
Bitmap.getAllocationByteCount() (sdk 19)
LruCache.trimToSize(int maxSize) (sdk 17)

Add an option to disable Xposed's launcher icon

This doesn't bother me directly, but I keep on getting PMs on XDA about integrating Xposed into a Winzip-powered ROM.

Now I always respond with saying they should just add the APK, but mostly everyone wants to remove the icon, so they resort to modifying the APK (rather than compiling from source even), but I don't help with that.

Ideally. WelcomeActivity's intent-filter would be only for the action de.robv.android.xposed.installer.OPEN_XPOSED, and an alias would be added so the launcher icon stays. The alias can be disabled with pm disable if someone needs that, the option should not be added to the UI however.

This would reduce (or eliminate?) ROMs shipping a custom APK of Xposed.

If you're interested, I can do this myself, otherwise I'm not interested in doing this for myself since I wouldn't use it.

Widgets to fast access to tabs

Hi,

Looks like you are going to bring us new UI for Xposed Installer. I have one idea. What about create widgets to fast access to Xposed's tabs (modules, framework, download)?

XposedInstaller:java.lang.IllegalAccessError

Loading Xposed v54 (for Zygote)...
Running ROM '4.0.015.P1.8190' with fingerprint 'Coolpad/full_lc1810/lc1810_8190:4.0.3/IML74K/4.0.062.P1.131106.8190:user/release-keys'
Loading modules from /data/app/biz.bokhorst.xprivacy-1.apk
Loading class biz.bokhorst.xprivacy.XPrivacy
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:195)
at dalvik.system.DexPathList.findClass(DexPathList.java:315)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:58)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at de.robv.android.xposed.XposedBridge.loadModule(XposedBridge.java:421)
at de.robv.android.xposed.XposedBridge.loadModules(XposedBridge.java:386)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:120)
at dalvik.system.NativeStart.main(Native Method)
How does this error happens? How to solve?

Handle android system update

At the moment, xposed prevents android system updates to be installed.
When the system reboots to the boot loader to install the update, the update script with the obtuse error message:

app_process has unexpected content

To fix it, you have to disable the framework and redo the install.
I don't know if xposedinstaller can be notified that a system update has been downloaded and automatically disable itself.
(The updates are usually a zip file located in the /cache folder)

After that, the system has to be rooted again(by flashing supersu.zip: the super su all is installed, but the su executable is not present on the system anymore)

If you don't you won't be able to re enable xposed.
And this were I noticed something strange: when I tried to re enable xposed without having flashed supersu.all, xposed displayed a messagebox with no message and a toast claiming that the install was successful and that I needed to reboot the phone.
Of course it wasn't the case.

Segmentation fault

Hi.
Application was tested on Jiayu G2 (Android 4.0.4) and Zopo ZP100 (Android 4.0.3).
On both devices I got the same error on installation screen.

yw744k8wqvc

Empty intent (action == null) to provider causes crash

E/AndroidRuntime(10274): FATAL EXCEPTION: main
E/AndroidRuntime(10274): Process: de.robv.android.xposed.installer, PID: 10274
E/AndroidRuntime(10274): java.lang.RuntimeException: Unable to start receiver de.robv.android.xposed.installer.PackageChangeReceiver: java.lang.NullPointerException
E/AndroidRuntime(10274):        at android.app.ActivityThread.handleReceiver(ActivityThread.java:2426)
E/AndroidRuntime(10274):        at android.app.ActivityThread.access$1700(ActivityThread.java:135)
E/AndroidRuntime(10274):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
E/AndroidRuntime(10274):        at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(10274):        at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(10274):        at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(10274):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(10274):        at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(10274):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(10274):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(10274):        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
E/AndroidRuntime(10274):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(10274): Caused by: java.lang.NullPointerException
E/AndroidRuntime(10274):        at de.robv.android.xposed.installer.PackageChangeReceiver.onReceive(PackageChangeReceiver.java:19)
E/AndroidRuntime(10274):        at android.app.ActivityThread.handleReceiver(ActivityThread.java:2419)
E/AndroidRuntime(10274):        ... 11 more

Limit log size

I just got an 100MB log and my storrage memory run to low.

IMHO it would be a god idea to limit the log size to an usefull filesize.

cu

Auto-save logcat during installation

It would be useful to have some logic on the Installer (potentially optional) to help obtain better troubleshooting info with less effort from non-tech users.
One of these would be storing the logcat while doing a soft-reboot, so it can then be posted or shared.

A process can be spawned on the background with nohup to avoid getting it killed when the zygote process tree restarts:
nohup .../logcat_grabber.sh &

logcat_grabber.sh could contain:

logcat -v time > .../logcat.log
CHILD_PID=$!
sleep <reasonable seconds to wait for the boot(loop)>
kill $CHILD_PID

Actually, check http://stackoverflow.com/a/2387538 for some additional safety to prevent killing the child in case some other process has already reused its pid.

White background on Installer startup

If a dark theme is selected and the Xposed Installer is being started, the background will be white while the WelcomeActivity is created.

This is a known issue with a possible fix provided and therefore the issue is meant as a reminder for the next release.

No notification buttons for sideloaded module

I am just playing with Xposed, developing small module and I have just realized that notification about new/updated sideloaded module (APK from exclipse) do not include notification buttons (Reboot and activate). There is no such buttons for sideloaded modules.

Can you add these buttons, please?

XposedInstaller crashes upon App installation

Hey @rovo89, with much respect to your great work, I'm afraid I have to file this Issue because I'm having troubles when installing any new App on my HTC One. I wonder why this is happening, Xposed ran fine before. My device is currently running AOKP KitKat 4.4.4 and Kernel Linux version 3.4.82-g47fef4f.

Upon installing any new or updating any App, my Launcher as well as the Xposed Installer crashes and I cannot open it again afterwards until rebooting. Hopefully this logcat will help you solve this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.