That code contains at least one bug.
This loop isn't correct:
> while (bis.read(temp) > 0) {
> out.write(temp);
> }
bis.read returns the number of bytes that was read, that number can be
larger than 0 but still less than temp.length. You should do something
like this instead:
int len = 0;
while (( len = bis.read(temp)) > 0) {
out.write(temp, 0, len);
}
Your file wile otherwise be corrupt.
On 4 Aug, 13:14, spark <[email protected]> wrote:
> yes,I have already did this .
>
> private void loadLibraryFromAssets() {
> AssetManager am = getAssets();
> String path = null;
> try {
> InputStream in;
> in = am.open("lib/libjni_xxx.so");
>
> BufferedInputStream bis = new BufferedInputStream(in);
>
> path = Enviroment.getAppPath(this) + "libjni_xxx.so";
>
> File file = new File(path);
>
> if (!file.exists()) {
> file.createNewFile();
> }
>
> FileOutputStream out = new FileOutputStream(path);
> byte[] temp = new byte[2048];
> while (bis.read(temp) > 0) {
> out.write(temp);
> }
> bis.close();
> out.close();
>
> //am.close(); can't be closed
> } catch (IOException e) {
> e.printStackTrace();
> Log.e(TAG,"load Library From Assets error: " +
> e.getMessage());
> }
>
> try {
> System.load(path);
> } catch (UnsatisfiedLinkError e) {
> String errorMsg = e.getMessage();
> Log.e(TAG,"System.load error: " + errorMsg);
> } catch (SecurityException e) {
> String errorMsg = e.getMessage();
> Log.e(TAG,"System.load error: " + errorMsg);
> }
>
> }
>
> On 8月4日, 下午3时03分, Kaj Bjurman <[email protected]> wrote:
>
>
>
> > I'm not sure about this, since I haven't done it myself, but I've
> > heard that some people place the libraries under res/raw, and then
> > they copy it to /data/data/your-package-name when it's first started.
>
> > On 4 Aug, 04:53, "[email protected]" <[email protected]>
> > wrote:
>
> > > I have a .so library ,which I had put in directory "assets" . But
> > > how can i load it ?
>
> > > I can't use System.loadLibrary or System.load because i can't get the
> > > path. thanks
>
> > > in advance for your answers.- 隐藏被引用文字 -
>
> > - 显示引用的文字 -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---