标签: android-instant-run

即时运行比标准版本更长

现在已经有一段时间了,Instant Run不再工作了,也就是说,它比标准版本慢.

AOSP错误跟踪器中有一些材料,但我无法解决这个问题.我相信你们中的一些人会有所帮助.

没有即时运行

建设大约需要1.30分钟.

使用即时运行

我第一次运行应用程序,然后应用一些小的更改.例如,更改int a = 1int a = 2方法内部或更改字符串.

然后再次单击运行.怎么了:

  • 看起来完全构建(调用assembleDebug我的所有模块).大约需要1.30分钟.
  • 第二轮继续,只是打电话app:assembleDebug.大约需要一分钟:

    16:27:10 Executing tasks: [:app:assembleDebug]
    16:28:16 Gradle build finished in 1m 5s 264ms
    16:28:22 Instant Run applied code changes and restarted the app.
    
    Run Code Online (Sandbox Code Playgroud)

在第一轮中,没有任何输出到事件日志或Gradle控制台.在第二轮中,Gradle控制台会输出大量内容并以此结束

BUILD SUCCESSFUL

Total time: 51.385 secs
PREDEX CACHE HITS:   0
PREDEX CACHE MISSES: 45
Stopped 0 compiler daemon(s).
Run Code Online (Sandbox Code Playgroud)

我能做什么?

我在我的grade.properties文件中有这些:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
Run Code Online (Sandbox Code Playgroud)

build.gradle文件中没有与dex相关的内容.不使用杰克.Android Studio 2.2.3.


gradle.properties文件 …

android android-studio android-instant-run

13
推荐指数
1
解决办法
1250
查看次数

Android Instant Run慢速构建

我一直在讨论即时运行,好像它处于一个很好的状态,但是我和我的团队经常会遇到这个功能的重大问题,并且由于它而导致编码体验降级.

在即时运行之前,我们的干净构建是〜1分30秒,之后我们得到的构建大约是25秒或偶尔的40秒.虽然即时运行确实似乎有时会将构建减少到6-12秒,但有时候,它会导致我们进入疯狂的长版本,我们已经看到长达13分钟,大大抵消了增量编译的任何收益.

它似乎在大多数时候,小的变化仍然需要40秒.有时它是6秒,但这是非常罕见的.

感觉很像是即时运行降低了我们始终如一地高效工作的能力.以下是我们的一些应用程序特定配置:

Android Studio 2.1.1,Android插件2.1

multiDexEnabled true

dexOptions {
  preDexLibraries true
  javaMaxHeapSize "4g"
  maxProcessCount 4
  incremental true
  dexInProcess true
}

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m
Run Code Online (Sandbox Code Playgroud)

我们做错了什么,或者有人找到了解决方法吗?

编辑:几个开发人员似乎遇到了这个问题.我在这里跟踪一个错误.随意加星标并添加到讨论中.

android android-build android-gradle-plugin android-instant-run

10
推荐指数
1
解决办法
879
查看次数

使用Kotlin的Instant Run时出现IllegalAccessError

使用Instant Run运行项目后出现此异常:

java.lang.IllegalAccessError:非法类访问:'com.alla.kotlinexample.MainActivity $ override'试图访问'kotlin.jvm.internal.DefaultConstructorMarker'('com.alla.kotlinexample.MainActivity $ override'的声明出现在/ com.alla.kotlinexample
上的 com.alla.kotlinexample.MainActivity $ override.onCreate(MainActivity.kt:21)
中的 data/data/com.alla.kotlinexample/files/instant-run/dex-temp/reload0x0000.dex). MainActivity $ override.access $讯(MainActivity.kt)

这是代码:

class MainActivity : AppCompatActivity() {  

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        val persons: List<Person> = listOf<Person>(Person("Person1"), Person("Person2", 27))

        fab.setOnClickListener { view ->
            Snackbar.make(view, persons[1].name, Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
        }

        tv_person_name.text = persons.maxBy { it.age ?: 34 }.toString()
    }

    data class Person(val name: String, val age: Int? = null)


}
Run Code Online (Sandbox Code Playgroud)

并且错误指向这一行 val persons: List<Person> = listOf<Person>(Person("Person1"), Person("Person2", 27))

Android Studio版本为3.0.1 Gradle: …

android kotlin android-instant-run

10
推荐指数
1
解决办法
997
查看次数

Android Studio 3.3中的Instant Run缺失

目前,在Android Studio版本3.3中,缺少"应用更改"选项的快捷方式,允许即时运行.还有一个名为"更新运行应用程序"的选项,它不提供相同的功能.

此选项在3.1版等旧版本中可用,如屏幕截图所示

对比

我无法在3.3版中使用Instant Run功能.

这有解决方法吗?

android-studio android-instant-run hot-reload

10
推荐指数
1
解决办法
603
查看次数

Android App开始慢 - dex2oat Zip缺席.取消 - Gradle 2.10

我写了一个Android应用程序到目前为止工作正常.然后我添加了Google Cloud Messaging(GCM)的功能.我使用了谷歌的演示项目,它似乎增加了分析和应用程序索引等.

现在启动应用程序按预期工作但需要花费很多时间.日志显示许多这样的消息:

I/dex2oat: ----------------------------------------------------
I/dex2oat: <SS>: S T A R T I N G . . .
I/dex2oat: <SS>: Zip is absent. Canceled.
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m
I/dex2oat: dex2oat took 288.616ms (threads: 4)
I/dex2oat: ----------------------------------------------------
I/dex2oat: <SS>: S T A R T I N G . . .
I/dex2oat: <SS>: Zip is absent. Canceled.
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art …
Run Code Online (Sandbox Code Playgroud)

android gradle google-cloud-messaging google-play-services android-instant-run

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

Android Studio Instant Run未启用?

Instant Run是为减少运行和调试应用程序的时间而引入的新功能.我拥有启用即时运行所需的所有配置,但在Android Studio上未启用.这是我的配置如下.

1. Android Studio 2.1
2. 'com.android.tools.build:gradle:2.1.0'
3. minSdkVersion 15
4. Settings->Build, Execution, Deployment > Instant Run = "Enable Instant Run..."
5. Run ->device is  Android version 4.4.4
Run Code Online (Sandbox Code Playgroud)

然后未启用"即时运行". 在此输入图像描述

但是当我在设备Android版本5.1.1上运行 - >时,启用了即时运行.在此输入图像描述

请提示,如果我错过了其他配置,请启用Android 4.4.4设备的即时运行.

android android-studio-2.0 android-instant-run

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

Xcode的即时运行或热重载

我是Android开发人员,最近开始学习Swift.Android工作室中有一个很酷的功能叫做Instant Run,它可以显着减少编码过程中增量代码更改的构建和部署时间.

Instant Run 2.0 在Android Studio 2.0中引入的,它是Run和Debug命令的一种行为,可显着缩短应用程序更新之间的时间.虽然您的首次构建可能需要更长时间才能完成,但Instant Run会在不构建新APK的情况下将后续更新推送到您的应用,因此可以更快地看到更改.

如果您在Android Studio上启用Instant Run,则无需从头开始构建和运行应用程序,特别是当您在应用程序中间处理一些详细的View Controller(故事板)时.

我很想知道这个功能或类似功能在XCode中是否可用,或者每次我想测试应用程序时都必须从头开始运行应用程序?

xcode ios android-studio instant-run android-instant-run

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

即时运行和Google地图的问题

即时运行和Google地图似乎存在问题.在重新运行应用程序以查看更改时,如果应用程序正在使用Google地图,则会发生崩溃.这是堆栈跟踪的一部分:

java.lang.RuntimeException: 
android.content.res.Resources$NotFoundException: File res/drawable/common_google_signin_btn_text_light_focused.xml from drawable resource ID 
           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
           ........
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/common_google_signin_btn_text_light_focused.xml from drawable resource ID 
          at android.content.res.Resources.loadDrawableForCookie(Resources.java:2640)
          .....
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/maps_btn_myl_pressed.png from drawable resource ID
Run Code Online (Sandbox Code Playgroud)

崩溃是因为a ResourcesNotFoundException而发生的,这似乎是由上面的堆栈跟踪中列出的文件引起的.

有没有人遇到过这个问题,如果有的话,解决了什么?

android google-maps android-studio instant-run android-instant-run

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

空活动的setContentView上的StrictMode磁盘读取违规

我最近尝试使用StrictMode但有一个奇怪的侵犯,所以我尝试建立一个新的 "空活动"项目(在Android Studio),并添加如下(中记载的应用程序类在这里):

public class TestApplication extends Application {

    @Override
    public void onCreate() {
        setStrictMode();
        super.onCreate();

    }

    private void setStrictMode() {
        if (BuildConfig.DEBUG) {
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这个空项目中遇到同样的问题:
StrictMode policy violation; ~duration=165 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65599 violation=2

堆:

at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1440)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:241)
at java.io.File.isDirectory(File.java:837)
at dalvik.system.DexPathList$Element.toString(DexPathList.java:634)
at java.lang.String.valueOf(String.java:2827)
at java.util.Arrays.toString(Arrays.java:4511)
at dalvik.system.DexPathList.toString(DexPathList.java:194)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606) …
Run Code Online (Sandbox Code Playgroud)

android oncreate android-instant-run android-strictmode

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

Android:应用程序经常在即时运行时崩溃

在我的Android应用程序中,我正在调试它启用了即时运行.

该应用程序经常给我意外的错误,如果我做了一个干净的构建,它会得到解决.

例如,有时候类没有找到异常,其中类实际存在.此外,有时在尝试将View返回的内容强制findViewById()转换为目标类型时会出现类强制转换异常(可能android studio在热部署布局时误解了元素ID).

只需执行完整构建,所有这些错误都可以在不进行代码更改的情况下得到解决 即时运行已成功使构建过程慢两到三倍.

为什么我会收到这些错误?有谁知道如何立即运行正常工作?

android android-instant-run

7
推荐指数
1
解决办法
3673
查看次数