一般情况下,将开发过程的图片资源放置在drawable中,打包成apk后是可以被获取到资源图片等。但是许多游戏中的图片是获取不到的,当然肯定有方式可以保护这些资源的。求助!
希望能给个方法。

解决方案 »

  1.   

    图片加密,用的时候读出来恢复
    剩下的就是加密算法的问题了
    可以直接用XOR,这个最简单,或在特定的地方加入垃圾数据。
      

  2.   


    总用方式可以将资源隐藏了,用buffer的方式或许也可以。
    我看过微云的游戏引擎(好像是微云),好像是将图片打包成.lpk,然后就看不到了啊
      

  3.   

    最简单的一个办法就是,先将图片资源都放在assets目录下,程序第一次启动时,通过流方式将这些图片资源都转移到程序的私有目录下(./data/data/<package name>/files/)路径下,该路径是私有的然后再把assets目录下的所有文件都删掉这样以后直接从私有目录中读文件就行了以上做法在技术上稍微有点复杂,而且不能防止已经Root的机器访问,只不过它做起来稍微简单点,对已赶时间的人来说希望对你有用
      

  4.   

    这样会占据内存的吧,而且这样一点用处都没有吧,assets的文件一样在apk中可以看到。
    我要的是apk文件中无法看到资源
      

  5.   


    其实LZ可以按照楼上所说的那样,给文件加密;具体是说,将你程序中所用到的外部文件,同意存放至一个目录中或其子目录中然后通过I/O为每个文件的头和尾添加额外的字节数,使其文件被加密之后,文件的命名可以不按照常理,比如正常的图片应该是:xxx.jpg OR xxx.png等,带着后缀的命名,你可以为每个被加密后的文件计算其MD5,然后就用这个MD5命名该文件,没有后缀,没有标示,它就是一个文件存在那这样的文件放到那,估计它谁也不可能打开,即使它拿到文件流,也无用,因为你加密过了;至于你的程序怎么打开这些文件,我就不用多说了吧,相信LZ肯定知道不知道这种办法是否符合你的要求
      

  6.   

    把图片转换为Base64字符串,再用sqlite数据库保存,字符串可以适当加密。使用图片要把Base64字符串转换为图片。
      

  7.   

    1.在pc上,将图片文件进行处理,比如加密
    2.把处理后的资源放入 res\raw 目录里
    3.需要加载图片时,从 raw 里读取资源,进行加密的反向处理,转换成图片
      

  8.   

    虽然没有得到较好的答案,还是结贴了吧!博客文章讲述一些探索的方法:http://blog.csdn.net/you_and_me12/article/details/7959349还希望有大神指教一下THX!!!