小编Tap*_*ave的帖子

防止ProGuard对类成员名称进行模糊处理

我有我的类ClassMultiPoint与子类.

public class ClassMultiPoints
 {
   public String message;
   public List<ClassPoints> data;

   public class ClassPoints
    {
      public String id;
      public List<ClassPoint> points;
      public class ClassPoint
       {
         public String speed;
         public String bearing;
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

oPoints将从解析中获取对象的值GSON:

oPoints = gson.fromJson( jsonString, ClassMultiPoints.class);

我试着用oPoints.message.

当我运行我的应用程序没有proguard应用程序运行成功 当我用proguard我的应用程序崩溃运行我的应用程序时

我认为问题是:proguard'oPoints.message'我的类的属性重命名为short 'a'.

我尝试保持方法和属性的名称是不变的,但proguard重命名为:

proguard.cfg:

-injars      bin/classes
-injars      libs
-outjars     bin/classes-processed.jar
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation* …
Run Code Online (Sandbox Code Playgroud)

java obfuscation android proguard

69
推荐指数
6
解决办法
8万
查看次数

Proguard说输入jar文件指定了两次

我使用Google Translator创建应用.我尝试使用Proguard创建签名的apk.

proguard.cfg包含:

-libraryjars libs/gtranslateapi-1.0.jar
-keep class com.gtranslate.** { *; }
Run Code Online (Sandbox Code Playgroud)

proguard-project.txt包含:

-dontwarn com.gtranslate.**
Run Code Online (Sandbox Code Playgroud)

我也尝试没有proguard-project.txt:

# -dontwarn com.gtranslate.**
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

Proguard returned with error code 1. See console
Error: The same input jar [C:\workspace\myproject\libs\gtranslateapi-1.0.jar] is specified twice.
Run Code Online (Sandbox Code Playgroud)

什么是不正确的?

android proguard

9
推荐指数
1
解决办法
9042
查看次数

如何在WebView中禁用软键盘

我需要在我的WebView和WebView的所有edittexts中禁用打开软键盘(我不能访问因为它在WebView中).

我尝试在我的清单文件中使用'android:windowSoftInputMode ="stateAlwaysHidden"',但是当我点击可编辑字段时键盘弹出.

什么是在WebView中禁用软键盘的正确解决方案?

编辑:

我发现解决方案(在这篇文章中感谢@ g00dy,在/sf/answers/637575361/后感谢@Kachi )打开后关闭键盘:

public class ActivityBrowser extends Activity 
 {
   private static WebView        webviewHTML;
   private static View           viewRootHTML;
   private static int            iViewRootHTMLHeightDifferent; 
   public  static Context        contextBrowser;

    {
      contextBrowser = this;
    }


   public class webViewClient extends WebViewClient
    {
      @Override
      public void onPageStarted( WebView view, String url, Bitmap favicon)
       {
         if( view == webviewHTML)  super.onPageStarted( view, url, favicon);
       }

      @Override
      public void onPageFinished( WebView view, String url)
       {
         if( view == webviewHTML)  super.onPageFinished( view, url);
       } …
Run Code Online (Sandbox Code Playgroud)

java android webview android-softkeyboard

8
推荐指数
2
解决办法
1万
查看次数

Lollipop 5.1设备上的新WebView上的异常

我尝试将WebView添加到我的活动中:

WebView webView = new WebView(this);
Run Code Online (Sandbox Code Playgroud)

在所有设备上都可以正常工作,但是在Android Lollipop 5.1(仅)设备上,我在这一行遇到了异常:

10-18 12:04:29.741 13131-13131/xx.xxxxxx E/AndroidRuntime: FATAL EXCEPTION: main
Process: xx.xxxxxx, PID: 13131
java.lang.RuntimeException: Unable to start activity ComponentInfo{xx.xxxxxx/xx.xxxxxx.activity.login.UseActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
        Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
        at android.content.res.Resources.getText(Resources.java:299)
        at android.content.res.Resources.getString(Resources.java:385)
        at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
        at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
        at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
        at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)
        at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:311)
        at …
Run Code Online (Sandbox Code Playgroud)

java android webview

8
推荐指数
1
解决办法
1622
查看次数

此Handler类应该是静态的,否则可能会发生泄漏:final Handler

在下面的代码中Eclipse生成警告"此Handler类应该是静态的,否则可能会发生泄漏".

public class MyActivity extends Activity implements Runnable
 {
   final Handler handler = new Handler()
    {
      @Override
      public void handleMessage( Message message)
       {
         String sResult = (String) message.obj;
         if( (sResult != null) && (sResult != ""))
           {
             MyNonStatic = (TableLayout) findViewById( R.id.tableLayout); // any non-static method
           }
         return;
       }
    };


   public void run()
    {
      final Message message = handler.obtainMessage( 1, MyFunction( context));
      handler.sendMessage( message);
    }

   public String MyFunction( Context context)
    {
      return "MyNewString";
    }
  }
Run Code Online (Sandbox Code Playgroud)

我在网站上审查了很多主题,但没有得到解决方案.请帮帮我这个代码?

添加:我需要在handleMessage()中调用非静态方法(例如findViewById())!

java android memory-leaks

5
推荐指数
2
解决办法
4195
查看次数

如何制作我的应用系统

我需要将我的应用程序创建为系统,因为我需要获得许可android.permission.WRITE_SECURE_SETTINGS。安装到虚拟设备(Eclipse)后,我的应用程序显示在中'/data/app'。我尝试手动将其移动到'/system/app',设置权限644,但是当我启动我的app-toast时'App isn't installed'。重新启动后(关闭虚拟设备并重新启动),我的应用从中消失了'/system/app'

添加: -1.为什么android看不到我的应用程序'/system/app'?-2.为什么在重新启动虚拟设备后我的应用消失了'/system/app'

使我的应用系统在Eclipse Emulator和真实设备上的最佳方法是什么?

java android

5
推荐指数
2
解决办法
2万
查看次数

如何获取系统中的Web浏览器列表

如何以编程方式获得系统中的Web浏览器列表?

更新:我知道该应用程序的哪个manifestfile必须具有属性android:scheme="http"android:scheme="https".我知道如何获取系统中所有应用程序的列表getPackageManager().getInstalledPackages( 0);.我不知道怎么得到这个属性?

java android

5
推荐指数
1
解决办法
1997
查看次数

系统键盘plist设置中的长字符串

我尝试在键盘中添加自己的角色.我通过代码将键'z'扩展为"Keyboard-en.plist":

"Roman-Accent-z" =     {
    Keycaps = "z mylongstringtitle ..."; // ... == \U017e \U017a \U017c characters ('z' with apostrophes and dots)
    Strings = "z mylongstringvalue ...";
};
Run Code Online (Sandbox Code Playgroud)

但键盘没有显示我的字符串'mylongstringtitle',只有空格'': 在此输入图像描述

我只能在普通字体上添加字符串4个字符长度,在"按钮"上添加小字体上的7个字符.但我需要添加一个长字符串.

我可以在keycaps的字符串中添加'mylongstringtitle'吗?可能是我需要为长字符串设置特殊参数?这个有可能?

keyboard plist jailbreak ios

5
推荐指数
1
解决办法
495
查看次数

评估指令时出现Proguard错误

我将我的android项目升级到24 SDK版本.

但我在Proguard构建路径中遇到错误:

Unexpected error while evaluating instruction:
  Class       = [com/google/android/gms/iid/zzd]
  Method      = [zzeC(Ljava/lang/String;)V]
  Instruction = [11] invokevirtual #50
  Exception   = [java.lang.ArrayIndexOutOfBoundsException] (1)
Unexpected error while performing partial evaluation:
  Class       = [com/google/android/gms/iid/zzd]
  Method      = [zzeC(Ljava/lang/String;)V]
  Exception   = [java.lang.ArrayIndexOutOfBoundsException] (1)
Warning: Exception while processing task java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 1
:PC:transformClassesAndResourcesWithProguardForDebug FAILED

FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)

我的proguard.cfg文件:

-printmapping /build/proguard-mapping.txt
-printusage /build/proguard-usage.txt
-printseeds /build/proguard-seeds.txt
-printconfiguration /build/proguard-configuration.txt

-optimizationpasses 5
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizations !class/unboxing/enum
-allowaccessmodification
-repackageclasses ''
-keepattributes Signature
-keepattributes SetJavaScriptEnabled
-keepattributes …
Run Code Online (Sandbox Code Playgroud)

android build proguard

5
推荐指数
2
解决办法
3005
查看次数

导航抽屉在关闭时抽搐

我在我的应用程序中尝试实现导航抽屉(Material Design).我的活动包含带有片段的FrameLayout.当用户在导航抽屉中选择项目时FrameLayout重新加载新片段:

    listViewDrawer.setOnItemClickListener( new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick( AdapterView<?> parent, View view, int position, long id) {

            drawerLayout.closeDrawer( listViewDrawer); // <<<-------

            toolbar.setTitle( getResources().getString( R.string.title));

            fragmentMain = new FragmentMain();

            android.app.FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                       .replace( R.id.frameLayoutMain, ApplicationTapaKiosk.getInstance().fragmentMain)
                       .commit();

        }
     }
Run Code Online (Sandbox Code Playgroud)

当我点击项目都工作正常.导航抽屉关闭不顺畅,但冻结(抽搐,抽搐)因为片段在后台重新加载.

导航抽屉有多接近顺畅?

java android android-fragments navigation-drawer

4
推荐指数
1
解决办法
2110
查看次数