มีหลายวิธีในการเรียกใช้ตัวจัดการ SDK:
SDK Manager.exe
ในรูทของ Android SDK
SDK Manager.exe
ในsdk\tools\lib
SDK ของ Android
Window -> Android SDK Manager
เมนูใน Eclipse
android.bat
ในsdk\tools
SDK ของ Android
ในกรณีของฉันดูเหมือนว่าจะandroid.bat
ล้มเหลวในบรรทัด:
for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
เท่าที่บรรทัดนั้นกำลังทำ ... ถ้าฉันเรียกใช้ด้วยตนเอง: "[path_to_java]java" -jar lib\archquery.jar
มันคืนค่าเรียบร้อยแล้ว: x86_64
แต่เมื่อไฟล์แบตช์รันคำสั่งเดียวกันฉันไม่รู้ว่าทำไม แต่ล้มเหลวด้วยข้อความแสดงข้อผิดพลาด:
Unable to access jarfile lib\archquery.jar
ดังนั้นตัวแปรจึงswt_path
ถูกตั้งค่าเป็นสตริงว่าง ทุกอย่างพังทลายลงมาจากที่นั่น
java_exe
แฟ้มชุดการตั้งค่าค่าที่ถูกต้องสำหรับตัวแปร คนอื่น ๆ มักรายงานว่านี่เป็นปัญหา แต่วิธีแก้ปัญหาเหล่านั้นไม่เกี่ยวข้องในกรณีของฉัน
ผู้คนได้แนะนำการใส่ความคิดเห็นในบรรทัดปัญหาโดยการเพิ่ม REM ไปที่จุดเริ่มต้นและเพิ่มบรรทัดเพื่อตั้งค่าswt_path
ตัวแปรด้วยตนเองซึ่งเป็นวิธีแก้ไขที่ถูกต้อง:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86
แต่ปัญหาที่สำคัญในกรณีของฉันคือมันเลือกโหลดไฟล์ jar จากlib\x86
หรือที่lib\x86_64
นี่ ในบางจุดสิ่งต่าง ๆ เริ่มสับสนระหว่างข้อผิดพลาดไฟล์ BAT, JDK 32 บิตและ Android SDK 64 บิต
ดังนั้นวิธีแก้ไขปัญหาในกรณีของฉันคือการ:
- ถอนการติดตั้ง Java ทุกเวอร์ชัน
- ติดตั้ง JDK
- คุณสามารถใช้ Android SDK แบบ 32 บิตและติดตั้ง JDK แบบ 32 บิต
- หรือใช้ Android SDK 64 บิตและติดตั้ง JDK 64 บิต
- แต่ "bitness" ของ JDK ควรตรงกับ Android SDK ดูเหมือนว่าหนึ่งใน 32- บิตหรือ 64- บิตจะทำงานบนคอมพิวเตอร์ 64 บิต AS LONG AS the JDK bitness ตรงกับ Android SDK bitness
แก้ไข "android.bat"
หากใช้ Android SDK / JDK แบบ 32 บิตให้ใช้lib\x86
:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86
หากใช้ Android SDK / JDK 64 บิตให้ใช้lib\x86_64
:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86_64
หลังจากทำสิ่งนี้ฉันสามารถรัน SDK Manager ได้สำเร็จโดยการเรียกใช้android.bat
หรือจากเมนู Eclipse (แต่ยังไม่ได้โดยการเรียกใช้SDK Manager.exe
ไฟล์ใดไฟล์หนึ่งโดยตรง)