如何让android的module不生成app?

我写了一个android程序,里面有一个主App和两个module,编译后会生成3个手机app,但是我只想要主app生成的手机App,但是当我删了其中一个app是,其他两个app也会被删除。。。

图片说明图片说明

1个回答

你搜一下你的几个mainfest,有没有包含如下2个filter

            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
                            都删掉,只留你的mainActivity的就行了
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
构建Android App Bundle怎么判断哪些文件该进哪个module

各位大神好! 我正在做一个项目是做一个Android App Bundle的构建工具,模仿bundletool的功能。 有点区别是bundletool是把已经创建好的module作为输入,然后放进生成aab的相应位置,我现在做的这个构建工具是要从一开始构建aab。所以是以原始文件作为输入,我现在已经做成了base module,把所有的assets,nativelib和dex都放进base里,下一步是要做dynamic feature module。问题是我需要一个机制来判断哪些应assets,nativelib和dex之类的东西该放进base里还是其他的module里。如果这个需要从构建工具的角度来判断,那么应该在什么地方,哪个步骤来创建这个机制呢?如果是用户设定,那么会以什么方式来设定,我又如何获取这些信息呢? 还有一个比较重要的背景信息是这个项目是往一个已有的构建工具里扩展功能,所以大概设计思路就是先复制里面一个做apk的构建工具,然后改逻辑达到目的。

Android 如何将现有的App的功能打包成SDK

现有一任务就是将一个现有的App的功能打包成SDK, 目前我将App中的几个Activity拿出来自己写了一个library,但是各种报错。目前已经能将此library生成jar包了,但是能不能用还不知道。感觉还是用用App的源代码打包成SDK靠谱点。 老哥们,你们有这方面的经验或者方法吗,求助!!

当加入mainmodule后无法自动生成DaggerAppComponent

![图片说明](https://img-ask.csdn.net/upload/202004/23/1587626906_509050.png) TravelMateApp .java ``` public class TravelMateApp extends DaggerApplication { @Override protected AndroidInjector<? extends DaggerApplication> applicationInjector() { return DaggerAppComponent.create(); } } ``` AppComponent.java ``` @Singleton @Component(modules = { ActivityBindingModule.class, AndroidSupportInjectionModule.class}) public interface AppComponent extends AndroidInjector<DaggerApplication>{ @Override void inject(DaggerApplication instance); } ``` ActivityBindingModule.java ``` @ActivityScoped @ContributesAndroidInjector(modules = MainModule.class) abstract MainActivity mainActivity(); ``` MainModule.java ``` @Module public abstract class MainModule { @FragmentScoped @ContributesAndroidInjector abstract HomeFragment homeFragment(); @FragmentScoped @ContributesAndroidInjector abstract DiscoveryFragment discoveryFragment(); @FragmentScoped @ContributesAndroidInjector abstract ContactFragment contactFragment(); @FragmentScoped @ContributesAndroidInjector abstract MeFragment meFragment(); } ``` build.gradle ``` /*Dagger2*/ implementation 'com.google.dagger:dagger:2.15' annotationProcessor 'com.google.dagger:dagger-compiler:2.15' /*Dagger-Android*/ implementation "com.google.dagger:dagger-android:2.15" implementation 'com.google.dagger:dagger-android-support:2.15' annotationProcessor 'com.google.dagger:dagger-android-processor:2.15' ```

android-编译的时候出现两个app图标

现在在测试多moudle开发,但是每次都会出现两个app,单独编译moudle的时候只会出现一个main文件,但是运行整个app的时候测试的moudle却会出现两个main文件(一个debug一个main文件夹下的),是我的这个写的有问题吗 ``` main { if (!isNeedDemoLibraryMoudle.toBoolean()) { manifest.srcFile 'src/debug/AndroidManifest.xml' } else { manifest.srcFile 'src/main/AndroidManifest.xml' java { //全部Module一起编译的时候剔除debug目录 exclude '**/debug/**' } } } ```

我的android studio总是不能够创建app-debug.apk文件?

错误: Gradle build finished with 1 error(s) in 33 sec Unexpected Error Local path doesn't exist. Local path doesn't exist. The project may need to be synced with Gradle files. 找到的办法:sdk\tools\lib\find_java.bat 文件中多个空格或冗余 查看没有以上问题,还有什么解决方法,求教

如何使系统app编译运行

如何将安卓系统下pakages/app/下的app跑起来呢?具体步骤如何实现

关于android studio 导出jar包时遇到的问题--release、debug模式

我的工作需要在把自己做的一个项目做成sdk形式供他人使用,在网上参考了一篇博文后却遇到了如下问题。 在我的 module目录的build/intermediates/bundles/路径下只有debug文件夹,没有对应的release,所以无法按步骤进行下去。 参考博文:[android studio 使用gradle 导出jar包,并打包assets目录](http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html "") 下面贴上一张Android studio工程目录结构 ![图片说明](https://img-ask.csdn.net/upload/201505/12/1431429113_750819.png)

Android5.1源码/package/apps/添加了自己的APK源文件编译问题!

![图片说明](https://img-ask.csdn.net/upload/201607/07/1467893812_2665.png) 只是生成了图片中的jar包,!在out目录下没有生成对应的apk 目录下Android.mk如下! 求大神帮忙 LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS:=optional LOCAL_SRC_FILES:=$(call all-java-files-under,src) LOCAL_PACKAGE_NAME:=First_test LOCAL_CERTIFICATE:=platform LOCAL_DEX_PREOPT:false #include $(BUILD_PACKAGE) include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:=support:libs/android-support-v4.jar \ vappcom:libs/android-support-v7-appcompat.jar include $(BUILD_MULTI_PREBUILT) include $(call all-makefiles-under,$(LOCAL_PATH))

Android 打包依赖,导入后使用自定义View找不到attr属性

我将library打包成依赖后,发布到**jitpack**,在项目中导入后,使用library中的自定义View,所有的自定义的attr属性都标红线且没有代码提示,但是编译运行都没有问题,布局文件中加入了xmlns:app="http://schemas.android.com/apk/res-auto",也没有效果,求解

安卓,调试时无法进入到run方法

安卓,调试时无法进入到run方法,但把该项目下生成的apk文件发送到手机并安装运行 是这样的,按下"主线程的消息"按钮,结果如下: ![图片说明](https://img-ask.csdn.net/upload/201702/19/1487455197_812710.png) 按下"从其他线程到主线程的消息"和"消息与其他线程运行从主线程的回调"按钮,结果 如下: ![图片说明](https://img-ask.csdn.net/upload/201702/19/1487455772_249075.png) 按下"消息到其他线程本身"按钮,结果如下: ![图片说明](https://img-ask.csdn.net/upload/201702/19/1487455715_41821.png) 求解释 EventHandler.java ``` package com.mytest.handlertest; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.widget.Toast; class EventHandler extends Handler { private NoLooperThread noLooperThread; private OwnLooperThread ownLooperThread; private Context context; public EventHandler(Context context,Looper looper) { super(looper); this.context=context; } public EventHandler() { super(); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); Log.e("EventHandler", "当前线程id:------+>"+Thread.currentThread().getId()); Toast.makeText(context, "当前线程id:------+>"+Thread.currentThread().getId(), Toast.LENGTH_SHORT).show(); //可以根据msg.what执行不同的处理,这里没有这么做 switch(msg.what){ case 1: Log.e("EventHandler",(String)msg.obj); break; case 2: Log.e("EventHandler",(String)msg.obj); Toast.makeText(context, (String)msg.obj, Toast.LENGTH_SHORT).show(); //noLooperThread.stop(); break; case 3: //不能在非主线程的线程里面更新UI,所以这里通过Log打印收到的消息 Log.e("EventHandler", (String)msg.obj); //ownLooperThread.stop(); break; default: //不能在非主线程的线程里面更新UI,所以这里通过Log打印收到的消息 Log.e("EventHandler", (String)msg.obj); break; } } } ``` HandlerTest.java ``` package com.mytest.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class HandlerTest extends Activity implements OnClickListener { private Button btn1,btn2,btn3,btn4,btn5,btn6; private boolean postRunnable; private EventHandler mHandler; private NoLooperThread noLooperThread; private OwnLooperThread ownLooperThread; private Handler mOtherThreadHandler; private TextView tv; private ReceiveMessageThread receiveMessageThread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_handler_test); btn1=(Button)findViewById(R.id.b101); btn2=(Button)findViewById(R.id.b102); btn3=(Button)findViewById(R.id.b103); btn4=(Button)findViewById(R.id.b104); btn5=(Button)findViewById(R.id.b105); btn6=(Button)findViewById(R.id.b106); tv=(TextView)findViewById(R.id.tv1); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); btn5.setOnClickListener(this); btn6.setOnClickListener(this); receiveMessageThread=new ReceiveMessageThread(this); receiveMessageThread.start(); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.b101: //主线程发送消息给自己 Looper looper; looper = Looper.myLooper(); //get the Main looper related with the main thread //如果不给任何参数的话会用当前线程对应的Looper(这里就是Main Looper)为Handler里面的成员mLooper赋值 mHandler = new EventHandler(this,looper); //mHandler = new EventHandler(); // 清除整个MessageQueue里的消息 mHandler.removeMessages(0); String obj = "This main thread's message and received by itself!"; //得到Message对象 Message m = mHandler.obtainMessage(2, 1, 1, obj); // 将Message对象送入到main thread的MessageQueue里面 mHandler.sendMessage(m); break; case R.id.b102: //other线程发送消息给主线程 postRunnable = false; noLooperThread = new NoLooperThread(this); noLooperThread.start(); break; case R.id.b103: //other thread获取它自己发送的消息 tv.setText("请看其他线程接收消息的错误级别日志"); ownLooperThread = new OwnLooperThread(this); ownLooperThread.start(); break; case R.id.b104: //other thread通过Post Runnable方式发送消息给主线程 postRunnable = true; noLooperThread = new NoLooperThread(this); noLooperThread.start(); break; case R.id.b105: //主线程发送消息给other thread if(null!=mOtherThreadHandler){ tv.setText("please look at the error level log for other thread received message from main thread"); String msgObj = "message from mainThread"; Message mainThreadMsg = mOtherThreadHandler.obtainMessage(1, 1, 1, msgObj); mOtherThreadHandler.sendMessage(mainThreadMsg); } break; case R.id.b106: finish(); break; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.handler_test, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } ``` NoLooperThread.java ``` package com.mytest.handlertest; import android.content.Context; import android.os.Looper; import android.os.Message; import android.util.Log; import android.widget.TextView; import android.widget.Toast; class NoLooperThread extends Thread{ private Context context; private TextView tv; private boolean postRunnable; private EventHandler mNoLooperThreadHandler; public NoLooperThread(Context context) { this.context=context; } public void run() { Looper myLooper, mainLooper; myLooper = Looper.myLooper(); mainLooper = Looper.getMainLooper(); //这是一个static函数 String obj; if(myLooper == null){ mNoLooperThreadHandler = new EventHandler(context,mainLooper); obj = "NoLooperThread has no looper and handleMessage function executed in main thread!"; } else { mNoLooperThreadHandler = new EventHandler(context,myLooper); obj = "This is from NoLooperThread self and handleMessage function executed in NoLooperThread!"; } //Toast.makeText(context, obj, Toast.LENGTH_SHORT).show(); mNoLooperThreadHandler.removeMessages(0); if(false == postRunnable){ //send message to main thread Message m = mNoLooperThreadHandler.obtainMessage(2, 1, 1, obj); mNoLooperThreadHandler.sendMessage(m); Log.e("NoLooperThread", "NoLooperThread id:" + this.getId()); }else{ //下面new出来的实现了Runnable接口的对象中run函数是在Main Thread中执行,不是在NoLooperThread中执行 //注意Runnable是一个接口,它里面的run函数被执行时不会再新建一个线程 //您可以在run上加断点然后在eclipse调试中看它在哪个线程中执行 mNoLooperThreadHandler.post(new Runnable(){ @Override public void run() { Log.e("NoLooperThread","update UI through handler post runnalbe mechanism!"); // noLooerThread.stop(); } }); } } } ``` OwnLooperThread.java ``` package com.mytest.handlertest; import android.content.Context; import android.os.Looper; import android.os.Message; import android.widget.Toast; class OwnLooperThread extends Thread{ private Context context; private EventHandler mOwnLooperThreadHandler; public OwnLooperThread(Context context) { this.context=context; } public void run() { Looper.prepare(); Looper myLooper, mainLooper; myLooper = Looper.myLooper(); mainLooper = Looper.getMainLooper(); //这是一个static函数 String obj; if(myLooper == null){ mOwnLooperThreadHandler = new EventHandler(context,mainLooper); obj = "OwnLooperThread has no looper and handleMessage function executed in main thread!"; } else { mOwnLooperThreadHandler = new EventHandler(context,myLooper); obj = "This is from OwnLooperThread self and handleMessage function executed in NoLooperThread!"; } //Toast.makeText(context, obj, Toast.LENGTH_SHORT).show(); mOwnLooperThreadHandler.removeMessages(0); //给自己发送消息 Message m = mOwnLooperThreadHandler.obtainMessage(3, 1, 1, obj); mOwnLooperThreadHandler.sendMessage(m); Looper.loop(); } } ``` ReceiveMessageThread.java ``` package com.mytest.handlertest; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.widget.Toast; class ReceiveMessageThread extends Thread{ private Handler mOtherThreadHandler; private Context context; public ReceiveMessageThread(Context context) { this.context=context; } public void run() { Looper.prepare(); mOtherThreadHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Log.e("ReceiveMessageThread", (String)msg.obj); Log.e("ReceiveMessageThread","当前线程id:----+>"+Thread.currentThread().getId()); // Toast.makeText(context, "当前线程id:----+>"+Thread.currentThread().getId(), Toast.LENGTH_SHORT).show(); } }; Looper.loop(); } } ```

安卓module打包成aar文件,运行后报错java.lang.NoSuchMethodError:

报错信息: java.lang.NoSuchMethodError: No static method setOnApplyWindowInsetsListener(Landroid/view/View;Landroid/support/v4/view/OnApplyWindowInsetsListener;)V in class Landroid/support/v4/view/ViewCompatLollipop; or its super classes (declaration of 'android.support.v4.view.ViewCompatLollipop' appears in /data/app/com.b1993423839.zsa-1/base.apk:classes46.dex) 下面是我的v4和v7包都放在module的libs中引用,版本都是一致的,最后打包的时候也是将引用的aar文件放入主项目的libs中引用,最后将module的aar引入到主项目中,为啥运行的时候会出现找不到v4的方法呢? //安卓高级组件implementation(name: 'recyclerview-v7-25.2.0', ext: 'aar') implementation(name: 'constraint-layout-1.0.2', ext: 'aar') implementation files('libs/constraint-layout-solver-1.0.2.jar') implementation(name: 'design-25.2.0', ext: 'aar') //安卓兼容包 implementation(name: 'animated-vector-drawable-25.2.0', ext: 'aar') implementation(name: 'appcompat-v7-25.2.0', ext: 'aar') implementation(name: 'support-compat-25.2.0', ext: 'aar') implementation(name: 'support-core-ui-25.2.0', ext: 'aar') implementation(name: 'support-core-utils-25.2.0', ext: 'aar') implementation(name: 'support-fragment-25.2.0', ext: 'aar') implementation(name: 'support-media-compat-25.2.0', ext: 'aar') implementation(name: 'support-v4-25.2.0', ext: 'aar') implementation(name: 'support-vector-drawable-25.2.0', ext: 'aar') implementation(name: 'transition-25.2.0', ext: 'aar') implementation files('libs/support-annotations-25.2.0.jar') ![图片说明](https://img-ask.csdn.net/upload/201804/16/1523852888_948038.jpg)

请教大神帮忙解决一下eclipse里面android_NDK编译.c文件报错

"D:\\Android\\android-ndk-r9d\\ndk-build.cmd" all 系统找不到指定的文件。 [armeabi-v7a] Compile thumb : hello-jni <= hello-jni.c jni/hello-jni.c:31:1: fatal error: opening dependency file ./obj/local/armeabi-v7a/objs/hello-jni/hello-jni.o.d: No such file or directory compilation terminated. make.exe: *** [obj/local/armeabi-v7a/objs/hello-jni/hello-jni.o] Error 1 19:06:20 Build Finished (took 2s.346ms) 我实在是不知道为什么会报找不到文件,新手,刚接触NDK,求好心人解答,万分感激. 370361737,可以远程帮我. 这是android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) 这application.mk: APP_ABI := all 把ndk改r8的就可以了,虽然有点小问题,但可以跑了,r10就不可以,这是什么问题呢?eclipse版本问题吗?还是哪里没设置对?我是一模一样的配的。 公司电脑还是xp的,家里装win7的 r8生成的.so文件在obj目录下,拖到lib就可以运行,正常,r10的任何目录都找不到.so文件

把数据库中的全部数据转为json格式的

![图片说明](https://img-ask.csdn.net/upload/201712/01/1512102751_113925.png) 这是我手机里数据库的数据。我想把这里的数据全部变为JSON格式的,有没有什么具体的思路,怎么操作?网上看了很多但还是很懵逼

用cocostudio打包的,求大神指点

Based on: cocos2d-x-3.8 Updated project.properties Updated local.properties Updated file D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\proguard-project.txt Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml make.exe: Entering directory `D:/VSSWS/project/WWHPJ/frameworks/runtime-src/proj.android' [armeabi] StaticLibrary : libcpufeatures.a [armeabi] SharedLibrary : libcocos2djs.so [armeabi] Install : libcocos2djs.so => libs/armeabi/libcocos2djs.so make.exe: Leaving directory `D:/VSSWS/project/WWHPJ/frameworks/runtime-src/proj.android' 执行命令:jscompile 正在处理 js 文件。 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\main.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\res\loading.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\3d\jsb_cocos2d_3d.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\3d\jsb_cocos2d_3d_ext.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\ccui\jsb_ccui_create_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\ccui\jsb_ccui_deprecated.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\ccui\jsb_ccui_property_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\ccui\jsb_ccui_property_impls.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\ccui\jsb_cocos2d_ui.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\chipmunk\jsb_chipmunk.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\chipmunk\jsb_chipmunk_constants.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\actors\root.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\actors\script.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\core\promise.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\DevToolsUtils.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\main.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\debugger\transport.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\extension\jsb_cocos2d_extension.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\extension\jsb_ext_create_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\extension\jsb_ext_property_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_audioengine.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_boot.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_cocos2d.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_cocos2d_constants.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_cocosbuilder.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_common.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_create_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_debugger.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_deprecated.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_loaders.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_opengl.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_opengl_constants.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_pool.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_prepare.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_property_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_property_impls.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\jsb_spine.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\navmesh\jsb_navmesh.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\physics3d\jsb_physics3d.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\physicsSprite\jsb_physicsSprite.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\jsb_cocos2d_studio.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\jsb_studio_boot.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\jsb_studio_create_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\jsb_studio_load.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\jsb_studio_property_apis.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\action-1.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\action-2.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\compatible.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\scene-1.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\timelineParser-1.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\timelineParser-2.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\script\studio\parsers\uiParser-1.x.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\app.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\endScene.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\gameScene.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\lib\gx2.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\lib\net.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\lib\sxutil.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\loading.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\num.js 编译为字节码... 正在将 D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets\src\resource.js 编译为字节码... 编译完成。 ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME. 执行命令:compile 编译模式:debug 使用 Eclipse 工程:D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android 未指定 Android 目标平台版本,自动查找一个可用版本... 正在执行:'"D:\Cocos\Android-SDK\tools\android" update project -t android-20 -p D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android' 正在执行 ndk-build... NDK 编译模式:release NDK_TOOLCHAIN_VERSION: 4.9 正在执行:'"D:\Cocos\android-ndk-r10d\ndk-build" -C D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android -j3 NDK_MODULE_PATH=C:\Cocos\frameworks/cocos2d-x-3.8;C:\Cocos\frameworks/cocos2d-x-3.8/cocos;C:\Cocos\frameworks/cocos2d-x-3.8/external NDK_TOOLCHAIN_VERSION=4.9' 正在生成 apk 文件... 正在执行:'"C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\bin\cocos" jscompile -s "D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets" -d "D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\assets"' 正在执行:'"C:\Cocos\tools\ant\bin\ant" clean debug -f D:\VSSWS\project\WWHPJ\frameworks\runtime-src\proj.android\build.xml -Dsdk.dir="D:\Cocos\Android-SDK"' Traceback (most recent call last): File "C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\bin\cocos.py", line 897, in <module> run_plugin(command, argv, plugins) File "C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\bin\cocos.py", line 834, in run_plugin plugin.run(argv, dependencies_objects) File "C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\plugins\project_compile\project_compile.py", line 1615, in run self.build_android() File "C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\plugins\project_compile\project_compile.py", line 536, in build_android self.apk_path = builder.do_build_apk(build_mode, self._no_apk, output_dir, self._custom_step_args, self) File "C:\Cocos\frameworks\cocos2d-x-3.8\tools\cocos2d-console\plugins\project_compile\build_android.py", line 552, in do_build_apk shutil.copy(gen_apk_path, output_dir) File "C:\Cocos\Cocos\CocosStudio2\Third_Party\python\lib\shutil.py", line 119, in copy copyfile(src, dst) File "C:\Cocos\Cocos\CocosStudio2\Third_Party\python\lib\shutil.py", line 82, in copyfile with open(src, 'rb') as fsrc: IOError: [Errno 2] No such file or directory: u'D:\\VSSWS\\project\\WWHPJ\\frameworks\\runtime-src\\proj.android\\bin\\WWHPJ-debug.apk' 打包失败,不知道为什么

Glide依赖报错

Error:Module 'com.github.bumptech.glide:okhttp3-integration:4.0.0-RC0' depends on one or more Android Libraries but is a jar![图片说明](https://img-ask.csdn.net/upload/201805/12/1526096276_321369.png) 有没有遇见过这个问题的?谢谢了

Ionic4 打包安卓apk后 切换页面没有像IOS那种从右想左打开的效果

Ionic4 打包安卓apk后 切换页面没有像IOS那种从右想左打开的效果 app.module.ts 加了 下面这句话,在网页中调试没有问题,打包后就没有效果了 ![图片说明](https://img-ask.csdn.net/upload/201904/23/1556012824_475508.png) 手机是安卓版本6.0的

bugly集成,按照文档集成,然后报错,tinkerId is not set!!!

![说明](https://img-ask.csdn.net/upload/201711/22/1511318268_786157.png) 下面是配置文件 tinker-support.gradle 的内容,我估计是下面的配置有问题 apply plugin: 'com.tencent.bugly.tinker-support' def bakPath = file("${buildDir}/bakApk/") /** * 此处填写每次构建生成的基准包目录 */ def baseApkDir = "app-1122-10-07-28" //--->升级包对应了基准包了 /** * 对于插件各参数的详细解析请参考 */ tinkerSupport { // 开启tinker-support插件,默认值true enable = true // 指定归档目录,默认值当前module的子目录tinker autoBackupApkDir = "${bakPath}" // 编译补丁包时,必需指定基线版本的apk,默认值为空 // 如果为空,则表示不是进行补丁包的编译 // @{link tinkerPatch.oldApk } baseApk = "${bakPath}/${baseApkDir}/app-debug.apk" // 对应tinker插件applyMapping baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-debug-mapping.txt" // 对应tinker插件applyResourceMapping baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-debug-R.txt" // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性 //tinkerId = "base-1.0.4" //-->基础包使用这个 tinkerId = "patch-1.0.4" //--> 更新包使用这个 // 是否启用覆盖tinkerPatch配置功能,默认值false // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch overrideTinkerPatchConfiguration = false //--->手动改成了false // 构建多渠道补丁时使用 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" //支持加固需要添加的属性 isProtectedApp = true // 是否开启反射Application模式 enableProxyApplication = false } /** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */ tinkerPatch { oldApk = "${bakPath}/${baseApkDir}/app-debug.apk" ignoreWarning = true //--> 手动改成了true useSign = true dex { dexMode = "jar" pattern = ["classes*.dex"] loader = [] } lib { pattern = ["lib/*/*.so"] } res { pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"] ignoreChange = [] largeModSize = 100 } packageConfig { } sevenZip { zipArtifact = "com.tencent.mm:SevenZip:1.1.10" // path = "/usr/local/bin/7za" } buildConfig { keepDexApply = false //tinkerId = "1.0.1-base" //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配 } } 我认为主要是这个配置的情况,请问大佬怎么解决

bugly集成,按照文档集成,然后报错,tinkerId is not set!!!

![图片说明](https://img-ask.csdn.net/upload/201711/22/1511318268_786157.png) 下面是配置文件 tinker-support.gradle 的内容,我估计是下面的配置有问题 ``` apply plugin: 'com.tencent.bugly.tinker-support' def bakPath = file("${buildDir}/bakApk/") /** * 此处填写每次构建生成的基准包目录 */ def baseApkDir = "app-1122-10-07-28" //--->升级包对应了基准包了 /** * 对于插件各参数的详细解析请参考 */ tinkerSupport { // 开启tinker-support插件,默认值true enable = true // 指定归档目录,默认值当前module的子目录tinker autoBackupApkDir = "${bakPath}" // 编译补丁包时,必需指定基线版本的apk,默认值为空 // 如果为空,则表示不是进行补丁包的编译 // @{link tinkerPatch.oldApk } baseApk = "${bakPath}/${baseApkDir}/app-debug.apk" // 对应tinker插件applyMapping baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-debug-mapping.txt" // 对应tinker插件applyResourceMapping baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-debug-R.txt" // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性 //tinkerId = "base-1.0.4" //-->基础包使用这个 tinkerId = "patch-1.0.4" //--> 更新包使用这个 // 是否启用覆盖tinkerPatch配置功能,默认值false // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch overrideTinkerPatchConfiguration = false //--->手动改成了false // 构建多渠道补丁时使用 // buildAllFlavorsDir = "${bakPath}/${baseApkDir}" //支持加固需要添加的属性 isProtectedApp = true // 是否开启反射Application模式 enableProxyApplication = false } /** * 一般来说,我们无需对下面的参数做任何的修改 * 对于各参数的详细介绍请参考: * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97 */ tinkerPatch { oldApk = "${bakPath}/${baseApkDir}/app-debug.apk" ignoreWarning = true //--> 手动改成了true useSign = true dex { dexMode = "jar" pattern = ["classes*.dex"] loader = [] } lib { pattern = ["lib/*/*.so"] } res { pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"] ignoreChange = [] largeModSize = 100 } packageConfig { } sevenZip { zipArtifact = "com.tencent.mm:SevenZip:1.1.10" // path = "/usr/local/bin/7za" } buildConfig { keepDexApply = false //tinkerId = "1.0.1-base" //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard混淆方式 //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可选,设置R.txt文件,通过旧apk文件保持ResId的分配 } } ``` 我认为主要是这个配置的情况,请问大佬怎么解决

NullPointerException during IR Conversion求教各位大佬这个问题应该怎么解决

下载了Mozilla的fenix的工程,然后自己新建了一个项目,但是没有办法生成APK,build的时候出现NullPointerException during IR Conversion 生成APK的时候出现这个错误 ``` Error: C:\Users\1247\.gradle\caches\transforms-2\files-2.1\a23c8c3902a9b5254e713513da60c387\jetified-feature-tab-collections-43.0.20200520130058-runtime.jar:mozilla/components/feature/tab/collections/TabCollectionStorage.class, androidx.lifecycle.LiveData mozilla.components.feature.tab.collections.TabCollectionStorage.getCollections(int), NullPointerException during IR Conversion ``` 尝试过 1.指定r8版本,classpath 'com.android.tools:r8:1.6.88' 2.在gradle.properties中添加android.useNewApkCreator=false 3.提高依赖版本 还是没有用 下面是我的gradle文件 ``` ``` buildscript { ext.kotlin_version = '1.3.72' repositories { maven { url "https://nightly.maven.mozilla.org/maven2" content { // Always fetch components from the snapshots repository includeGroup "org.mozilla.components" } } maven { url "https://maven.mozilla.org/maven2" content { // Never fetch components from here. We always want to use snapshots. excludeGroup "org.mozilla.components" } } google() jcenter() { url 'https://jcenter.bintray.com/' } } dependencies { classpath 'com.android.tools.build:gradle:3.6.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files def nav_version = "2.2.2" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2' def components_version = "43.0.20200520130058" classpath "org.mozilla.components:tooling-glean-gradle:$components_version" classpath "org.jetbrains.kotlin:kotlin-allopen:1.3.72" classpath "com.android.tools:r8:1.6.84" } } allprojects { repositories { google() jcenter() maven { url "https://nightly.maven.mozilla.org/maven2" content { // Always fetch components from the snapshots repository includeGroup "org.mozilla.components" } } maven { url "https://maven.mozilla.org/maven2" content { // Never fetch components from here. We always want to use snapshots. excludeGroup "org.mozilla.components" } } } } task clean(type: Delete) { delete rootProject.buildDir } ``` buildscript { ext.kotlin_version = '1.3.72' repositories { maven { url "https://nightly.maven.mozilla.org/maven2" content { // Always fetch components from the snapshots repository includeGroup "org.mozilla.components" } } maven { url "https://maven.mozilla.org/maven2" content { // Never fetch components from here. We always want to use snapshots. excludeGroup "org.mozilla.components" } } google() jcenter() { url 'https://jcenter.bintray.com/' } } dependencies { classpath 'com.android.tools.build:gradle:3.6.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files def nav_version = "2.2.2" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2' def components_version = "43.0.20200520130058" classpath "org.mozilla.components:tooling-glean-gradle:$components_version" classpath "org.jetbrains.kotlin:kotlin-allopen:1.3.72" classpath "com.android.tools:r8:1.6.84" } } allprojects { repositories { google() jcenter() maven { url "https://nightly.maven.mozilla.org/maven2" content { // Always fetch components from the snapshots repository includeGroup "org.mozilla.components" } } maven { url "https://maven.mozilla.org/maven2" content { // Never fetch components from here. We always want to use snapshots. excludeGroup "org.mozilla.components" } } } } task clean(type: Delete) { delete rootProject.buildDir } ``` ``` plugins { id "com.jetbrains.python.envs" version "0.0.26" } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: "androidx.navigation.safeargs.kotlin" apply plugin: 'com.google.android.gms.oss-licenses-plugin' android { compileSdkVersion 29 defaultConfig { applicationId "com.frobisher.netexplorer" minSdkVersion 23 targetSdkVersion 29 versionCode 1 versionName "1.0" // def buildDate = Config.generateBuildDate() // buildConfigField 'String', 'BUILD_DATE', '"' + buildDate + '"' buildConfigField 'String', 'SENTRY_TOKEN', 'null' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true def deepLinkSchemeValue = "net-explorer" manifestPlaceholders = [ "isRaptorEnabled": "false", "deepLinkScheme" : deepLinkSchemeValue ] resValue "bool", "IS_DEBUG", "false" buildConfigField "String", "AMO_COLLECTION", "\"16f6e5d9a40448b8955db57ced6d75\"" buildConfigField 'String', 'DIGITAL_ASSET_LINKS_TOKEN', 'null' buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\"" buildConfigField 'boolean', 'CRASH_REPORTING', 'true' buildConfigField 'String', 'ADJUST_TOKEN', 'null' buildConfigField 'boolean', 'TELEMETRY', 'false' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } kotlinOptions { jvmTarget = "1.8" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } android.applicationVariants.all { variant -> try { def token = new File("${rootDir}/.mls_token").text.trim() buildConfigField 'String', 'MLS_TOKEN', '"' + token + '"' println "(Added from .mls_token file)" } catch (FileNotFoundException ignored) { buildConfigField 'String', 'MLS_TOKEN', '""' println("X_X") } try { def parts = new File("${rootDir}/.leanplum_token").text.trim().split(":") def id = parts[0] def key = parts[1] buildConfigField 'String', 'LEANPLUM_ID', '"' + id + '"' buildConfigField 'String', 'LEANPLUM_TOKEN', '"' + key + '"' println "(Added from .leanplum_token file)" } catch (FileNotFoundException ignored) { buildConfigField 'String', 'LEANPLUM_ID', 'null' buildConfigField 'String', 'LEANPLUM_TOKEN', 'null' println("X_X") } } } task buildTranslationArray { def foundLocales = new StringBuilder() foundLocales.append("new String[]{") fileTree("src/main/res").visit { FileVisitDetails details -> if (details.file.path.endsWith("/strings.xml")) { def languageCode = details.file.parent.tokenize('/').last().replaceAll('values-', '').replaceAll('-r', '-') languageCode = (languageCode == "values") ? "en-US" : languageCode foundLocales.append("\"").append(languageCode).append("\"").append(",") } } foundLocales.append("}") def foundLocalesString = foundLocales.toString().replaceAll(',}', '}') android.defaultConfig.buildConfigField "String[]", "SUPPORTED_LOCALE_ARRAY", foundLocalesString } // Generate Kotlin code and markdown docs for the Fenix Glean metrics. ext.gleanGenerateMarkdownDocs = true ext.gleanDocsDirectory = "$rootDir/docs" apply plugin: "org.mozilla.telemetry.glean-gradle-plugin" dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.2.0' // implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' def components_version = "43.0.20200520130058" implementation "org.mozilla.components:browser-toolbar:$components_version" implementation "org.mozilla.components:browser-engine-gecko-nightly:$components_version" implementation "org.mozilla.components:browser-menu:$components_version" implementation "org.mozilla.components:browser-awesomebar:$components_version" implementation "org.mozilla.components:browser-domains:$components_version" implementation "org.mozilla.components:browser-search:$components_version" implementation "org.mozilla.components:browser-tabstray:$components_version" implementation "org.mozilla.components:browser-menu:$components_version" implementation "org.mozilla.components:browser-session:$components_version" implementation "org.mozilla.components:browser-state:$components_version" implementation "org.mozilla.components:browser-storage-sync:$components_version" implementation "org.mozilla.components:browser-icons:$components_version" implementation "org.mozilla.components:browser-thumbnails:$components_version" implementation "org.mozilla.components:feature-toolbar:$components_version" implementation "org.mozilla.components:feature-addons:$components_version" implementation "org.mozilla.components:feature-app-links:$components_version" implementation "org.mozilla.components:feature-awesomebar:$components_version" implementation "org.mozilla.components:feature-contextmenu:$components_version" implementation "org.mozilla.components:feature-customtabs:$components_version" implementation "org.mozilla.components:feature-findinpage:$components_version" implementation "org.mozilla.components:feature-media:$components_version" implementation "org.mozilla.components:feature-sitepermissions:$components_version" implementation "org.mozilla.components:feature-intent:$components_version" implementation "org.mozilla.components:feature-search:$components_version" implementation "org.mozilla.components:feature-session:$components_version" implementation "org.mozilla.components:feature-tabs:$components_version" implementation "org.mozilla.components:feature-downloads:$components_version" implementation "org.mozilla.components:feature-prompts:$components_version" implementation "org.mozilla.components:feature-push:$components_version" implementation "org.mozilla.components:feature-pwa:$components_version" implementation "org.mozilla.components:feature-qr:$components_version" implementation "org.mozilla.components:feature-readerview:$components_version" implementation "org.mozilla.components:feature-syncedtabs:$components_version" implementation "org.mozilla.components:feature-webcompat:$components_version" implementation "org.mozilla.components:feature-webnotifications:$components_version" implementation "org.mozilla.components:feature-accounts:$components_version" implementation "org.mozilla.components:feature-accounts-push:$components_version" implementation "org.mozilla.components:feature-tab-collections:$components_version" implementation "org.mozilla.components:feature-top-sites:$components_version" implementation "org.mozilla.components:feature-share:$components_version" implementation "org.mozilla.components:concept-engine:$components_version" implementation "org.mozilla.components:concept-toolbar:$components_version" implementation "org.mozilla.components:concept-tabstray:$components_version" implementation "org.mozilla.components:concept-storage:$components_version" implementation "org.mozilla.components:concept-push:$components_version" implementation "org.mozilla.components:concept-sync:$components_version" implementation "org.mozilla.components:ui-icons:$components_version" implementation "org.mozilla.components:ui-colors:$components_version" implementation "org.mozilla.components:ui-autocomplete:$components_version" implementation "org.mozilla.components:ui-tabcounter:$components_version" implementation "org.mozilla.components:service-firefox-accounts:$components_version" implementation "org.mozilla.components:service-glean:$components_version" implementation "org.mozilla.components:service-experiments:$components_version" implementation "org.mozilla.components:service-sync-logins:$components_version" implementation "org.mozilla.components:service-location:$components_version" implementation "org.mozilla.components:support-utils:$components_version" implementation "org.mozilla.components:support-ktx:$components_version" implementation "org.mozilla.components:support-rustlog:$components_version" implementation "org.mozilla.components:support-rusthttp:$components_version" implementation "org.mozilla.components:support-webextensions:$components_version" implementation "org.mozilla.components:support-locale:$components_version" implementation "org.mozilla.components:support-migration:$components_version" implementation "org.mozilla.components:lib-crash:$components_version" implementation "org.mozilla.components:lib-push-firebase:$components_version" implementation "org.mozilla.components:lib-publicsuffixlist:$components_version" implementation "com.google.android.material:material:1.1.0" implementation "androidx.constraintlayout:constraintlayout:2.0.0-beta6" implementation "androidx.recyclerview:recyclerview:1.1.0" implementation "androidx.paging:paging-runtime-ktx:2.1.2" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" implementation 'androidx.work:work-runtime-ktx:2.3.4' implementation "androidx.preference:preference-ktx:1.1.1" implementation "com.google.android:flexbox:2.0.1" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:2.2.2" implementation "androidx.navigation:navigation-ui-ktx:2.2.2" implementation "com.tencent.bugly:crashreport:3.1.8" implementation 'com.tencent.bugly:nativecrashreport:3.7.1' implementation 'com.airbnb.android:lottie:3.4.0' implementation "com.google.android.gms:play-services-oss-licenses:17.0.0" implementation "com.google.android.gms:play-services-ads-identifier:17.0.0" implementation "io.sentry:sentry-android:1.7.10" implementation "com.leanplum:leanplum-core:5.2.3" implementation "com.leanplum:leanplum-fcm:5.2.3" implementation "androidx.biometric:biometric:1.0.1" // For the initial release of Glean 19, we require consumer applications to // depend on a separate library for unit tests. This will be removed in future releases. // testImplementation "org.mozilla.telemetry:glean-forUnitTests:${project.ext.glean_version}" implementation"com.adjust.sdk:adjust-android:4.18.3" } ``` 下载了Mozilla的fenix的工程,然后自己新建了一个项目,但是没有办法生成APK,build的时候出现NullPointerException during IR Conversion,求各位大佬帮忙看看什么问题,谢谢

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐