我正在使用新的Android Studio 2.0(Beta 6),我面临着一个严重的问题.更新后,我注意到Instant Run功能存在一些问题,确保应用程序实际运行新代码非常困难.我立即禁用了"即时运行"功能.
尽管如此,我注意到Android Studio并不总是部署新代码!
我在创建Activity时添加了一个print并且没有调用它来测试我的理论.如果我关闭应用程序(例如通过按后退按钮)然后运行代码 - 它按预期工作.
我还验证了它实际上是一个问题,因为在按下运行按钮后运行旧代码.
F正在发生什么,有没有人知道修复?(重新安装AS 1.5除外)
备注和摘要:
所有这些对我来说都是新的.它必须是其中之一.
Android Studio 2.2和Android 24.
即时运行
Mac OS Sierra.
似乎没有任何模式.它有时在2分钟后发生,有时在10分钟后发生.
我有三种不同的设备,4.4,5.0和6.0+.它不是设备......它发生在所有三个设备上.我已经在这台Mac上使用Studio超过一年了,之前从未见过这个.
我收到了这条消息gradle:
Instant Run is disabled when Jack compiler is used
Run Code Online (Sandbox Code Playgroud)
我的编译时间太长了.
3:54:11 PM Gradle build finished with 1 warnings(s) in 17m 15s 937ms
Run Code Online (Sandbox Code Playgroud)
我认为是因为这个消息.
我很担心离线模式.
我的朋友:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '24.0.0'
defaultConfig {
applicationId "*.*.*"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
// Enabling multidex support.
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions …Run Code Online (Sandbox Code Playgroud) 一周前,Norton Security开始在文件R.class中找到特洛伊木马(Trojan.Gen.NPE.2):
app\build\intermediates\transforms\instantrun\debug\folders\1\5\main\android\support\v4\r.class
和
app\build\intermediates\transforms\instantrunslicer\debug\folders\1\5\slice_2\android\support\v4\r.class
链接到virustotal.com扫描:https://www.virustotal.com/pl/file/282f4e09c102cd93c2f849c9fe9ed570188f5a03395ab84d2457a7c64d7acb1c/analysis/1499458308/
和代码:
package android.support.v4;
import com.android.tools.fd.runtime.IncrementalChange;
import com.android.tools.fd.runtime.InstantReloadException;
public final class R {
public static final long serialVersionUID = 830508538663712626L;
public R() {
IncrementalChange var1 = $change;
if(var1 != null) {
Object[] var10001 = (Object[])var1.access$dispatch("init$args.([Landroid/support/v4/R;[Ljava/lang/Object;)Ljava/lang/Object;", new Object[]{null, new Object[0]});
Object[] var2 = (Object[])var10001[0];
this(var10001, (InstantReloadException)null);
var2[0] = this;
var1.access$dispatch("init$body.(Landroid/support/v4/R;[Ljava/lang/Object;)V", var2);
} else {
super();
}
}
R(Object[] var1, InstantReloadException var2) {
String var3 = (String)var1[1];
switch(var3.hashCode()) {
case -1968665286:
super();
return;
case -71951640: …Run Code Online (Sandbox Code Playgroud) Android Studio 2.1即时运行不会更新设备上的应用程序
我发现AndroidStudio 2.1存在问题.当我使用小的Java代码更改运行应用程序时,它有时不会更新设备上的应用程序.而是显示一条消息
无需更改部署//(不再显示)
我在这里错过任何东西吗?作为一种解决方法,我每次都要清理构建,以反映应用程序中的更改.
android android-studio instant-run android-instant-run android-studio-2.1
使用java 8进行简洁的Lambda表达式等,但缺点是即时运行不起作用. buildToolsVersion "23.0.3"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)
如何使用java 8功能启用即时运行
并非所有软件包都可供下载! 以下包不可用: - 包 id 源;android-24
我正在尝试使用 Web 服务从数据库中获取数据,但在运行应用程序时出现上述错误。
如何在 android studio 中解决此问题?
sdk android android-studio android-sdk-manager android-instant-run
我有一个LibGDX项目,它由一个核心项目和多个依赖于它的Android /桌面项目组成.
我目前正在更改核心项目中的一些代码,但是当我运行项目时,手动构建,清理和运行更改并没有反映出来.
从我的搜索中我觉得这个问题与Instant Run有关,但我无法禁用它,因为复选框显示为灰色.
我的问题与Instant Run有关吗?我将如何禁用它?
我刚刚更新到Android工作室2.2,而在我改变字段值或其他小东西之前我可以进行热交换之前,我总是通过通知重新启动:立即运行应用代码更改并重新启动应用程序.字段类型更改.
即使我没有改变任何字段的类型.
有人见过这个吗?有谁知道如何解决这一问题?
我有一个托管WebView组件的简单片段.在这个片段的初始化过程中,我向我的应用注册了一些JavaScript接口方法:
mJavaScriptHooks = new JavaScriptHooks();
...
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(mJavaScriptHooks, "Android");
Run Code Online (Sandbox Code Playgroud)
我的JavaScript钩子并不引人注目,所有都以下列方式声明:
public class JavaScriptHooks {
@JavascriptInterface
public void someMethod() {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
为了确保这些方法不被混淆或优化而遗忘,我添加了以下我的ProGuard配置:
-keepattributes JavascriptInterface
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.网页通过提供的"Android"对象成功调用方法,调用方法并执行相应的任务.但是,它仅在我使用通过Android Studio的即时运行功能生成的APK运行应用程序时才有效.
如果APK是通过Android Studio安装的,或者我是否通过命令行使用安装它并不重要 adb install
如果我通过常规gradle编译我的APK(或者如果我禁用Instant-Run),那么JavaScript界面就会停止工作.
首先,我确保ProGuard被禁用.即使ProGuard以某种方式✨魔法✨启用,我的ProGuard配置也应该确保我的JS方法不受影响.
我还拆解了APK,以确保通过JS接口公开的方法不会以某种方式被破坏(或删除).他们不是.它们似乎在DEX文件中存在,如声明的那样.
当我运行启用了Instant-Run生成的APK时,我可以检查(通过Chrome)WebView中加载的页面并看到我的"Android"对象可用,并且我公开的所有方法都在那里(和可调用的):
> Android
Object
someMethod()
__proto__
Run Code Online (Sandbox Code Playgroud)
但是,当我运行禁用Instant-Run的APK(即vanilla gradle)时,"Android"对象可用,但我的方法都没有.它只是一个空物.
> Android
Object
__proto__
Run Code Online (Sandbox Code Playgroud)
我在WebView中加载的页面位于我控制的公共可见服务器上.在两个APK版本中加载相同的页面,并以相同的方式调用方法.只有使用Instant-Run功能构建的APK似乎才有效.
我一整天都在挖,但我找不到任何有用的东西.大多数建议都指向ProGuard配置问题或WebView中的旧错误(即Gingerbread时代).
android ×9
adb ×1
antivirus ×1
instant-run ×1
java ×1
java-8 ×1
javascript ×1
libgdx ×1
macos-sierra ×1
norton ×1
sdk ×1
trojan ×1
webview ×1