如何在rooted模拟器上创建的Android应用程序中运行终端命令?

时间:2016-04-20 11:30:58

标签: java android

我目前正在创建一个运行某些终端命令的Android应用程序。我正在使用genymotion Nexus 5(4.4.4)模拟器,它默认带有root。但是,为了测试一些常规命令,我执行了以下操作:

{{#section 'classes'}}has-navigation page-dashboard{{/section}}
{{#section 'body-classes'}}-fluid{{/section}}
 <div class="row" id="invoicer">
  <div class="col-xs-12 col-md-6">
   Fill your details and get live preview in the right side
     <form class="" action="/invoices" method="post" enctype="multipart/form-data">
  <div class="">
    <div class="invoiceform-logo-container">
      <input type="file" name="profilelogo" id="fileinput" accept="image/*" v-on:change="updateImage()">
      <img v-bind:src="logo" alt="" />
    </div>
    <div class="invoiceform-number"></div>
    <div class="invoiceform-currency"></div>
  </div>

  <div class="divider"></div>
  <div class="">
    Your Name / Company Name
    <textarea name="company_name" rows="8" cols="40" v-model="from"></textarea>
    Client Name / Company Name
    <textarea name="client_name" rows="8" cols="40" v-model="to"></textarea>

    \{{date_title}}
    <input type="date" name="start_date" v-model="date">

    \{{due_date_title}}
    <input type="date" name="end_date" v-model="due_date" v-bind:min="date">

    \{{balance_title}} \{{balance}}
    <div class="input-group">
      <span class="input-group-addon">$</span>
      <input name="end_date" type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
    </div>
  </div>

  <div class="invoiceform-itemlist" v-on:focusout="checkToRemove()">
    <div class="">
      \{{item_header}}
      \{{quantity_header}}
      \{{unit_cost_header}}
      \{{amount_header}}
    </div>
    <div class="" v-for="item in items">
      <input type="text" name="items[1][item_name]" v-model="item.head">
      <input type="number" name="items[1][item_quantity]" v-model="item.quantity" min="0" v-on:blur="updateAmount($index)">
      <input type="number" name="items[1][item_rate]" v-model="item.rate" min="0" v-on:blur="updateAmount($index)">
      <input type="number" name="items[1][item_amount]" v-model="item.amount">
    </div>
    <button type="button" name="button">Add Item</button>
  </div>

  <div class="divider"></div>
  <div class="">
    \{{subtotal_title}} \{{subtotal}}
    \{{tax_title}}

    <div class="input-group">
      <input type="text" class="form-control" aria-label="Text input with dropdown button" v-model="tax">
      <span class="input-group-addon">
        <input type="radio" name="" aria-label="Checkbox for following text input"> %
      </span>
      <span class="input-group-addon">
        <input type="radio" name="" aria-label="Checkbox for following text input"> F
      </span>
    </div>

    <div id="discount" v-if="fields.discount">
      Discount <input type="number" name="" v-model="discounts">
    </div>
    <div id="shipping" v-if="fields.shipping">
      Shipping <input type="number" name="shipping" v-model="shipping">
    </div>
    <div class="btn-group" data-toggle="buttons">
      <label class="btn btn-primary">
        <input type="checkbox" name="discount" v-model="fields.discount"> \{{discounts_title}}
      </label>
      <label class="btn btn-primary">
        <input type="checkbox" name="shipping" v-model="fields.shipping"> \{{shipping_title}}
      </label>

    </div>
  </div>

  <div class="divider"></div>
  <div class="">
    Total <input type="number" name="name" v-model="total" min="0">
    \{{amount_paid_title}} <input type="number" name="total" v-model="amount_paid" min="0" v-bind:max="total">
  </div>

  <div class="divider"></div>
  <div class="">
    \{{notes_title}}
    <input type="text" name="name" v-model="notes">
    \{{payment_terms_title}}
    <input type="text" name="name" v-model="terms">
    <button type="submit" name="button">Save Now</button>
    <button type="button" name="button">Download PDF</button>
  </div>
</form>

     </div>
     <div class="col-xs-12 col-md-6 hidden-sm-down"></div>
   </div>
 {{#section 'script'}}
  window.invoice = {{{json defaultInvoice}}}
  console.log({{{json defaultInvoice}}})
 {{/section}}

当&#34; su&#34;我从一个名为SuperUser的应用程序中获取一条消息,说我已获得root权限。但是没有其他命令被执行。没有tmp1 direcotry,我无法将我手动添加到模拟器的new4.txt文件拉到我的文档文件夹。

我在路径字符串中遗漏了什么?

1 个答案:

答案 0 :(得分:0)

  

当“su”执行时,我从名为SuperUser的应用程序中收到消息   说我已获得root权限

所以我猜你正在手机上运行代码。在这种情况下,您还在手机上运行第三个命令(adb pull),而不是要在主机上运行。

作为this answer points out,您在不同的子shell中运行连续命令。因此,您的第一个su在第二个exec的上下文中无关紧要。要使用su执行命令,请参阅manual page of su。一个简单的例子是:

su - -c "whoami"