Giter Club home page Giter Club logo

laziertracker's People

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

laziertracker's Issues

大牛您好,一个关于使用的问题

`
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url("https://github.com/hongyangAndroid")
.build();
//new call
Call call2 = mOkHttpClient.newCall(request);
//请求加入调度
call2.enqueue(new Callback() {

        @Override
        public void onFailure(Call call, IOException e) {
            Log.e("@@@@", "失败");
        }

        @Override
        public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {

            Log.e("@@@@", "成功");
        }
    });

`

sInterfaceMethods.put('onFailure(Lokhttp3/Call;Ljava/io/IOException)V', new MethodCell( 'onFailure', '(Lokhttp3/Call;Ljava/io/IOException)V', 'okhttp3/Callback', 'onFailure', '(Lokhttp3/Call;Ljava/io/IOException)V', 1, 2, [Opcodes.ALOAD, Opcodes.ALOAD])) sInterfaceMethods.put('onResponse(Lokhttp3/Call;Lokhttp3/Response)V', new MethodCell( 'onResponse', '(Lokhttp3/Call;Lokhttp3/Response)V', 'okhttp3/Callback', 'onResponse', '(Lokhttp3/Call;Lokhttp3/Response)V', 1, 2, [Opcodes.ALOAD, Opcodes.ALOAD]))

大牛您好,请问一下 我想在网络请求这块插入代码 这样写有什么问题吗,就在回调接口onFailure 和onResponse中调用

Execution failed for task ':app:transformClassesWithDexBuilderForDebug'. DEX打包错误

在打最后一个class的文件包为dex的时候,报错,如果不修改class是没有问题的,请问有什么解决方案吗?非常感谢!

  • What went wrong: 16:00:15.917 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':app:transformClassesWithDexBuilderForDebug'. 16:00:15.917 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process /Users/MyDemos/ASMAndroidDemo/app/build/intermediates/transforms/inject transform for asm/debug/34 16:00:15.917 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]

view变化的问题

如何确定view对应的唯一业务id,事实上这样仍然是有概率出现view_path的变化的吧,比如同级插入一个类型相同无id的view,或者版本变更

請問 应用于Android无埋点的Gradle插件解析

大神你好

再次謝謝你的文章    应用于Android无埋点的Gradle插件解析

https://github.com/nailperry-zd/LazierTracker/wiki/%E5%BA%94%E7%94%A8%E4%BA%8EAndroid%E6%97%A0%E5%9F%8B%E7%82%B9%E7%9A%84Gradle%E6%8F%92%E4%BB%B6%E8%A7%A3%E6%9E%90

我想請問一下
om.android.build.gradle.internal.plugins.AppPlugin

com.android.build.gradle.AppPlugin  

除了一個是  Java 一個是  kotlin之外有啥差異啊?

另外

1.  目前看到分析source code的方式大多是 dependencies 處引入

例如

compile 'com.android.tools.build:gradle:3.0.1'

但是這只有部分的code 

根據 https://android.googlesource.com/platform/tools/base 實際上有其他相依性的部分

我查找了一下

gradle 在AS  (Android Studio)在AS成熟後有3次大改版

gradle_3.0.0  /gradle_3.1.2 /gradle_3.4.0

分別是
 https://android.googlesource.com/platform/tools/base/+/refs/tags/gradle_3.0.0/build-system/
                           https://android.googlesource.com/platform/tools/base/+/refs/tags/gradle_3.1.2/build-system/
             
https://android.googlesource.com/platform/tools/base/+/refs/tags/gradle_3.4.0/build-system/

請問這該如何完整提取? 變且編譯出來?

又目前是3.6.3甚至更新

有辦法sync到 3.6.3甚至目前版本嗎?

  1. 大神看來有在研究Android Gradle Plugin    其中Plugin中有  createTaskManager 裡面有DexArchiveBuilderTask

請問我該如何 在 Transform 後   『單獨』 調用這個task  ?

因為想要借用來  將一個裡面都是 class  的 folder轉換成  dex檔案

又或者有參考改寫的範例嗎?

因為我設計了一個  Transform 根據 dependencies  在  jarInputs 階段 輸出與 解壓縮 

我指定的jar

AS 3.3.2编译不过

Could not find project build script dependency on org.jacoco.core

如果我主动引入jacoco,就提示我gradle版本不对

Return code 1 for dex process

Execution failed for task ':app:transformClassesWithDexForDebug'.

com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process

我在您的代码里新增了如下代码:
sFragmentMethods.put('onAttach(Landroid/content/Context;)V', new MethodCell(
'onAttach',
'(Landroid/content/Context;)V',
'',// parent省略, android/app/Fragment 或 android/support/v4/app/Fragment
'Companion.onFragmentAttach',
'(Ljava/lang/Object;)V',
0, 1,
[Opcodes.ALOAD]))
我知道是我哪里没有写对,但是通过借鉴您的代码和查阅ASM文档后发现不了问题,忘能得到指正

我自己发布了一个插件,这个插件只有在你的demo里是没问题的,但是我新建一个功能,配置和你的demo一模一样,仍然是报这个错

className处理出错

代码位置: InjectTransform-isJarNeedModify(File jarFile)

    className = entryName.replace("/", ".").replace(".class","")

出现问题: 仅后一个替换.class字符串的 函数生效.... className中的/符号并没有被替换掉

拆成俩条语句之后生效...

     className = entryName.replace("/", ".")
     className = className.replace(".class", "")

rebuild project got error

first build is perfect,but when change some code and rebuild it ,got this error:

Error:Execution failed for task ':app:transformClassesWithLazierTrackerForDebug'.

com/codeless/plugin/InjectTransform$_transform_closure1

how can i fix it?

codelessConfig 配置必须要把本地的仓库发布到远端吗

本地添加codelessConfig配置后报错
class InjectPluginImpl implements Plugin {
@OverRide
void apply(Project project) {
println "myPlugin here"
project.extensions.create('codelessConfig', InjectPluginParams)
registerTransform(project)
initDir(project);
。。。。

groovy.lang.MissingPropertyException: No such property: InjectPluginParams for class: com.ant.statisticplugin.InjectPluginImpl
at com.ant.statisticplugin.InjectPluginImpl.apply(InjectPluginImpl.groovy:14)
at com.ant.statisticplugin.InjectPluginImpl.apply(InjectPluginImpl.groovy)

README.MD

目标方法对应的ASM字节码操作链接404

你好

    private static void saveModifiedJarForCheck(File optJar) {
        File dir = DataHelper.ext.pluginTmpDir;
        File checkJarFile = new File(dir, optJar.getName());
        if (checkJarFile.exists()) {
            checkJarFile.delete();
        }
        FileUtils.copyFile(optJar, checkJarFile);
    }

请问这段代码,只是用来检查修改的jar包的对吗

关于path

path 维护成本高,请问为什么不采用页面Activity+resIdName的方式匹配

Jar修改的时候匹配有问题

调用modifyJarFile的时候,path2Classname有问题。

class文件,路径名是android\arch\core\R.class这种形式,path2Classname的正则用File.separator能替换成android.arch.core.R.class。

但是jar文件,路径名是com/bumptech/glide/BuildConfig.class这种形式,正则里的File.separator就不起效,会导致jar扫描的时候没法匹配到期望的目标类。

问个问题这个插件的正确引入方式是什么?

我通过Module方式引入,在build.gradle中按照文档中的方式引入会报错:
Error:(266, 0) Could not find method codelessdaConfig() for arguments [build_7d4m8ark868yosfs5856t9l9k$_run_closure7@21635d9d] on project ':app' of type org.gradle.api.Project.
Open File

Looks good! keep working!

at stack depth 0, expected type java.lang.Object but found int
这个问题似乎不是你调用方法传参的问题,而是你使用aload指令操作的栈上的数据类型不对,似乎应该使用iload

view变化的问题

如何确定view对应的唯一业务id,事实上这样仍然是有概率出现view_path的变化的吧,比如同级插入一个类型相同无id的view,或者版本变更

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.