标签: android-jack-and-jill

Android N Java 8功能(Jack编译器)和Kotlin互操作

更新3. KOTLIN 现在正在为ANDROID开发提供正式支持.通过GOOGLE.YAAAAAAAAS!

更新2:从长远来看,看起来JetBrains真的致力于支持Kotlin for Android.我是一个快乐的kotlin用户:).

更新:来自JetBrains的Hadi Hariri 提到他们将发布有关此主题的一些信息.一旦他们这样做,我会更新这篇文章.


===下一个被弃用的东西===

谷歌刚刚发布了即将推出的Android N的预览版,其中包含一些有趣的功能,最值得注意的是部分Java 8语言支持.这是可能的,因为Google正在开发新的Jack工具链.

使用javackotlinc的当前工具链:
javac(.java- > .class) - > dx(.class- > .dex)
kotlinc(.kt- > .class) - > dx(.class- > .dex)

新杰克工具链:
杰克(.java- > .jack- > .dex)

我假设谷歌将推动杰克成为Android开发的默认工具链.更新:Jack现已弃用.亚斯. …

java android kotlin android-jack-and-jill

98
推荐指数
5
解决办法
8600
查看次数

如何使用JACK编译器执行缩小和混淆?

谷歌已经为Android开发者发布了针对Android Studio 2.1 的新JACK编译器测试版.

我的问题是,我们如何使用JACK为APK进行模糊处理?下面的文章说JACK 本地执行模糊处理并且不需要Proguard:

以下文章说JACK使用Proguard配置文件(即.pro文件)来执行混淆:

它也说

在此过程中,Jack还处理任何请求的代码缩小(缩小和/或混淆).

这到底是什么意思?我们是否必须使用该minifyEnabled选项并定义.pro包含Proguard选项的文件?

综上所述:

  • 我们究竟如何与JACK实现混淆?我们是否可以绕过Proguard的使用,或者Proguard在混淆过程中扮演事实上的角色,即使我们使用JACK编译?

  • JACK目前是否支持混淆,是否可以在Android Studio的稳定(即非beta/canary)版本中使用?

注意:

我已经提到了以下帖子:

进一步参考:

更新:

答案马特Insko是有益的,但我想更详细,更准确,规范的答案.

android android-sdk-tools android-studio android-jack-and-jill android-proguard

36
推荐指数
1
解决办法
4807
查看次数

如何加快Android Studio编译过程

最新更新: 查看Android Studio 2.0(预览版)即时运行它真棒!!!!

我发现了一些提示(通过Gradle和Android Studio构建和运行应用程序比通过Eclipse慢)来加速Android Studio(Gradle)的编译过程,但我仍然觉得它太慢了.编译项目并在设备上运行大约需要15秒.

gradle.properties已设置为:

org.gradle.daemon =真

org.gradle.parallel =真

编辑: 太棒了!!! 我的同事报告说Jack和Jill可能是解决方案:http: //www.infoworld.com/article/2856113/mobile-technology/androids-new-jack-and-jill-compilers-head-uphill-to-developers .html我正在读它.

查看此说明:https: //www.saikoa.com/blog/the_upcoming_jack_and_jill_compilers_in_android

编辑2: 杰克和吉尔的新信息!:http: //tools.android.com/tech-docs/jackandjill

编辑3: Android Studio 2.0似乎让我们摆脱了所有的负担!查看"即时运行". http://android-developers.blogspot.nl/2015/11/android-studio-20-preview.html

performance android gradle android-studio android-jack-and-jill

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

使用android-apt插件时,新的Jack工具链崩溃了

我正在尝试使用新的Jack工具链构建一个简单的项目.我的项目依赖于android-apt插件(它使用了一些注释处理工具,但是在我尝试添加此工具之前发生了构建错误).这是我的模块构建脚本(我使用的是Android Studio 1.3gradle插件1.3.0):

apply plugin: 'com.android.application'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.6'
    }
}
apply plugin: 'android-apt'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.netimen.ui.demo"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        useJack=true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
}
Run Code Online (Sandbox Code Playgroud)

当我尝试同步我的项目时,我得到以下ouptup:

Error:Could not find property 'options' on task ':demo:compileDebugJavaWithJack'.
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时,gradlew …

android gradle android-jack-and-jill android-apt

21
推荐指数
2
解决办法
5614
查看次数

杰克和吉尔和destinationDir

谷歌正式发布了他们的博客上提到的杰克和吉尔http://android-developers.blogspot.fr/2014/12/hello-world-meet-our-new-experimental.html

但是,如果我使用以下属性:

defaultConfig {
    applicationId 'xxx'
    minSdkVersion 10
    targetSdkVersion 19
    versionCode 162
    versionName 'xxx'
    // Enabling multidex support.
    multiDexEnabled true
    testInstrumentationRunner "android.support.multidex.MultiDexTestRunner"
    manifestPlaceholders = [ cappId:"xxx",cappLog:"false" ]
    useJack = true
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Error:Cannot get property 'destinationDir' on null object
Run Code Online (Sandbox Code Playgroud)

如果我评论使用Jack属性我没有问题

我知道这是一个实验工具,但你知道我该如何解决这个问题?

android-jack-and-jill

18
推荐指数
1
解决办法
2448
查看次数

添加java8支持时Android studio错误

我的Android Studio或配置有什么问题?

Error:(22, 0) Could not find method jackOptions() for arguments [build_1b0umrzpkhcolzr325bxbizec$_run_closure1$_closure5@41c39fc1] on project ':app' of type org.gradle.api.Project.
Run Code Online (Sandbox Code Playgroud)

这是我的build.gradle

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "com.twtstudio.wepeiyanglite"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
jackOptions {
    enabled true
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}


// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories …
Run Code Online (Sandbox Code Playgroud)

java android android-studio android-jack-and-jill

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

Android Jack mockito另类

也许还为时过早,但正如杰克和吉尔今天宣布的那样,我对此感到非常兴奋.我真的很想去,但他们也说:

读取.class文件的各种工具(例如JaCoCo,Mockito和一些lint检查)目前与Jack编译器不兼容.

杰克编译器已有一个模拟替代品吗?

java android mockito dex android-jack-and-jill

17
推荐指数
1
解决办法
587
查看次数

杰克编译永远

升级我的项目以启用Jack和Java8功能后,我的16gb macbook似乎无法构建我的项目了.我看到内存使用量越来越高,但进程总是停留在同一点.

我的Gradle控制台:

Executing tasks: [:app:assembleDebug]

Configuration on demand is an incubating feature.
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2421Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72421Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72421Library UP-TO-DATE
:app:prepareComAndroidSupportCustomtabs2340Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2421Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUi2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportCoreUtils2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportFragment2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportMediaCompat2421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42421Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2421Library UP-TO-DATE
:app:prepareComBluelinelabsConductor203Library UP-TO-DATE
:app:prepareComFacebookAndroidFacebookAndroidSdk4160Library UP-TO-DATE
:app:prepareComGithubJkwiecienEasyImage130Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuth940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuthBase940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement940Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesTasks940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAnalytics940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAnalyticsImpl940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAuth940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAuthCommon940Library UP-TO-DATE
:app:prepareComGoogleFirebaseFirebaseAuthModule940Library …
Run Code Online (Sandbox Code Playgroud)

android build.gradle android-gradle-plugin android-jack-and-jill

17
推荐指数
1
解决办法
2067
查看次数

杰克和Android - Lambda运行时失败直到干净的构建

看似随机,Android Studio安装的apk已损坏.它通常以lambdas为中心(但每次都是不同的).我正在使用Jack编译和所有内容的最新版本(最后列出).问题一直存在,直到我做了一个干净的构建(然后一切都很好).间歇性故障是一种新现象.Jack和Java 8功能暂时保持稳定.不幸的是,我无法确定在片状失败开始之前发生了什么变化.

示例代码:

private static final Ordering<Foo> ORDER_BY_FOO =
    Ordering.natural().onResultOf(Foo::getId);
Run Code Online (Sandbox Code Playgroud)

实际问题分配(在Guava代码中):

ByFunctionOrdering(Function<F, ? extends T> function, Ordering<T> ordering) {
  this.function = checkNotNull(function);  // <-- Fails
[...]
class ByFunctionOrdering<F, T> extends Ordering<F> {
  final Function<F, ? extends T> function;
Run Code Online (Sandbox Code Playgroud)

示例运行时异常:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mypackage, PID: 32222
java.lang.ExceptionInInitializerError
    at com.mypackage.MyFragment.myOtherMethod(MyFragment.java)
    at com.mypackage.MainActivity.myMethod(MainActivity.java:144)
    at com.mypackage.MainActivity.onActivityResult(MainActivity.java:107)
    at android.app.Activity.dispatchActivityResult(Activity.java:6932)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
 Caused by: …
Run Code Online (Sandbox Code Playgroud)

lambda android-studio android-jack-and-jill

16
推荐指数
1
解决办法
1244
查看次数

使用jack时,Lambda表达式在Android中的IncompatibleClassChangeError崩溃

我在我的Android项目中使用Java 8.我已经设置了Jack(在Android应用程序模块中)和Retrolambda(在其他模块中).

我遇到的问题是当我尝试使用类变量(并且我可以在任何模块中重现它)时,我的Lambda表达式在一个特定场景中崩溃,在所有其他情况下,它按预期工作.也许这是标准的Java行为,但到目前为止我找不到任何解释.有谁知道问题在哪里?我的班级和崩溃如下:

public class LambdaBugTest {

    private final String parentClassVariableString = "parentClassVariableString";

    public void testLambdas() {

        // ----------- THESE WORK OK --------------
        final Functional simpleLambdaWorks = text -> System.out.print(text);
        final Functional methodReferenceWorks = System.out::print;
        final Functional interfaceWithClassParamWorks = new Functional() {
            @Override
            public void doSomething(String text) {
                System.out.print(text + " " + parentClassVariableString);
            }
        };
        // -----------------------------------------

        // ----------- THIS ONE CRASHES ------------
        final Functional lambdaWithClassParamCrashes = text -> System.out.print(text + " " + parentClassVariableString);
        // -----------------------------------------

        simpleLambdaWorks.doSomething("Text from …
Run Code Online (Sandbox Code Playgroud)

lambda android java-8 android-jack-and-jill retrolambda

14
推荐指数
1
解决办法
726
查看次数