标签: android-assets

尝试访问String资源的NullPointerException

我有以下/res/values/uris.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="bladder">blahblah</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

我在代码中访问它:

private String bladderUrl= getString(R.string.bladder);
Run Code Online (Sandbox Code Playgroud)

但它返回null.我不知道为什么?

java xml android nullpointerexception android-assets

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

如何在Assets中使用Android中预加载的SQLite数据库

我想preloaded database在我的应用程序中使用意味着在安装apk时尝试获取数据库,因此可以使用已经保存的数据.我复制 assets文件夹中的"ingredients.db"文件.并使用以下代码,但这会收到错误"从资源文件复制数据库的问题"

我怎么解决这个问题?请建议我尽可能的方式

我的数据库帮助程序类是这样的

class IngredientHelper extends SQLiteOpenHelper {
        private static final String DATABASE_PATH = "/data/data/com.example.preloadeddatabase/databases/";
        private static final String DATABASE_NAME = "ingredients.db";

        private static final String TABLE_NAME = "Ingredients";
        private static final String COLUMN_ID = "_id";
        private static final String COLUMN_TITLE = "ingredient_name";

        private static final int SCHEMA_VERSION = 1;

        public SQLiteDatabase dbSqlite;
        private final Context myContext;

        public IngredientHelper(Context context) {
            super(context, DATABASE_NAME, null, SCHEMA_VERSION);
            this.myContext = context;

        }

        @Override
        public void onCreate(SQLiteDatabase …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-assets

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

Android NDK - 在本机代码中使用AssetManager

我需要在C/C++代码中处理我的资源文件夹中的资产.像这样缓存指向AAssetManager的指针是否安全......:

AAssetManager* assetMgr = NULL; 

void Java_com_example_createAssetManager(JNIEnv* env, jclass clazz, jobject assetManager)
{
  AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
  assert(NULL != mgr);
  assetMgr = mgr;    
}
Run Code Online (Sandbox Code Playgroud)

......然后在我需要的时候使用它?createAssetManager是从主要Activity(UI线程)的Java onCreate方法调用的,但C/C++中的用法是在GLSurfaceView实现中从本机方法本地处理渲染和游戏滴答时.

1)assetMgr指针会指向整个应用程序生命周期内的有效对象吗?是否足够创建它也像Java端的静态变量(在Activity类中)所以垃圾收集器不会销毁它?

2)是否有一些危险我会遇到线程的一些问题?

谢谢Tom Tom

android thread-safety android-ndk android-assets

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

Android Home As Up指标文件名或位置

我在哪里可以找到Android"向上"按钮,以便我可以自定义它?或者它的文件名是什么,以便我可以快速搜索到在sdk目录中找到它?

android android-assets android-resources android-drawable

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

动态加载资源文件夹中的所有图像

我正在构建一个当前从drawable文件夹中读取图像的应用程序.由于我不能在drawable中有子文件夹,我必须在assets文件夹中创建子文件夹并从那里加载图像.有什么方法可以创建一个ListArrayList与资产子文件夹中的所有图像?

我的代码是这样的:

public class ImageAdapter extends BaseAdapter {

    private Context mContext;

    // Keep all Images in array
    public Integer[] mThumbIds = {
            R.drawable.pic_2,
            R.drawable.pic_3, R.drawable.pic_4,
            R.drawable.pic_5, R.drawable.pic_6,
            R.drawable.pic_7, R.drawable.pic_8,
            R.drawable.pic_9, R.drawable.pic_10,
            R.drawable.pic_11, R.drawable.pic_12,
            R.drawable.pic_13, R.drawable.pic_14,
            R.drawable.pic_15
    };

    // Constructor
    public ImageAdapter(Context c){
        mContext = c;
    }

    @Override
    public int getCount() {
        return mThumbIds.length;
    }

    @Override
    public Object getItem(int position) {
        return mThumbIds[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int …
Run Code Online (Sandbox Code Playgroud)

android arraylist android-assets

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

在Android上保持TensorFlow模型加密

我搜索了解是否有一种技术可以在Android应用程序中保持训练有素的张量流模型(.pb文件)安全,但没有找到任何有用的东西.我发布了一个包含张量流模型的应用程序,我在训练集上构建了该模型.当我发布应用程序时,任何人都可以访问该模型并将其用于自己的应用程序.我想知道是否有办法保护我放在Android应用程序资产文件夹中的张量流模型?

这是我在Android中加载模型的方式:

TensorFlowInferenceInterface tf = new TensorFlowInferenceInterface();    
tf.initializeTensorFlow(context.getAssets(), "file:///android_asset/model.pb");
Run Code Online (Sandbox Code Playgroud)

我想在应用程序中嵌入加密的模型并在运行时解密它,但如果有人调试应用程序,它可以获取密码并解密它.而且,TensorFlowInferenceInterface类中只有一个initizeTensorFlow方法的实现只接受(AssetManager assetManager,String model).可以写一个接受加密的一个,但它需要对Tensorflow C++库进行一些修改.我想知道是否有更可靠的解决方案.请问有什么建议吗?

encryption obfuscation android android-assets tensorflow

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

Android库中的getAssets()方法不起作用

作为 Android 编程的新手,我已将四个文件附加到我的库的资产文件夹中。
您可以看到附图。

图书馆

我想使用下面的代码通过 Android 库访问这些文件(如果我不在 Android 库中使用此代码,则当我在 MainActivity 中使用它时,它运行时不会出现错误)。

public void copy_weights() {
    try {
        AssetManager assetFiles = getAssets();
        String[] files = assetFiles.list("");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();  //catch the error in this line
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但这段代码给了我错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.AssetManager android.Context.getAssets' on a null object refrence

我尝试了其他方法,例如直接访问home:///android_asset/7.cfg,但也无法访问文件。

编辑1

我像下面这样copy_weights()调用mainActivity

public class MainActivity extends AppCompatActivity {
@Override …
Run Code Online (Sandbox Code Playgroud)

java android android-assets

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

如何测试和部署具有超过 150 MB 资产的 Flutter 应用程序?

我的 Flutter 应用程序中的资产总共大约 300 MB(大量媒体文件,这是应用程序的本质,不能合理地减少)。

据我了解,有两种方法可以将应用上传到 Play 商店:

  1. 包含所有平台二进制文件的 APK 文件(旧版)。看起来APK 限制为 100 MB
  2. 一个 App Bundle(新),它让 Play 商店找出要在何处部署哪些位。App Bundle对用户实际下载的内容有 150 MB 的限制

对于 APK,解决此限制的方法是APK 扩展文件(通常为“obb”文件),最大可达 2 GB。我可以尝试让它与 Flutter 一起使用,但 APK 交付方法有点过时,并且还有其他缺点,例如使用未使用的二进制文件增加安装大小。所以我宁愿不使用这种方法。

对于 App Bundles,类似的机制以动态资产交付的形式存在。有三个选项,具体取决于用户何时下载资产包:安装期间、安装后或按需。该install-time选项听起来最透明和简单,并且限制为 1 GB,因此它非常适合我的用例。

遗憾的是,Flutter尚不支持动态资产交付。幸运的是,在使用install-time交付时,看起来这些资产可以通过AssetManager系统提供的常规类获得。一开始我以为 Flutter 可能会在不需要编写任何 Java/Kotlin 代码的情况下获取它们,但是没有,它使用自己的资产机制,并且除了一个访问AssetManager. 因此,我必须自己做一些跑腿工作才能与 Java 世界进行交互,但这听起来可行。

为了首先创建包,我遵循了以下步骤。 …

android assets android-assets google-play flutter

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

android应用程序中的资产文件夹(eclipse)

我曾经在Android应用程序中搜索创建assets文件夹,我尝试过的解决方案 <App Name>/src/assets/fonts/

但是当我尝试在我的应用程序中使用ttf文件时,我有一个错误:

代码 :

mFace = Typeface.createFromAsset(mContext.getAssets(),"fonts/fontType.ttf");
Run Code Online (Sandbox Code Playgroud)

和错误:

无法制作原生字体

我不知道资产文件夹是否在好地方.

android android-assets

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

Android资产 - FileNotFound

我在这堂课的一个片段里面:

public class NetworksList extends Fragment{
Run Code Online (Sandbox Code Playgroud)

在我的onCreate函数里面我也有这段代码:

        XmlPullParserFactory pullParserFactory;
        try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();

            InputStream in_s = getActivity().getApplicationContext().getAssets().open("temp.xml");
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in_s, null);
            Toast.makeText(getActivity().getApplicationContext(), "size: ", Toast.LENGTH_LONG).show();
            parseXML(parser);

        } catch (XmlPullParserException e) {

            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

希望我尝试用来打开XML文件.我在资源文件夹中有我的XML文件,但我得到:

05-08 18:03:11.034  24645-24645/pt.smartgeo.aees W/System.err? java.io.FileNotFoundException: temp.xml
05-08 18:03:11.034  24645-24645/pt.smartgeo.aees W/System.err? at android.content.res.AssetManager.openAsset(Native Method)
05-08 18:03:11.034  24645-24645/pt.smartgeo.aees W/System.err? at android.content.res.AssetManager.open(AssetManager.java:316)
05-08 18:03:11.034  24645-24645/pt.smartgeo.aees W/System.err? at android.content.res.AssetManager.open(AssetManager.java:290)
05-08 18:03:11.034  24645-24645/pt.smartgeo.aees …
Run Code Online (Sandbox Code Playgroud)

xml android android-assets

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