android - 如何在 Release模式下检索 firebase 存储图像?

标签 android firebase firebase-realtime-database firebase-storage

我使用以下代码通过 Firebase 数据库Firebase 存储 中检索图像:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        firebaseDatabase = FirebaseDatabase.getInstance();
        databaseReference = firebaseDatabase.getReference("images");
    }

    @Override
    public void onStart()
    {
        super.onStart();

        ValueEventListener listener = new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot)
            {
                for (DataSnapshot singleImage: dataSnapshot.getChildren())
                {
                    SharableImageClass sharableImage = singleImage.getValue(SharableImageClass.class);
                    imagesList.add(sharableImage.getSharableImage());
                }
                ImagesAdapter addapter = new ImagesAdapter(getActivity(), imagesList);
                imagesRecyclerView.setAdapter(addapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError)
            {
                Toast.makeText(getActivity(), "Error.. Cannot connect to Internet", Toast.LENGTH_SHORT).show();
            }
        };
        databaseReference.addValueEventListener(listener);
     }

这是 SharableImageClass.class:

    public class SharableImageClass
    {
        public String sharableImage;

        public SharableImageClass() {
        }

        public SharableImageClass(String sharableImage) {
            this.sharableImage = sharableImage;
        }

        public String getSharableImage() {
             return sharableImage;
        }

        public void setSharableImage(String sharableImage) {
            this.sharableImage = sharableImage;
        }
    }

这是 ImagesAdapter 的一部分,我使用 Picasso 在 ImageView 中显示图像:

    @Override
    public void onBindViewHolder(@NonNull ImagesViewHolder holder, int position)
    {
        Picasso.get()
            .load(imagesList.get(position).toString())
            .fit()
            .into(holder.imagesImageView);
     }

当我在调试 模式下运行此代码时,一切正常。但是,当我创建一个签名的 apk 并运行该应用程序时,它显示以下异常:

No setter/field for sharableImage found on class com.ksdfunapps.ksdstickersforchat.a

代码有什么问题?这是 Firebase 数据库的结构:

enter image description here

最佳答案

在 proguard 文件中添加 proguard 规则而不是构建你签名的 APK

  # Add this global rule
-keepattributes Signature

# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models. Modify to fit the structure
# of your app.
-keepclassmembers class com.yourcompany.models.** {
  *;
}

有关更多说明,请参阅此 link

关于android - 如何在 Release模式下检索 firebase 存储图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719548/

相关文章:

firebase - 如何让管理员批准新用户 firebase auth flutter?

firebase - 使用 Cloud Functions for Firebase 获取匿名用户

安卓工作室 : "A fatal exception has occured" after importing android-samples

Android AccountManager authToken 和 OAuth

android - facebook 分享图像 Url 以及 android 中的链接

Android Studio Logcat 搜索

javascript - 在 Firebase 的不同节点中写入多个对象

android - Firebase 实例 ID : deprecation of getId() in 21. 0.0

firebase - 如何只允许一个管理员用户编写 Firebase 数据库?

android - 火力地堡 : How to put the currently returned node's key into a POJO as a field