Android assets 的大坑!

2019-05-16 19:30:35 +08:00
 gramyang

app 用 netty 进行网络请求,传输数据用 SSL 加密,nettysdk 初始化时需要读入 assets 里的 jks 文件。

结果发现打开 assets 目录只能在 Activity 里!在 Application 里不行,我 tm。。。

有什么别的解决方案吗?

7172 次点击
所在节点    Android
34 条回复
kwanzaa
2019-05-17 08:28:07 +08:00
你们这么喜欢在 Application.onCreate 里面办事嘛。。。
MoHen9
2019-05-17 09:23:22 +08:00
@gramyang 可以读取,不管是 assets 还是 raw,使用 getAssets().open(“ xxx.jks ”)方法试试,还有,为什么用 Netty 呢?
cysionliu
2019-05-17 09:23:45 +08:00
....怀疑了一下咋会不行呢,花点时间敲个例子,说明 context 直接 getAssets 就可以,难道还有版本问题??

assets 里有个 hello.txt ,里面有行文字:hello asset

代码:

public class MyApp extends Application {

@Override
public void onCreate() {
super.onCreate();
test();
}

private void test() {
Log.e("flag--", "run(MyApp.java)---->>" + Thread.currentThread().getName());
try {
InputStream open = getAssets().open("hello.txt");
InputStreamReader reader = new InputStreamReader(open);
BufferedReader bufferedReader = new BufferedReader(reader);
Log.e("flag--", "run(MyApp.java)---->>" + bufferedReader.readLine());
} catch (IOException aE) {
aE.printStackTrace();
}
}
}


logcat:

2019-05-17 09:19:54.497 30636-30636/com.haibin.calendarviewproject E/flag--: run(MyApp.java)---->>main
2019-05-17 09:19:54.498 30636-30636/com.haibin.calendarviewproject E/flag--: run(MyApp.java)---->>hello asset
olbb
2019-05-17 09:43:11 +08:00
试了下可以读啊 不知道楼主为啥读不了
kile
2019-05-17 10:02:39 +08:00
你为什么读不了??

完全不符合多年经验...
还跑去验证了下
luwies
2019-05-17 10:10:04 +08:00
完全是可以读的
bkmi
2019-05-17 10:10:29 +08:00
别到处甩锅了,贴出你的代码来让大伙瞧瞧
gramyang
2019-05-17 10:27:40 +08:00
@cysionliu 我也按照你的方法试了一下,在一个空白的 app 里面试了一下,确实可以读。但是我现在的 app 不能读。我这边有一个情况,我之前设定过 multiDexEnabled,最小版本是 21,然后又把 multiDexEnabled 取消了,但是又不提示方法是超过 64k 了。
会不会是这个原因呢?
laoyur
2019-05-17 10:52:17 +08:00
> 留言说可以把 jks 文件持久化成字符串嵌入代码的方案行不通。用 base64 打出来的全是 A,用 String()打出来的是空白。

???
nicevar
2019-05-17 11:04:23 +08:00
楼主是个大坑,你们都听他瞎扯蛋。。。
nicevar
2019-05-17 11:10:33 +08:00
我猜测一下可能性,楼主可能启动了一个 remote 的 service,跨进程了,由于知识不足找不到问题所在
janus77
2019-05-17 11:19:45 +08:00
用 raw 啊 别用 assets
rigortek
2019-05-17 12:40:38 +08:00
show me you code
别在这瞎聊,让大家猜来猜去
hhhsuan
2019-05-17 12:46:39 +08:00
明明可以读,我一直都是这样做的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/564828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX