小编El *_*uli的帖子

非常非常慢的Gradle构建在Android Studio上

这是我的配置:

MBP 2015,8GB RAM,SSD

Android Studio 2.2.3

平均而言,构建持续7/8分钟,有时为10/12分钟

我已经尝试了一切,我可以在网上找到,但似乎没有工作:

---自定义VM选项:

-Xms1024m
-Xmx8192m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=440m
-XX:+UseCompressedOops
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)

---按需编译/配置

---并行编译/编译模块

--- Gradle /离线工作

--- gradle.properties文件:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx8192m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -noverify
org.gradle.parallel=true
org.gradle.configureondemand=true
android.enableBuildCache=true
Run Code Online (Sandbox Code Playgroud)

有没有人知道发生了什么,因为它只是荒谬

更新:

从那以后我切换到一个16GB的内存,显然有一些改进,我的印象是它不到一分钟左右,但需要3-4分钟,这仍然是不可接受的:这里是Gradle的一部分我发现的日志耗时太长:

git log --pretty=format:'%h %s'
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preAlphaBuild UP-TO-DATE
:app:preBirdsBuild UP-TO-DATE
:app:preKfgBuild UP-TO-DATE
:app:prePenBuild UP-TO-DATE
:app:prePrelaunchBuild UP-TO-DATE
:app:prePtr1Build UP-TO-DATE
:app:prePtr3Build UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:prepareCnPedantSweetalertLibrary13Library
:app:prepareComAndroidSupportAnimatedVectorDrawable2511Library
:app:prepareComAndroidSupportAppcompatV72511Library
:app:prepareComAndroidSupportCardviewV72511Library
:app:prepareComAndroidSupportDesign2511Library
:app:prepareComAndroidSupportMultidex101Library
:app:prepareComAndroidSupportRecyclerviewV72511Library
:app:prepareComAndroidSupportSupportCompat2511Library
:app:prepareComAndroidSupportSupportCoreUi2511Library
:app:prepareComAndroidSupportSupportCoreUtils2511Library
:app:prepareComAndroidSupportSupportFragment2511Library
:app:prepareComAndroidSupportSupportMediaCompat2511Library
:app:prepareComAndroidSupportSupportV132511Library
:app:prepareComAndroidSupportSupportV42511Library
:app:prepareComAndroidSupportSupportVectorDrawable2511Library
:app:prepareComAndroidSupportTransition2511Library
:app:prepareComCrashlyticsSdkAndroidAnswers1310Library
:app:prepareComCrashlyticsSdkAndroidBeta122Library
:app:prepareComCrashlyticsSdkAndroidCrashlytics265Library …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

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

firebaseAppDistribution 与 Github Actions 抛出错误“缺少应用程序 ID”,即使设置了 google 服务插件

我正在使用 github actions 实现 android 的应用程序分发,一切似乎都很好,但我收到错误:

* What went wrong:
Execution failed for task ':app:appDistributionUploadQaRelease'.
> Missing app id. Please check that it was passed in and try again
Run Code Online (Sandbox Code Playgroud)

我正在使用 google play 插件,因此它应该自动获取应用程序 ID。

https://firebase.google.com/docs/app-distribution/android/distribute-gradle#step_3_configure_your_distribution_properties

appId -- 您应用的 Firebase 应用 ID。仅当您未安装 Google Services Gradle 插件时才需要。

google-services.json我的应用程序模块中有文件,

root build.gradle

classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.0.0' 
Run Code Online (Sandbox Code Playgroud)

appbuild.gradle:

plugins {
....
    id 'com.google.gms.google-services'
    id 'com.google.firebase.appdistribution'
}
Run Code Online (Sandbox Code Playgroud)

味道qa

productFlavors {
   ....
    qa {
        applicationId "custom.package.for.qa"
        ....
        firebaseAppDistribution …
Run Code Online (Sandbox Code Playgroud)

android gradle firebase github-actions firebase-app-distribution

12
推荐指数
3
解决办法
1327
查看次数

Android Room 具有 kotlin 价值等级?

我正在尝试使用具有值类的房间实体:

@JvmInline
value class UserToken(val token: String)
Run Code Online (Sandbox Code Playgroud)

和实体:

@Entity(tableName = TABLE_AUTH_TOKEN)
data class TokenEntity(
  @PrimaryKey val id: Int = 0,
  val token: UserToken
)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
public final class TokenEntity {
             ^
Run Code Online (Sandbox Code Playgroud)

是否可以使用经济舱的房间?我找不到任何关于此的信息。谢谢

android kotlin value-class android-room

11
推荐指数
2
解决办法
1535
查看次数

对话框内的android片段

我有一个问题,我需要fragment在一个android.app.Dialog

这是xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/marchecharts"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我想要的是marchecharts用我的片段替换,任何人都可以帮忙

谢谢

Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.marche_charts_parent);


//this is the part I think I need
Fragment fragment = new MarcheChartsFragment();
FragmentTransaction ft = ((FragmentActivity) dialog.getOwnerActivity()).getFragmentManager().beginTransaction();
ft.replace(R.id.marchecharts, fragment);  
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();

dialog.setCanceledOnTouchOutside(true);
dialog.getWindow().setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
dialog.show();
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

Android 导航组件片段过渡具有白色背景

我正在使用 Jetpack Navigation 库并且在片段转换方面遇到问题,无论是淡入淡出还是幻灯片动画,它始终具有白色背景而不是前一个屏幕内容。

片段 A -> 片段 B,当动画正在运行而不是将背景视为片段 A 时,它是白色背景。

导航

  <fragment
      android:id="@+id/nav_page"
      android:name="my.fragmenta"
      tools:layout="@layout/fragment_a">

    <action
        android:id="@+id/action_to_b"
        app:destination="@id/nav_b"
        app:enterAnim="@anim/slide_in_up"
        app:popExitAnim="@anim/slide_out_down"/>
  </fragment>
Run Code Online (Sandbox Code Playgroud)

活动方式

  <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:statusBarColor">@color/statusBarColor</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

动画文件

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="100%p"
    android:toYDelta="0"
    android:duration="@android:integer/config_longAnimTime" />
Run Code Online (Sandbox Code Playgroud)

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="0"
    android:toYDelta="100%p"
    android:duration="@android:integer/config_longAnimTime" />
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何解决它?

android android-fragments android-navigation android-jetpack android-jetpack-navigation

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

Android Fragment Shared Elements无法使用"添加"

我一直试图让过渡动画与片段一起工作,我觉得很奇怪(或者我可能不理解正确的东西)是当replace它使用它按预期工作时,但在使用add它时不...

作品:

EndFragment fragment = new EndFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
        .addToBackStack(null)
        .addSharedElement(imageView, imageTransitionName)
        .addSharedElement(textView, textTransitionName)
        .replace(R.id.container, fragment)
        .commit();
Run Code Online (Sandbox Code Playgroud)

不工作:

EndFragment fragment = new EndFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
        .addToBackStack(null)
        .addSharedElement(imageView, imageTransitionName)
        .addSharedElement(textView, textTransitionName)
        .add(R.id.container, fragment)
        .commit();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

animation android

6
推荐指数
0
解决办法
518
查看次数

Android 无法解析迄今为止的字符串

我有这个字符串

Wed, 08 Jan 2014 9:30 am WET
Run Code Online (Sandbox Code Playgroud)

并且需要解析为 Date 对象,我尝试了很多掩码,但没有成功,这是我尝试的最后一件事,我认为它可以使用,但没有成功

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm aaa z", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

谢谢

堆栈跟踪

01-08 14:25:25.906: W/System.err(13288): java.text.ParseException: Unparseable date: "Wed, 08 Jan 2014 11:59 am WET"
01-08 14:25:25.914: W/System.err(13288):    at java.text.DateFormat.parse(DateFormat.java:626)
Run Code Online (Sandbox Code Playgroud)

我最终用这个代替

SimpleDateFormat dateFormat     = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm aaa", Locale.ENGLISH);
Date date = dateFormat.parse(dateString.substring(0, dateString.length() - 4));
Run Code Online (Sandbox Code Playgroud)

WET部分是原因,所以我删除了它,它不会给出确切的时间,但我只需要日期和月份,

java android date

4
推荐指数
1
解决办法
940
查看次数

Android Crashlytics 停留在“构建并运行您的应用”

我完全遵循了教程(https://firebase.google.com/docs/crashlytics/get-started?authuser=1&platform=android#android),但仍然无法在 firebase Crashlytics 上看到我的应用程序。这是我的配置:

在根build.gradle 中

  dependencies {
    classpath 'com.android.tools.build:gradle:3.4.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.2.0'
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    classpath 'io.fabric.tools:gradle:1.31.0'
  }
Run Code Online (Sandbox Code Playgroud)

在应用程序build.gradle 中

...
apply plugin: "io.fabric"

...
//Firebase
  implementation 'com.google.firebase:firebase-core:17.0.1'
  implementation 'com.google.firebase:firebase-config:18.0.0'
  implementation 'com.google.firebase:firebase-analytics:17.0.1'
  implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
Run Code Online (Sandbox Code Playgroud)

在申请中

Fabric.with(this, Crashlytics());
Run Code Online (Sandbox Code Playgroud)

我正在调试时构建并运行该应用程序,但在我看到的日志中什么也没发生

I/CrashlyticsInitProvider: CrashlyticsInitProvider 跳过初始化

I/CrashlyticsCore:初始化 Crashlytics Core 2.7.0.33

我会错过什么?

android crashlytics-android

4
推荐指数
1
解决办法
3414
查看次数

RSA加密(模数/指数)给出"消息大于模数"

我试图使用RSA加密消息,这是我的代码:

byte[] message = new byte[] { (byte) 0xbe, (byte) 0xef, (byte) 0xef };
Cipher cipher = Cipher.getInstance("RSA");

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

String mod = "B390F7412F2554387597814A25BC11BFFD95DB2D1456F1B66CDF52BCC1D20C7FF24F3CCE7B2D66E143213F64247454782A377C79C74477A28AF6C317BE68BC6E8FF001D375F9363B5A7161C2DFBC2ED0850697A54421552C6288996AC61AF5A9F7DE218ABBC75A145F891266615EB81D11A22B7260F7608083B373BA4BC0756B";
String exp = "010001";

RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(Hex.fromString(mod)), new BigInteger(Hex.fromString(exp)));
RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

byte[] cipherText = cipher.doFinal(message);
System.out.println("cipher: " + new String(cipherText));
Run Code Online (Sandbox Code Playgroud)

我总是得到错误:

javax.crypto.BadPaddingException: Message is larger than modulus
    at sun.security.rsa.RSACore.parseMsg(Unknown Source)
    at sun.security.rsa.RSACore.crypt(Unknown Source)
    at sun.security.rsa.RSACore.rsa(Unknown Source)
    at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:352)
    at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:382)
    at javax.crypto.Cipher.doFinal(Cipher.java:2087)
Run Code Online (Sandbox Code Playgroud)

我也尝试过BouncyCastle,但我仍然遇到同样的错误.

注意 …

java encryption cryptography rsa bouncycastle

3
推荐指数
1
解决办法
4863
查看次数

Android,片段状态在FragmentTransaction.add之后

我有两个片段,

fragmentA在前景中

现在我用FragmentTransaction.add(id, Fagment),(not .replace)显示fragmentB 所以fragmentA仍然存活,其上有fragmentB,

现在我使用back按钮,这里片段B被破坏,片段A可见,

在这一刻,我怎么会知道fragmentA又回到了"前台",即onResume,

请注意,onResume没有被调用,FragmentTransaction.add(id, Fagment)换句话说,onPause当显示fragmentB时,fragmentA不会被调用

非常感谢您的帮助

android android-fragments

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

使用GCM的Android聊天应用

好的,我们都知道GCM的功能,但是我的问题是:GCM在处理聊天应用程序方面是否可靠?我的意思是它可以处理(快速)向数百人发送消息的问题吗?如果没有,最好的方法是什么?

我已经阅读了很多有关聊天应用程序的内容,发现必须使用XMPP,但我所能找到的就是与我的服务器不集成的API,例如Parse(我们必须使用其后端进行注册和登录,不是很方便)

谢谢你们

编辑:带有XMPP的Google Cloud Messaging GCM CCS如何

android chat google-cloud-messaging

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

android listview给出了nullpointerexception

我有这个ListView,当我启动应用程序时,它给出一个空指针异常,但如果视图是GONE,它不会给出任何错误,

lVers = (ListView) view.findViewById(R.id.lVers);
Run Code Online (Sandbox Code Playgroud)

用适配器

RechercheAdapter adapter2 = new RechercheAdapter(getActivity(), R.layout.elem_recherche, listPaysVers);
lVers.setAdapter(adapter2);
Run Code Online (Sandbox Code Playgroud)

这是适配器类

public class RechercheAdapter extends ArrayAdapter<Pays> {

        Context context;
        ArrayList<Pays> data;

        public RechercheAdapter(Context context, int textViewResourceId, ArrayList<Pays> d) {
            super(context, textViewResourceId, d);
            this.data = d;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.size();
        }

        @Override
        public Pays getItem(int position) {
            // TODO Auto-generated method stub
            return data.get(position);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Pays …
Run Code Online (Sandbox Code Playgroud)

android android-listview

0
推荐指数
1
解决办法
2261
查看次数